<?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>47973</bug_id>
          
          <creation_ts>2010-10-20 00:31:29 -0700</creation_ts>
          <short_desc>Rename SVGAnimatedProperty* -&gt; DeprecatedSVGAnimatedProperty*</short_desc>
          <delta_ts>2010-10-20 14:41:13 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>47905</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>abarth</cc>
    
    <cc>caseq</cc>
    
    <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296672</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 00:31:29 -0700</bug_when>
    <thetext>To prepare fixing bug 47905, mark the existing animated property concept deprecated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296675</commentid>
    <comment_count>1</comment_count>
      <attachid>71259</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 00:39:17 -0700</bug_when>
    <thetext>Created attachment 71259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296693</commentid>
    <comment_count>2</comment_count>
      <attachid>71263</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 01:07:58 -0700</bug_when>
    <thetext>Created attachment 71263
Patch v2

Let&apos;s see if it applies this time *sigh*. I just reverted the SVGAnimatedPropertySynchronizer move, and started again by doing:
mkdir properties; svn add properties; svn mv SVGAnimatedPropertySynchronizer.h properties;

Not sure why it did not work before...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296698</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 01:33:20 -0700</bug_when>
    <thetext>Thanks. Landed in r70135.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296703</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 02:15:51 -0700</bug_when>
    <thetext>Landed qt/gtk/win build fix (missing svg/property include directory) in r70136.
Fix Qt/WebKit2 build in r70138.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296708</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 02:19:20 -0700</bug_when>
    <thetext>Fix efl build in r70139.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296715</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 02:44:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Fix efl build in r70139.
WebCore builds. Fix WebKit efl build in r70142.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296870</commentid>
    <comment_count>7</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-10-20 10:47:23 -0700</bug_when>
    <thetext>This apparently broke clobbered build on win due to 
DeprecatedSVGAnimatedProperty.h:25:#include &quot;SVGAnimatedPropertySynchronizer.h&quot;

The latter include moved under properties subdir, which is not copied to WebKitBuild/include/WebCore. You may want to update
WebKit/WebCore/WebCore.vcproj/copyForwardingHeaders.cmd 

The incremental build apparently works due to https://webkit.org/b/46638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296975</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 13:28:52 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This apparently broke clobbered build on win due to 
&gt; DeprecatedSVGAnimatedProperty.h:25:#include &quot;SVGAnimatedPropertySynchronizer.h&quot;
&gt; 
&gt; The latter include moved under properties subdir, which is not copied to WebKitBuild/include/WebCore. You may want to update
&gt; WebKit/WebCore/WebCore.vcproj/copyForwardingHeaders.cmd 
&gt; 
&gt; The incremental build apparently works due to https://webkit.org/b/46638

Thanks for the note, landed a fix in r70168.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297032</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-20 14:41:13 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70168 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
fast/backgrounds/repeat/negative-offset-repeat-transformed.html
fast/borders/border-image-rotate-transform.html
fast/borders/border-image-scale-transform.html
fast/transforms/scrollIntoView-transformed.html
transforms/2d/hindi-rotated.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71259</attachid>
            <date>2010-10-20 00:39:17 -0700</date>
            <delta_ts>2010-10-20 01:07:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>PrepareSVGLength.diff</filename>
            <type>text/plain</type>
            <size>104988</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDEzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMTAtMjAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHkqIC0+IERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFByb3BlcnR5KgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDc5NzMKKworICAgICAgICBQcmVwYXJlIGZpeGluZyBidWcgNDc5MDUsIHJlZGVzaWduaW5n
IFNWR0FuaW1hdGVkUHJvcGVydHkuIEFzIHdlJ3JlIGdvaW5nIHRvIG1vdmUgdHlwZSBieSB0eXBl
CisgICAgICAgIHRvIHRoZSBuZXcgYW5pbWF0ZWQgcHJvcGVydHkgY29uY2VwdCwga2VlcCB0aGUg
b2xkIG9uZSBhcm91bmQsIG1hcmtlZCBkZXByZWNhdGVkLCB1bnRpbCB0aGUKKyAgICAgICAgdHJh
bnNpdGlvbiBpcyBmaW5pc2hlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
T2JqQy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBzdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkuaDogQ29waWVkIGZy
b20gc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaC4KKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0
ZWRTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVy
dHlUZWFyT2ZmKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZjo6fkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZik6CisgICAg
ICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6fkRlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTVkdBbmlt
YXRlZFByb3BlcnR5OjpEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6dmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHk6OmJhc2VWYWx1ZSk6CisgICAg
ICAgICogc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmg6IENvcGllZCBm
cm9tIHN2Zy9TVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmguCisgICAgICAgICogc3ZnL0RlcHJl
Y2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmg6IENvcGllZCBmcm9tIHN2Zy9TVkdBbmltYXRlZFRl
bXBsYXRlLmguCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3Jh
cHBlcktleTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXk6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlI
YXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVX
cmFwcGVyS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFNWR0Fu
aW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNo
VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU1ZH
QW5pbWF0ZWRUZW1wbGF0ZTo6fkRlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlOjpmb3JnZXRXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcik6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkVGVtcGxhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmg6CisgICAgICAgICogc3Zn
L1NWR0ZpdFRvVmlld0JveC5oOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllczogQWRkZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOiBDb3BpZWQgZnJvbSBzdmcvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oLgorCiAyMDEwLTEwLTE5ICBBZGFtIFJvYmVuICA8
YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlcyBvZiBDQUNGQ29udGV4dFJl
ZiBhbmQgQ0FSZW5kZXIqIGZyb20gV2ViQ29yZQpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA3MDA1NykK
KysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI5OTIsNiArMjk5
Miw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmggXAogCVdlYkNvcmUvc3ZnL0NvbG9yRGlzdGFuY2UuY3BwIFwKIAlXZWJDb3Jl
L3N2Zy9Db2xvckRpc3RhbmNlLmggXAorCVdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRl
ZFByb3BlcnR5LmggXAorCVdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5
VHJhaXRzLmggXAorCVdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmgg
XAogCVdlYkNvcmUvc3ZnL0VsZW1lbnRUaW1lQ29udHJvbC5oIFwKIAlXZWJDb3JlL3N2Zy9HcmFk
aWVudEF0dHJpYnV0ZXMuaCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcCBcCkBAIC0zMDA0LDYgKzMwMDcsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAogCVdlYkNvcmUvc3ZnL0xpbmVhckdyYWRp
ZW50QXR0cmlidXRlcy5oIFwKIAlXZWJDb3JlL3N2Zy9QYXR0ZXJuQXR0cmlidXRlcy5oIFwKKwlX
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBc
CiAJV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmggXAogCVdlYkNvcmUvc3Zn
L1NWR0FFbGVtZW50LmNwcCBcCiAJV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaCBcCkBAIC0zMDE3
LDEwICszMDIxLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBhdGhEYXRhLmggXAogCVdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRzLmNwcCBcCiAJ
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludHMuaCBcCi0JV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5oIFwKLQlXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyLmggXAotCVdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBcCi0JV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudC5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmggXAogCVdlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNzAw
NTcpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzkyMSw4ICsz
OTIxLDEyIEBACiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwJywKICAgICAg
ICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCcsCisgICAgICAgICAgICAnc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oJywKICAgICAgICAgICAgICdz
dmcvQ29sb3JEaXN0YW5jZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9Db2xvckRpc3RhbmNlLmgn
LAorICAgICAgICAgICAgJ3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oJywKKyAg
ICAgICAgICAgICdzdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCcsCisg
ICAgICAgICAgICAnc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmgnLAogICAgICAg
ICAgICAgJ3N2Zy9FbGVtZW50VGltZUNvbnRyb2wuaCcsCiAgICAgICAgICAgICAnc3ZnL0dyYWRp
ZW50QXR0cmlidXRlcy5oJywKICAgICAgICAgICAgICdzdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1
dGVzLmgnLApAQCAtMzk0NywxMCArMzk1MSw2IEBACiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1h
dGVkUGF0aERhdGEuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkUG9pbnRzLmNwcCcs
CiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkUG9pbnRzLmgnLAotICAgICAgICAgICAgJ3N2
Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgnLAotICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFBy
b3BlcnR5U3luY2hyb25pemVyLmgnLAotICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzLmgnLAotICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgnLAog
ICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAn
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJv
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzM0LDIwICsyMzM0LDIwIEBAIEhFQURFUlMgKz0gXAogICAg
IHN2Zy9hbmltYXRpb24vU01JTFRpbWUuaCBcCiAgICAgc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5oIFwKICAgICBzdmcvQ29sb3JEaXN0YW5jZS5oIFwKKyAgICBzdmcvRGVwcmVjYXRlZFNW
R0FuaW1hdGVkUHJvcGVydHkuaCBcCisgICAgc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzLmggXAorICAgIHN2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIFwK
ICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmggXAogICAgIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBcCiAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmggXAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIFwKKyAgICBzdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggXAogICAgIHN2Zy9TVkdB
RWxlbWVudC5oIFwKICAgICBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmggXAogICAgIHN2Zy9TVkdB
bmdsZS5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oIFwKICAgICBzdmcvU1ZH
QW5pbWF0ZWRQYXRoRGF0YS5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZWRQb2ludHMuaCBcCi0gICAg
c3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaCBcCi0gICAgc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlT
eW5jaHJvbml6ZXIuaCBcCi0gICAgc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBcCi0g
ICAgc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmggXAogICAgIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oIFwKICAgICBzdmcvU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHJldmlzaW9uIDcwMDU3KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjExNDcsNTEgKzYxMTQ3LDQ3IEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xFbGVt
ZW50VGltZUNvbnRyb2wuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcRGVwcmVjYXRlZFNW
R0FuaW1hdGVkUHJvcGVydHkuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBRWxlbWVudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHN2Z1xEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FsbElu
T25lLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHN2Z1xTVkdBbHRHbHlwaEVsZW1lbnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxz
dmdcRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmdsZS5oIg0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xFbGVtZW50VGltZUNvbnRyb2wuaCINCiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmltYXRlQ29s
b3JFbGVtZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FFbGVtZW50LmgiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdc
U1ZHQW5pbWF0ZWRQYXRoRGF0YS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbGxJ
bk9uZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRQb2ludHMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxz
dmdcU1ZHQWx0R2x5cGhFbGVtZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIg0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmdsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJ
CTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FuaW1hdGVkUHJvcGVydHlTeW5j
aHJvbml6ZXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZUNvbG9yRWxl
bWVudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3ZnXFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCINCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxzdmdcU1ZHQW5pbWF0ZWRQYXRoRGF0YS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJ
CTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FuaW1hdGVkVGVtcGxhdGUuaCIN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRQb2ludHMuaCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KQEAgLTYyMjEwLDYgKzYyMjA2LDE0IEBACiAJCQkJCTwv
RmlsZT4NCiAJCQkJPC9GaWx0ZXI+DQogCQkJPC9GaWx0ZXI+DQorCQkJPEZpbHRlcg0KKwkJCQlO
YW1lPSJwcm9wZXJ0aWVzIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorICAgIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCIN
CisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCTwvRmlsdGVyPg0KIAkJPC9GaWx0ZXI+DQogCQk8
RmlsdGVyDQogCQkJTmFtZT0iRm9yd2FyZGluZ0hlYWRlcnMiDQpJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDcwMDU3KQorKysgV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc5
LDYgKzc5LDEwIEBACiAJCTA4MThBRUUyMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRs
aW5nRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODE4QUVFMDBFREI4NkJDMDA2NDdCNjYgLyogV01MRXZlbnRIYW5kbGluZ0VsZW1lbnQu
Y3BwICovOyB9OwogCQkwODE4QUVFMzBFREI4NkJDMDA2NDdCNjYgLyogV01MRXZlbnRIYW5kbGlu
Z0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4MThBRUUxMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5oICov
OyB9OwogCQkwODFBQThEQTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFBQThEOTEx
MTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi87IH07CisJCTA4MUNERkI4
MTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxQ0RGQjUxMjZFQ0ZE
QjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDgxQ0RGQjkxMjZFQ0ZEQjAw
RDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFDREZCNjEyNkVDRkRCMDBE
MjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwODFDREZCQTEyNkVDRkRC
MDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUNERkI3MTI2RUNGREIwMEQyMTVD
QSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA4MUNERkJGMTI2RUNGRTgwMEQyMTVDQSAv
KiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFDREZCRTEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4MUQ4MTMxMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxU
aW1lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDgxRDgxMkYwRUUwRTc0RDAwRDczNjg5IC8qIFdNTFRpbWVyRWxlbWVudC5jcHAgKi87
IH07CiAJCTA4MUQ4MTMyMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUQ4MTMwMEVFMEU3
NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuaCAqLzsgfTsKIAkJMDgxRUJGM0EwRkQzNEY0
MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRUJGMzgwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0Zp
bHRlckJ1aWxkZXIuY3BwICovOyB9OwpAQCAtMTA4LDggKzExMiw2IEBACiAJCTA4NEQwRTNEMTFG
NTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJjZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NEQwRTM5MTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNv
dXJjZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwODREMEUzRTExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg0RDBFM0ExMUY1ODE2
MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlc0NhY2hlLmNwcCAqLzsgfTsKIAkJMDg0RDBFM0YxMUY1
ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlc0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODREMEUzQjExRjU4MTYxMDAwODFFMUEgLyogU1ZH
UmVzb3VyY2VzQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwODREMjgzMzExMEE3RkNCMDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVN5bmNocm9uaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg0RDI4MzExMTBBN0ZDQjAwMzgyMzlBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5j
aHJvbml6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwODREMjgzNDExMEE3RkNCMDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg0RDI4
MzIxMTBBN0ZDQjAwMzgyMzlBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODREQkFBMTBFRDM5
RDM2MDAzOEMyMjYgLyogV01MVmFyaWFibGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NERCQTlEMEVEMzlEMzUwMDM4QzIyNiAvKiBXTUxWYXJp
YWJsZXMuY3BwICovOyB9OwogCQkwODREQkFBMjBFRDM5RDM2MDAzOEMyMjYgLyogV01MVmFyaWFi
bGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODRE
QkE5RTBFRDM5RDM2MDAzOEMyMjYgLyogV01MVmFyaWFibGVzLmggKi87IH07CiAJCTA4NTRCMDE0
MTI1NUU0RTYwMEI5Q0REMCAvKiBSZW5kZXJTVkdJbmxpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1NEIwMDIxMjU1RTRFNjAwQjlDREQwIC8q
IFJlbmRlclNWR0lubGluZS5jcHAgKi87IH07CkBAIC0xNTQsNyArMTU2LDYgQEAKIAkJMDg3MzVG
QjkxMEU5MTIzMjAwNkQ2RkFEIC8qIFNWR01hcmtlckxheW91dEluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzM1RkI3MTBFOTEyMzIwMDZENkZB
RCAvKiBTVkdNYXJrZXJMYXlvdXRJbmZvLmggKi87IH07CiAJCTA4NzQ0QkFBMEVEQjdEODYwMDRD
OUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODc0NEJBOTBFREI3RDg2MDA0QzlFNjMgLyogV01MT25FdmVu
dEVsZW1lbnQuY3BwICovOyB9OwogCQkwODc0NEJBRTBFREI3RDkyMDA0QzlFNjMgLyogV01MT25F
dmVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NzQ0QkFEMEVEQjdEOTIwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5oICovOyB9
OwotCQkwODc4QjFGRDEwODc0RTNGMDBBNTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3OEIxRjkxMDg3
NEUzRjAwQTU1MDk3IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODdEOTdCRjEwRkI4RDc3MDBDMDA4NzQg
LyogSlNTVkdQT0RMaXN0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODdEOTdCRTEwRkI4RDc3MDBDMDA4NzQgLyogSlNTVkdQT0RMaXN0Q3Vz
dG9tLmggKi87IH07CiAJCTA4N0ZGQTBGMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExl
Z2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg3RkZBMEQwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVu
dC5jcHAgKi87IH07CiAJCTA4N0ZGQTEwMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExl
Z2VuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4N0ZGQTBFMEVGRjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQu
aCAqLzsgfTsKQEAgLTM5MTcsNyArMzkxOCw2IEBACiAJCUIyMjI3OTg1MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdBbmltYXRlZFBhdGhEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdFRjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQ
YXRoRGF0YS5oICovOyB9OwogCQlCMjIyNzk4NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0
ZWRQb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc3RjEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUG9pbnRzLmNwcCAqLzsg
fTsKIAkJQjIyMjc5ODgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUG9pbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdGMjBEMDBC
RjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQb2ludHMuaCAqLzsgfTsKLQkJQjIyMjc5OEQwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkVGVtcGxhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0Y3MEQwMEJGMUYwMDcxQjc4MiAvKiBT
VkdBbmltYXRlZFRlbXBsYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQjIyMjc5OEYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3N0Y5MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5jcHAgKi87IH07CiAJ
CUIyMjI3OTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3RkEwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVtZW50LmggKi87IH07CiAJCUIyMjI3OTkyMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdGQzBEMDBCRjFGMDA3MUI3ODIgLyog
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwICovOyB9OwpAQCAtNjA2NCw2ICs2MDY0LDEwIEBA
CiAJCTA4MThBRUUwMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxFdmVudEhhbmRsaW5n
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MThBRUUxMEVEQjg2
QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwODFBQThEOTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJh
cmVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRSYXJl
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODFDREZCNTEyNkVDRkRCMDBE
MjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDgxQ0RGQjYxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4MUNERkI3MTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNh
dGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwODFDREZCRTEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5
bmNocm9uaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRl
ZFByb3BlcnR5U3luY2hyb25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
MUQ4MTJGMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MVGltZXJFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRDgxMzAwRUUwRTc0RDAwRDczNjg5IC8qIFdNTFRpbWVy
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxUaW1lckVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRUJGMzgwRkQzNEY0MTAwREE3
NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHRmlsdGVyQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MDkxLDggKzYwOTUsNiBAQAogCQkwODREMEUzOTExRjU4MTYxMDAwODFFMUEgLyogU1ZH
UmVzb3VyY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jlc291cmNl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODREMEUzQTExRjU4MTYxMDAwODFF
MUEgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODREMEUzQjExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2VzQ2FjaGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg0RDI4MzExMTBBN0ZDQjAwMzgyMzlBIC8qIFNWR0Fu
aW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwODREMjgzMjExMEE3RkNCMDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NERCQTlE
MEVEMzlEMzUwMDM4QzIyNiAvKiBXTUxWYXJpYWJsZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV01MVmFyaWFibGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg0REJBOUUwRUQzOUQzNjAwMzhDMjI2IC8qIFdNTFZhcmlhYmxlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxWYXJpYWJsZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMDIxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lu
bGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdJ
bmxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEzNyw3ICs2MTM5LDYg
QEAKIAkJMDg3MzVGQjcxMEU5MTIzMjAwNkQ2RkFEIC8qIFNWR01hcmtlckxheW91dEluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWFya2VyTGF5b3V0SW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODc0NEJBOTBFREI3RDg2MDA0QzlFNjMgLyog
V01MT25FdmVudEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV01MT25FdmVudEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODc0NEJBRDBFREI3RDkyMDA0QzlFNjMgLyogV01MT25FdmVudEVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MT25FdmVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMDg3OEIxRjkxMDg3NEUzRjAwQTU1MDk3IC8qIFNWR0FuaW1hdGVk
UHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODdEOTdCRTEwRkI4RDc3
MDBDMDA4NzQgLyogSlNTVkdQT0RMaXN0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU1ZHUE9ETGlzdEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODdGRkEwRDBFRkYzRUQzMDA5REJEODggLyogV01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEluc2VydGVkTGVn
ZW5kRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4N0ZGQTBFMEVG
RjNFRDMwMDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzIzLDcgKzk3MjQsNiBAQAogCQlCMjIyNzdGNDBEMDBC
RjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3RjUwRDAwQkYxRjAwNzFCNzgyIC8qIFNW
R0FuaW1hdGVkUmVjdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0FuaW1hdGVkUmVj
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3N0Y2MEQwMEJGMUYwMDcx
Qjc4MiAvKiBTVkdBbmltYXRlZFN0cmluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNW
R0FuaW1hdGVkU3RyaW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjIyMjc3
RjcwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkVGVtcGxhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVGVtcGxhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3RjgwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3N0Y5MEQw
MEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjIyNzdGQTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTY1OCw2ICsxMTY1OCwxNCBA
QAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwODFDREZCRDEy
NkVDRkU4MDBEMjE1Q0EgLyogcHJvcGVydGllcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJMDgxQ0RGQkUxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1h
dGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gcHJvcGVydGll
czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTA4NjdENjkxRkU4NDAyOEZD
MDJBQUMwNyAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMTU4NjYsOCArMTU4NzQsMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUU0NkU5
Nzg2MERBQUQ2MUIwMDcxRTg5NCAvKiBhbmltYXRpb24gKi8sCiAJCQkJQjI1NTk4ODYwRDAwRDhC
ODAwQkI4MjVDIC8qIGdyYXBoaWNzICovLAorCQkJCTA4MUNERkJEMTI2RUNGRTgwMEQyMTVDQSAv
KiBwcm9wZXJ0aWVzICovLAogCQkJCUIyMjI3N0NCMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xvckRp
c3RhbmNlLmNwcCAqLywKIAkJCQlCMjIyNzdDQzBEMDBCRjFGMDA3MUI3ODIgLyogQ29sb3JEaXN0
YW5jZS5oICovLAorCQkJCTA4MUNERkI1MTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS5oICovLAorCQkJCTA4MUNERkI2MTI2RUNGREIwMEQyMTVDQSAvKiBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oICovLAorCQkJCTA4MUNERkI3MTI2
RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oICovLAogCQkJ
CUU0MTVGMTgzMEQ5QTFBODMwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wuaCAqLywKIAkJ
CQlFNDE1RjEwQzBEOUEwNTg3MDAzM0NFOTcgLyogRWxlbWVudFRpbWVDb250cm9sLmlkbCAqLywK
IAkJCQlCMjIyNzdDRDBEMDBCRjFGMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmggKi8s
CkBAIC0xNTkwMSwxMiArMTU5MTMsOCBAQAogCQkJCUIyMjI3N0YyMEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdBbmltYXRlZFBvaW50cy5oICovLAogCQkJCUIyMjI3N0YzMEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdBbmltYXRlZFBvaW50cy5pZGwgKi8sCiAJCQkJQjIyMjc3RjQwRDAwQkYxRjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5pZGwgKi8sCi0JCQkJMDg3OEIxRjkx
MDg3NEUzRjAwQTU1MDk3IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuaCAqLywKLQkJCQkwODREMjgz
MTExMEE3RkNCMDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oICov
LAotCQkJCTA4NEQyODMyMTEwQTdGQ0IwMDM4MjM5QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzLmggKi8sCiAJCQkJQjIyMjc3RjUwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUmVj
dC5pZGwgKi8sCiAJCQkJQjIyMjc3RjYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkU3Ry
aW5nLmlkbCAqLywKLQkJCQlCMjIyNzdGNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZS5oICovLAogCQkJCUIyMjI3N0Y4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QuaWRsICovLAogCQkJCUIyMjI3N0Y5MEQwMEJGMUYwMDcxQjc4MiAvKiBT
VkdBbmltYXRlRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc3RkEwRDAwQkYxRjAwNzFCNzgyIC8q
IFNWR0FuaW1hdGVFbGVtZW50LmggKi8sCkBAIC0yMDY2OCwxMCArMjA2NzYsNiBAQAogCQkJCUIy
MjI3OTdBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyNzk4NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQYXRo
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5ODgwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0FuaW1hdGVkUG9pbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwODc4QjFGRDEwODc0RTNGMDBB
NTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg0RDI4
MzMxMTBBN0ZDQjAwMzgyMzlBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTA4NEQyODM0MTEwQTdGQ0IwMDM4MjM5QSAvKiBTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjIyNzk4RDBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
OTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyNzk5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTk1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTA4Miw2ICsyMTA4Niwx
MCBAQAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RkEzQjkwQjEyNUNEMTIyMDAzMDBCQUQgLyogSW5zcGVjdG9yU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjhDMzE0MTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBB
Y2N1bXVsYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDgxQ0RGQjgxMjZFQ0ZEQjAwRDIxNUNB
IC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
ODFDREZCOTEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlU
cmFpdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4MUNERkJBMTI2RUNGREIwMEQyMTVDQSAvKiBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDgxQ0RG
QkYxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JPYmpDLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbQkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHdvcmtpbmcgY29weSkKQEAgLTU4OCw3ICs1ODgsNyBA
QCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgfQogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siU1ZH
QW5pbWF0ZWRUZW1wbGF0ZS5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJEZXByZWNh
dGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIn0gPSAxOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJE
T00ke3R5cGV9SW50ZXJuYWwuaCJ9ID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTk4
Myw3ICs5ODMsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgbXkgJGltcGxDbGFzc05h
bWUgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2VOYW1lKTsKIAogICAgICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAg
ICAgICAgcHVzaChAaW50ZXJuYWxIZWFkZXJDb250ZW50LCAiI2ltcG9ydCA8V2ViQ29yZS9TVkdB
bmltYXRlZFRlbXBsYXRlLmg+XG5cbiIpOworICAgICAgICAgICAgcHVzaChAaW50ZXJuYWxIZWFk
ZXJDb250ZW50LCAiI2ltcG9ydCA8V2ViQ29yZS9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0
ZS5oPlxuXG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGludGVybmFs
SGVhZGVyQ29udGVudCwgIm5hbWVzcGFjZSBXZWJDb3JlIHtcbiIpOwogICAgICAgICAgICAgJHN0
YXJ0ZWROYW1lc3BhY2UgPSAxOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAkaW1wbEluY2x1ZGVzeyJET01TVkdQYXRoU2VnSW50ZXJuYWwuaCJ9
ID0gMSBpZiAkaW50ZXJmYWNlTmFtZSA9fiAvXlNWR1BhdGhTZWcuKy87CiAKICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJTVkdBbmltYXRlZFRlbXBsYXRlLmgifSA9IDE7CisgICAgICAgICRp
bXBsSW5jbHVkZXN7IkRlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmgifSA9IDE7CiAgICAg
fSBlbHNpZiAoJGludGVyZmFjZU5hbWUgPX4gLyhcdyspKEFic3xSZWwpJC8pIHsKICAgICAgICAg
JGltcGxJbmNsdWRlc3siJDEuaCJ9ID0gMTsKICAgICB9IGVsc2UgewpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA3MDA1NykKKysr
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29w
eSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdWIgQWRkSW5jbHVkZXNGb3JTVkdBbmltYXRlZFR5cGUK
ICAgICAgICAgJGltcGxJbmNsdWRlc3siUGxhdGZvcm1TdHJpbmcuaCJ9ID0gMTsKICAgICB9CiAK
LSAgICAkaW1wbEluY2x1ZGVzeyJTVkdBbmltYXRlZFRlbXBsYXRlLmgifSA9IDE7CisgICAgJGlt
cGxJbmNsdWRlc3siRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCJ9ID0gMTsKIH0KIAog
IyBJZiB0aGUgbm9kZSBoYXMgYSBbQ29uZGl0aW9uYWw9WFhYXSBhdHRyaWJ1dGUsIHJldHVybnMg
YW4gIkVOQUJMRShYWFgpIiBzdHJpbmcgZm9yIHVzZSBpbiBhbiAjaWYuCkBAIC00NTAsNyArNDUw
LDcgQEAgc3ViIEdldEhlYWRlckNsYXNzSW5jbHVkZQogICAgICAgICAkY2xhc3NOYW1lID1+IHMv
QWJzfFJlbC8vOwogICAgIH0KICAgICByZXR1cm4gIiIgaWYgKEF2b2lkSW5jbHVzaW9uT2ZUeXBl
KCRjbGFzc05hbWUpKTsKLSAgICByZXR1cm4gIlNWR0FuaW1hdGVkVGVtcGxhdGUuaCIgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkY2xhc3NOYW1lKSk7CisgICAgcmV0dXJu
ICJEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIiBpZiAoJGNvZGVHZW5lcmF0b3ItPklz
U1ZHQW5pbWF0ZWRUeXBlKCRjbGFzc05hbWUpKTsKICAgICByZXR1cm4gIiR7Y2xhc3NOYW1lfS5o
IjsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oCShyZXZpc2lvbiA3MDA1NykJKGZyb20gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oOjcwMDU3KQorKysgV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHku
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlfaAorI2RlZmluZSBTVkdBbmltYXRl
ZFByb3BlcnR5X2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplci5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMu
aCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFRlbXBsYXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgorY2xhc3MgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgorY2xhc3MgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxBbmltYXRl
ZFR5cGU+IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVy
dHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFzc1R5cGU7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5
cGUgUmV0dXJuVHlwZTsKKworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8
QW5pbWF0ZWRUeXBlPiBTZWxmOworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmlt
YXRlZFR5cGU+IENyZWF0b3I7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWxmPiBjcmVhdGUo
Q3JlYXRvciYgY3JlYXRvciwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlbGYoY3JlYXRvciwgY29udGV4dEVsZW1lbnQpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFzZVZhbChQYXNzVHlwZSB0eXBlKQorICAg
IHsKKyAgICAgICAgbV9jcmVhdG9yLnNldEJhc2VWYWx1ZSh0eXBlKTsKKyAgICAgICAgbV9jb250
ZXh0RWxlbWVudC0+aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0QW5pbVZhbChQYXNzVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgbV9jcmVh
dG9yLnNldFZhbHVlKHR5cGUpOworICAgICAgICBtX2NvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRl
U1ZHQXR0cmlidXRlcygpOworICAgIH0KKworICAgIHZpcnR1YWwgUmV0dXJuVHlwZSBiYXNlVmFs
KCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdG9yLmJhc2VWYWx1ZSgpOyB9CisgICAgdmlydHVhbCBS
ZXR1cm5UeXBlIGFuaW1WYWwoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0b3IudmFsdWUoKTsgfQor
ICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUo
KSBjb25zdCB7IHJldHVybiBtX2NyZWF0b3IuYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKTsgfQor
Citwcml2YXRlOgorICAgIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmKENyZWF0b3ImIGNyZWF0
b3IsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgICAgICA6IG1fY3JlYXRvcihjcmVh
dG9yKQorICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCisgICAgewor
ICAgICAgICBtX2NyZWF0b3Iuc2V0U2hvdWxkU3luY2hyb25pemUodHJ1ZSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYoKQorICAgIHsKKyAgICAgICAg
bV9jcmVhdG9yLnNldFNob3VsZFN5bmNocm9uaXplKGZhbHNlKTsKKyAgICB9CisKKyAgICBDcmVh
dG9yJiBtX2NyZWF0b3I7CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IG1fY29udGV4dEVsZW1lbnQ7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+CitjbGFzcyBTVkdBbmltYXRl
ZFByb3BlcnR5IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFByb3BlcnR5KCkg
eyB9CisKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5p
bWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFzc1R5cGU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUgUmV0dXJuVHlw
ZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0
ZWRUeXBlPjo6U3RvcmVkVHlwZSBTdG9yZWRUeXBlOworCisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSgpCisgICAgICAgIDogbV92YWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVk
VHlwZT46Om51bGwoKSkKKyAgICAgICAgLCBtX3Nob3VsZFN5bmNocm9uaXplKGZhbHNlKQorICAg
IHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25zdHJ1Y3RvclBhcmFtZXRlck9u
ZT4KKyAgICBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IENvbnN0cnVjdG9yUGFyYW1ldGVyT25l
JiB2YWx1ZTEpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZTEpCisgICAgICAgICwgbV9zaG91bGRT
eW5jaHJvbml6ZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29uc3RydWN0b3JQYXJhbWV0ZXJPbmUsIHR5cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyVHdv
PgorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUm
IHZhbHVlMSwgY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28mIHZhbHVlMikKKyAgICAgICAg
OiBtX3ZhbHVlKHZhbHVlMSwgdmFsdWUyKQorICAgICAgICAsIG1fc2hvdWxkU3luY2hyb25pemUo
ZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFJldHVyblR5cGUgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OnRvUmV0dXJuVHlw
ZShtX3ZhbHVlKTsgfQorICAgIFJldHVyblR5cGUgYmFzZVZhbHVlKCkgY29uc3QgeyByZXR1cm4g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+Ojp0b1JldHVyblR5cGUobV92
YWx1ZSk7IH0KKworICAgIHZvaWQgc2V0VmFsdWUoUGFzc1R5cGUgdHlwZSkgeyBtX3ZhbHVlID0g
dHlwZTsgfQorICAgIHZvaWQgc2V0QmFzZVZhbHVlKFBhc3NUeXBlIHR5cGUpIHsgbV92YWx1ZSA9
IHR5cGU7IH0KKworICAgIGJvb2wgc2hvdWxkU3luY2hyb25pemUoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZFN5bmNocm9uaXplOyB9CisgICAgdm9pZCBzZXRTaG91bGRTeW5jaHJvbml6ZShib29s
IHZhbHVlKSB7IG1fc2hvdWxkU3luY2hyb25pemUgPSB2YWx1ZTsgfQorCisgICAgdmlydHVhbCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0ID0gMDsK
KworcHJvdGVjdGVkOgorICAgIFN0b3JlZFR5cGUgbV92YWx1ZTsKKyAgICBib29sIG1fc2hvdWxk
U3luY2hyb25pemU7Cit9OworCit9OworCisvLyBIZWxwZXIgbWFjcm8gdXNlZCB3aXRoaW4gREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWSBiZWxvdworI2RlZmluZSBERUZJTkVfQU5JTUFURURfUFJP
UEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0
eSkgXAorY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eSA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4geyBcCitwdWJsaWM6IFwKKyAgICBTVkdB
bmltYXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5KCkgXAorICAgICAgICA6IFNWR0FuaW1hdGVk
UHJvcGVydHk8QW5pbWF0ZWRUeXBlPigpIFwKKyAgICB7IFwKKyAgICB9IFwKKyAgICBcCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmU+IFwKKyAgICBTVkdBbmlt
YXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5KGNvbnN0IENvbnN0cnVjdG9yUGFyYW1ldGVyT25l
JiB2YWx1ZTEpIFwKKyAgICAgICAgOiBTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4o
dmFsdWUxKSBcCisgICAgeyBcCisgICAgfSBcCisgICAgXAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENvbnN0cnVjdG9yUGFyYW1ldGVyT25lLCB0eXBlbmFtZSBDb25zdHJ1Y3RvclBhcmFtZXRlclR3
bz4gXAorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkoY29uc3QgQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSwgY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28m
IHZhbHVlMikgXAorICAgICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPih2
YWx1ZTEsIHZhbHVlMikgXAorICAgIHsgXAorICAgIH0gXAorICAgIFwKKyAgICB2b2lkIHN5bmNo
cm9uaXplKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KSBcCisgICAgeyBcCisgICAgICAgIEFT
U0VSVChtX3Nob3VsZFN5bmNocm9uaXplKTsgXAorICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUo
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+Ojp0b1N0cmluZyhiYXNlVmFs
dWUoKSkpOyBcCisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8SXNEZXJp
dmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+OjpzeW5jaHJvbml6ZShjb250ZXh0
RWxlbWVudCwgRE9NQXR0cmlidXRlLCB2YWx1ZSk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgdmly
dHVhbCBjb25zdCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0
IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIERPTUF0dHJpYnV0ZTsgXAorICAgIH0gXAorfQor
CisvLyBIZWxwZXIgbWFjcm8gc2hhcmVkIGJ5IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkgLyBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX01VTFRJUExFX1dSQVBQRVJTCisjZGVmaW5lIERFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVFlfU0hBUkVEKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdE
T01BdHRyaWJ1dGVJZGVudGlmaWVyLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpIFwKK3ByaXZhdGU6IFwKKyAgICB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlU
ZWFyT2ZmPEFuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYjI1VwcGVyUHJv
cGVydHk7IFwKKyAgICBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRy
aWJ1dGUsIEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSk7IFwKKyAgICBTVkdBbmltYXRlZFBy
b3BlcnR5IyNVcHBlclByb3BlcnR5IG1fIyNMb3dlclByb3BlcnR5OyBcCisgICAgXAorcHVibGlj
OiBcCisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5U
eXBlIExvd2VyUHJvcGVydHkoKSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBtXyMj
TG93ZXJQcm9wZXJ0eS52YWx1ZSgpOyBcCisgICAgfSBcCisgICAgXAorICAgIFNWR0FuaW1hdGVk
UHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBMb3dlclByb3BlcnR5IyNC
YXNlVmFsdWUoKSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBtXyMjTG93ZXJQcm9w
ZXJ0eS5iYXNlVmFsdWUoKTsgXAorICAgIH0gXAorICAgIFwKKyAgICB2b2lkIHNldCMjVXBwZXJQ
cm9wZXJ0eShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBl
IHR5cGUpIFwKKyAgICB7IFwKKyAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkuc2V0VmFsdWUodHlw
ZSk7IFwKKyAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1l
bnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6
dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKKyAgICAgICAgY29udGV4dEVsZW1lbnQtPmlu
dmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgdm9pZCBzZXQj
I1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1h
dGVkVHlwZT46OlBhc3NUeXBlIHR5cGUpIFwKKyAgICB7IFwKKyAgICAgICAgbV8jI0xvd2VyUHJv
cGVydHkuc2V0QmFzZVZhbHVlKHR5cGUpOyBcCisgICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21T
VkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCisgICAg
ICAgIGNvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOyBcCisgICAgfSBc
CisgICAgXAorICAgIHZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVydHkoKSBcCisgICAgeyBc
CisgICAgICAgIGlmICghbV8jI0xvd2VyUHJvcGVydHkuc2hvdWxkU3luY2hyb25pemUoKSkgXAor
ICAgICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVt
ZW50PE93bmVyVHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCisgICAgICAgIG1f
IyNMb3dlclByb3BlcnR5LnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50KTsgXAorICAgIH0gXAor
ICAgIFwKKyAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmIyNVcHBlclBy
b3BlcnR5PiBMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIFwKKyAgICB7IFwKKyAgICAgICAgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlw
ZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1l
bnQodGhpcyk7IFwKKyAgICAgICAgcmV0dXJuIGxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxBbmltYXRl
ZFR5cGUsIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmIyNVcHBlclByb3BlcnR5Pihjb250ZXh0
RWxlbWVudCwgbV8jI0xvd2VyUHJvcGVydHksIERPTUF0dHJpYnV0ZSk7IFwKKyAgICB9CisKKy8v
IFVzZWQgZm9yIFNWRyBET00gcHJvcGVydGllcyB0aGF0IG1hcCBleGFjdGx5IHRvIG9uZSBYTUwg
RE9NIGF0dHJpYnV0ZQorI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKK0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfU0hBUkVEKE93bmVyVHlwZSwgRE9NQXR0
cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKKworLy8gVXNlZCBmb3IgdGhlIHJhcmUgY2FzZSBtdWx0aXBs
ZSBTVkcgRE9NIHByb3BlcnRpZXMgdGhhdCBtYXAgdG8gdGhlIHNhbWUgWE1MIGRvbSBhdHRyaWJ1
dGUKKyNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9NVUxUSVBMRV9XUkFQUEVSUyhP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgQW5pbWF0
ZWRUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCitERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZX1NIQVJFRChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRl
SWRlbnRpZmllciwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQor
CisjZW5kaWYKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVk
UHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5oCShyZXZpc2lvbiA3MDA1NykKKysrIFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDI3ICsxOCwyNyBAQAog
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBTVkdBbmltYXRl
ZFByb3BlcnR5X2gKLSNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eV9oCisjaWZuZGVmIERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5X2gKKyNkZWZpbmUgRGVwcmVjYXRlZFNWR0FuaW1hdGVk
UHJvcGVydHlfaAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3Bl
cnR5U3luY2hyb25pemVyLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5o
IgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVGVtcGxhdGUuaCIKKyNpbmNsdWRlICJEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRTVkdBbmlt
YXRlZFRlbXBsYXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQW5pbWF0ZWRUeXBlPgotY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKK2NsYXNzIERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5
cGU+Ci1jbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBTVkdBbmltYXRl
ZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4geworY2xhc3MgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJv
cGVydHlUZWFyT2ZmIDogcHVibGljIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1h
dGVkVHlwZT4gewogcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpQYXNzVHlwZSBQYXNzVHlwZTsKLSAgICB0eXBlZGVm
IHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJu
VHlwZSBSZXR1cm5UeXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFzc1R5cGU7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmlt
YXRlZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7CiAKLSAgICB0eXBlZGVmIFNWR0FuaW1h
dGVkUHJvcGVydHlUZWFyT2ZmPEFuaW1hdGVkVHlwZT4gU2VsZjsKLSAgICB0eXBlZGVmIFNWR0Fu
aW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPiBDcmVhdG9yOworICAgIHR5cGVkZWYgRGVwcmVj
YXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPEFuaW1hdGVkVHlwZT4gU2VsZjsKKyAgICB0
eXBlZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4gQ3JlYXRv
cjsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlbGY+IGNyZWF0ZShDcmVhdG9yJiBjcmVhdG9y
LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICB7CkBAIC02MiwxNCArNjIsMTQgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJp
YnV0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0b3IuYXNzb2NpYXRlZEF0dHJpYnV0ZU5h
bWUoKTsgfQogCiBwcml2YXRlOgotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmKENyZWF0
b3ImIGNyZWF0b3IsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIERlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5VGVhck9mZihDcmVhdG9yJiBjcmVhdG9yLCBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCkKICAgICAgICAgOiBtX2NyZWF0b3IoY3JlYXRvcikKICAgICAgICAgLCBt
X2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQogICAgIHsKICAgICAgICAgbV9jcmVhdG9y
LnNldFNob3VsZFN5bmNocm9uaXplKHRydWUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgflNWR0Fu
aW1hdGVkUHJvcGVydHlUZWFyT2ZmKCkKKyAgICB2aXJ0dWFsIH5EZXByZWNhdGVkU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRlYXJPZmYoKQogICAgIHsKICAgICAgICAgbV9jcmVhdG9yLnNldFNob3VsZFN5
bmNocm9uaXplKGZhbHNlKTsKICAgICB9CkBAIC03OSwzNiArNzksMzYgQEAgcHJpdmF0ZToKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZT4KLWNsYXNzIFNWR0FuaW1hdGVkUHJv
cGVydHkgeworY2xhc3MgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkgewogcHVibGljOgot
ICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkUHJvcGVydHkoKSB7IH0KKyAgICB2aXJ0dWFsIH5EZXBy
ZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpIHsgfQogCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIFBhc3NUeXBl
OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRl
ZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlN0b3JlZFR5cGUgU3RvcmVkVHlw
ZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIFBhc3NUeXBlOworICAgIHR5cGVkZWYgdHlwZW5h
bWUgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0
dXJuVHlwZSBSZXR1cm5UeXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6U3RvcmVkVHlwZSBTdG9yZWRUeXBl
OwogCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpCi0gICAgICAgIDogbV92YWx1ZShTVkdBbmlt
YXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46Om51bGwoKSkKKyAgICBEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpCisgICAgICAgIDogbV92YWx1ZShEZXByZWNhdGVkU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpudWxsKCkpCiAgICAgICAgICwgbV9z
aG91bGRTeW5jaHJvbml6ZShmYWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmU+Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShj
b25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxKQorICAgIERlcHJlY2F0ZWRTVkdB
bmltYXRlZFByb3BlcnR5KGNvbnN0IENvbnN0cnVjdG9yUGFyYW1ldGVyT25lJiB2YWx1ZTEpCiAg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZTEpCiAgICAgICAgICwgbV9zaG91bGRTeW5jaHJvbml6ZShm
YWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQ
YXJhbWV0ZXJPbmUsIHR5cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyVHdvPgotICAgIFNWR0Fu
aW1hdGVkUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSwgY29u
c3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28mIHZhbHVlMikKKyAgICBEZXByZWNhdGVkU1ZHQW5p
bWF0ZWRQcm9wZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxLCBjb25z
dCBDb25zdHJ1Y3RvclBhcmFtZXRlclR3byYgdmFsdWUyKQogICAgICAgICA6IG1fdmFsdWUodmFs
dWUxLCB2YWx1ZTIpCiAgICAgICAgICwgbV9zaG91bGRTeW5jaHJvbml6ZShmYWxzZSkKICAgICB7
CiAgICAgfQogCi0gICAgUmV0dXJuVHlwZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNWR0FuaW1h
dGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6dG9SZXR1cm5UeXBlKG1fdmFsdWUpOyB9
Ci0gICAgUmV0dXJuVHlwZSBiYXNlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OnRvUmV0dXJuVHlwZShtX3ZhbHVlKTsgfQorICAg
IFJldHVyblR5cGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+Ojp0b1JldHVyblR5cGUobV92YWx1ZSk7IH0KKyAg
ICBSZXR1cm5UeXBlIGJhc2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIERlcHJlY2F0ZWRTVkdBbmlt
YXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OnRvUmV0dXJuVHlwZShtX3ZhbHVlKTsg
fQogCiAgICAgdm9pZCBzZXRWYWx1ZShQYXNzVHlwZSB0eXBlKSB7IG1fdmFsdWUgPSB0eXBlOyB9
CiAgICAgdm9pZCBzZXRCYXNlVmFsdWUoUGFzc1R5cGUgdHlwZSkgeyBtX3ZhbHVlID0gdHlwZTsg
fQpAQCAtMTI3LDI5ICsxMjcsMjkgQEAgcHJvdGVjdGVkOgogCiAvLyBIZWxwZXIgbWFjcm8gdXNl
ZCB3aXRoaW4gREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWSBiZWxvdwogI2RlZmluZSBERUZJTkVf
QU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIEFuaW1hdGVkVHlwZSwg
VXBwZXJQcm9wZXJ0eSkgXAotY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0
eSA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4geyBcCitjbGFzcyBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eSA6IHB1YmxpYyBEZXBy
ZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+IHsgXAogcHVibGljOiBcCi0g
ICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eSgpIFwKLSAgICAgICAgOiBTVkdB
bmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4oKSBcCisgICAgRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkoKSBcCisgICAgICAgIDogRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPigpIFwKICAgICB7IFwKICAgICB9IFwKICAgICBc
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmU+IFwKLSAgICBT
VkdBbmltYXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5KGNvbnN0IENvbnN0cnVjdG9yUGFyYW1l
dGVyT25lJiB2YWx1ZTEpIFwKLSAgICAgICAgOiBTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVk
VHlwZT4odmFsdWUxKSBcCisgICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVy
UHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSkgXAorICAgICAg
ICA6IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4odmFsdWUxKSBc
CiAgICAgeyBcCiAgICAgfSBcCiAgICAgXAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnN0cnVj
dG9yUGFyYW1ldGVyT25lLCB0eXBlbmFtZSBDb25zdHJ1Y3RvclBhcmFtZXRlclR3bz4gXAotICAg
IFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJh
bWV0ZXJPbmUmIHZhbHVlMSwgY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28mIHZhbHVlMikg
XAotICAgICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPih2YWx1ZTEsIHZh
bHVlMikgXAorICAgIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5
KGNvbnN0IENvbnN0cnVjdG9yUGFyYW1ldGVyT25lJiB2YWx1ZTEsIGNvbnN0IENvbnN0cnVjdG9y
UGFyYW1ldGVyVHdvJiB2YWx1ZTIpIFwKKyAgICAgICAgOiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eTxBbmltYXRlZFR5cGU+KHZhbHVlMSwgdmFsdWUyKSBcCiAgICAgeyBcCiAgICAgfSBc
CiAgICAgXAogICAgIHZvaWQgc3luY2hyb25pemUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQp
IFwKICAgICB7IFwKICAgICAgICAgQVNTRVJUKG1fc2hvdWxkU3luY2hyb25pemUpOyBcCi0gICAg
ICAgIEF0b21pY1N0cmluZyB2YWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVk
VHlwZT46OnRvU3RyaW5nKGJhc2VWYWx1ZSgpKSk7IFwKKyAgICAgICAgQXRvbWljU3RyaW5nIHZh
bHVlKERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OnRv
U3RyaW5nKGJhc2VWYWx1ZSgpKSk7IFwKICAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNo
cm9uaXplcjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNo
cm9uaXplKGNvbnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIHZhbHVlKTsgXAogICAgIH0gXAog
ICAgIFwKQEAgLTE2MiwyOSArMTYyLDI5IEBAIHB1YmxpYzogXAogLy8gSGVscGVyIG1hY3JvIHNo
YXJlZCBieSBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZIC8gREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUWV9NVUxUSVBMRV9XUkFQUEVSUwogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
X1NIQVJFRChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmll
ciwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBwcml2YXRl
OiBcCi0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxBbmltYXRlZFR5cGU+
IFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmIyNVcHBlclByb3BlcnR5OyBcCisgICAgdHlwZWRl
ZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8QW5pbWF0ZWRUeXBlPiBEZXBy
ZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYjI1VwcGVyUHJvcGVydHk7IFwKICAgICBE
RUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIEFuaW1hdGVk
VHlwZSwgVXBwZXJQcm9wZXJ0eSk7IFwKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5IyNVcHBlclBy
b3BlcnR5IG1fIyNMb3dlclByb3BlcnR5OyBcCisgICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJv
cGVydHkjI1VwcGVyUHJvcGVydHkgbV8jI0xvd2VyUHJvcGVydHk7IFwKICAgICBcCiBwdWJsaWM6
IFwKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5
cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IFwKKyAgICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIExvd2VyUHJvcGVydHkoKSBjb25z
dCBcCiAgICAgeyBcCiAgICAgICAgIHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSgpOyBc
CiAgICAgfSBcCiAgICAgXAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRU
eXBlPjo6UmV0dXJuVHlwZSBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCBcCisgICAg
RGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJu
VHlwZSBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCBcCiAgICAgeyBcCiAgICAgICAg
IHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS5iYXNlVmFsdWUoKTsgXAogICAgIH0gXAogICAgIFwK
LSAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFu
aW1hdGVkVHlwZT46OlBhc3NUeXBlIHR5cGUpIFwKKyAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0
eShEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpQYXNz
VHlwZSB0eXBlKSBcCiAgICAgeyBcCiAgICAgICAgIG1fIyNMb3dlclByb3BlcnR5LnNldFZhbHVl
KHR5cGUpOyBcCiAgICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJF
bGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlw
ZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCiAgICAgICAgIGNvbnRleHRFbGVtZW50
LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOyBcCiAgICAgfSBcCiAgICAgXAotICAgIHZvaWQg
c2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxB
bmltYXRlZFR5cGU+OjpQYXNzVHlwZSB0eXBlKSBcCisgICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVy
dHkjI0Jhc2VWYWx1ZShEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRl
ZFR5cGU+OjpQYXNzVHlwZSB0eXBlKSBcCiAgICAgeyBcCiAgICAgICAgIG1fIyNMb3dlclByb3Bl
cnR5LnNldEJhc2VWYWx1ZSh0eXBlKTsgXAogICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZH
RWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXApAQCAtMTk5
LDEwICsxOTksMTAgQEAgcHVibGljOiBcCiAgICAgICAgIG1fIyNMb3dlclByb3BlcnR5LnN5bmNo
cm9uaXplKGNvbnRleHRFbGVtZW50KTsgXAogICAgIH0gXAogICAgIFwKLSAgICBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmIyNVcHBlclByb3BlcnR5PiBMb3dlclByb3BlcnR5
IyNBbmltYXRlZCgpIFwKKyAgICBQYXNzUmVmUHRyPERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKSBcCiAg
ICAgeyBcCiAgICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVt
ZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46
OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCi0gICAgICAgIHJldHVybiBsb29rdXBPckNy
ZWF0ZVdyYXBwZXI8QW5pbWF0ZWRUeXBlLCBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiMjVXBw
ZXJQcm9wZXJ0eT4oY29udGV4dEVsZW1lbnQsIG1fIyNMb3dlclByb3BlcnR5LCBET01BdHRyaWJ1
dGUpOyBcCisgICAgICAgIHJldHVybiBsb29rdXBPckNyZWF0ZVdyYXBwZXI8QW5pbWF0ZWRUeXBl
LCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYjI1VwcGVyUHJvcGVydHk+KGNv
bnRleHRFbGVtZW50LCBtXyMjTG93ZXJQcm9wZXJ0eSwgRE9NQXR0cmlidXRlKTsgXAogICAgIH0K
IAogLy8gVXNlZCBmb3IgU1ZHIERPTSBwcm9wZXJ0aWVzIHRoYXQgbWFwIGV4YWN0bHkgdG8gb25l
IFhNTCBET00gYXR0cmlidXRlCkluZGV4OiBXZWJDb3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgJKHJldmlzaW9uIDcwMDU3KQkoZnJvbSBXZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmg6NzAwNTcpCisrKyBXZWJDb3JlL3N2Zy9E
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHNfaAorI2RlZmluZSBTVkdBbmlt
YXRlZFByb3BlcnR5VHJhaXRzX2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdBbmdsZS5o
IgorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKKyNp
bmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlU
cmFpdHMgOiBwdWJsaWMgTm9uY29weWFibGUgeyB9OworCisvLyBTVkdBbmltYXRlZEFuZ2xlCit0
ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdBbmdsZT4gOiBw
dWJsaWMgTm9uY29weWFibGUgeworICAgIHR5cGVkZWYgY29uc3QgU1ZHQW5nbGUmIFBhc3NUeXBl
OworICAgIHR5cGVkZWYgU1ZHQW5nbGUgUmV0dXJuVHlwZTsKKyAgICB0eXBlZGVmIFNWR0FuZ2xl
IFN0b3JlZFR5cGU7CisKKyAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gU1ZH
QW5nbGUoKTsgfQorICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9y
ZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorfTsKKwor
Ly8gU1ZHQW5pbWF0ZWRCb29sZWFuCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRyYWl0czxib29sPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgdHlwZWRlZiBjb25z
dCBib29sJiBQYXNzVHlwZTsKKyAgICB0eXBlZGVmIGJvb2wgUmV0dXJuVHlwZTsKKyAgICB0eXBl
ZGVmIGJvb2wgU3RvcmVkVHlwZTsKKworICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBT
dG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID8gInRydWUiIDogImZhbHNlIjsgfQor
fTsKKworLy8gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbgordGVtcGxhdGU8Pgorc3RydWN0IFNWR0Fu
aW1hdGVkUHJvcGVydHlUcmFpdHM8aW50PiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgdHlw
ZWRlZiBjb25zdCBpbnQmIFBhc3NUeXBlOworICAgIHR5cGVkZWYgaW50IFJldHVyblR5cGU7Cisg
ICAgdHlwZWRlZiBpbnQgU3RvcmVkVHlwZTsKKworICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwo
KSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0
IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9Cit9
OworCisvLyBTVkdBbmltYXRlZEludGVnZXIKK3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzPGxvbmc+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICB0eXBlZGVm
IGNvbnN0IGxvbmcmIFBhc3NUeXBlOworICAgIHR5cGVkZWYgbG9uZyBSZXR1cm5UeXBlOworICAg
IHR5cGVkZWYgbG9uZyBTdG9yZWRUeXBlOworCisgICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgp
IHsgcmV0dXJuIDBsOyB9CisgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0
IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9Cit9
OworCisvLyBTVkdBbmltYXRlZExlbmd0aAordGVtcGxhdGU8Pgorc3RydWN0IFNWR0FuaW1hdGVk
UHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgdHlw
ZWRlZiBjb25zdCBTVkdMZW5ndGgmIFBhc3NUeXBlOworICAgIHR5cGVkZWYgU1ZHTGVuZ3RoIFJl
dHVyblR5cGU7CisgICAgdHlwZWRlZiBTVkdMZW5ndGggU3RvcmVkVHlwZTsKKworICAgIHN0YXRp
YyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBTVkdMZW5ndGgoKTsgfQorICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0
eXBlOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVy
biB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorfTsKKworLy8gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhM
aXN0Kj4gOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHR5cGVkZWYgU1ZHTGVuZ3RoTGlzdCog
UGFzc1R5cGU7CisgICAgdHlwZWRlZiBTVkdMZW5ndGhMaXN0KiBSZXR1cm5UeXBlOworICAgIHR5
cGVkZWYgUmVmUHRyPFNWR0xlbmd0aExpc3Q+IFN0b3JlZFR5cGU7CisKKyAgICBzdGF0aWMgUmV0
dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0
dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLmdldCgpOyB9Cisg
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID8g
dHlwZS0+dmFsdWVBc1N0cmluZygpIDogU3RyaW5nKCk7IH0KK307CisKKy8vIFNWR0FuaW1hdGVk
TnVtYmVyCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxmbG9h
dD4gOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHR5cGVkZWYgY29uc3QgZmxvYXQmIFBhc3NU
eXBlOworICAgIHR5cGVkZWYgZmxvYXQgUmV0dXJuVHlwZTsKKyAgICB0eXBlZGVmIGZsb2F0IFN0
b3JlZFR5cGU7CisKKyAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gMC4wZjsg
fQorICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0
eXBlKSB7IHJldHVybiB0eXBlOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlw
ZSB0eXBlKSB7IHJldHVybiBTdHJpbmc6Om51bWJlcih0eXBlKTsgfQorfTsKKworLy8gU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRy
YWl0czxTVkdOdW1iZXJMaXN0Kj4gOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHR5cGVkZWYg
U1ZHTnVtYmVyTGlzdCogUGFzc1R5cGU7CisgICAgdHlwZWRlZiBTVkdOdW1iZXJMaXN0KiBSZXR1
cm5UeXBlOworICAgIHR5cGVkZWYgUmVmUHRyPFNWR051bWJlckxpc3Q+IFN0b3JlZFR5cGU7CisK
KyAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0
eXBlLmdldCgpOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7
IHJldHVybiB0eXBlID8gdHlwZS0+dmFsdWVBc1N0cmluZygpIDogU3RyaW5nKCk7IH0KK307CisK
Ky8vIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbwordGVtcGxhdGU8Pgorc3RydWN0IFNW
R0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4gOiBwdWJsaWMg
Tm9uY29weWFibGUgeworICAgIHR5cGVkZWYgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYg
UGFzc1R5cGU7CisgICAgdHlwZWRlZiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIFJldHVyblR5cGU7
CisgICAgdHlwZWRlZiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIFN0b3JlZFR5cGU7CisKKyAgICBz
dGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbygp
OyB9CisgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUm
IHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NU
eXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Cit9OworCisvLyBTVkdB
bmltYXRlZFJlY3QKK3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
PEZsb2F0UmVjdD4gOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHR5cGVkZWYgY29uc3QgRmxv
YXRSZWN0JiBQYXNzVHlwZTsKKyAgICB0eXBlZGVmIEZsb2F0UmVjdCBSZXR1cm5UeXBlOworICAg
IHR5cGVkZWYgRmxvYXRSZWN0IFN0b3JlZFR5cGU7CisKKyAgICBzdGF0aWMgUmV0dXJuVHlwZSBu
dWxsKCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICBzdGF0aWMgUmV0dXJuVHlwZSB0b1Jl
dHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZTsgfQorICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoUGFzc1R5cGUgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoIiVmICVmICVmICVmIiwgdHlwZS54KCksIHR5cGUueSgpLCB0eXBlLndpZHRoKCksIHR5cGUu
aGVpZ2h0KCkpOyB9Cit9OworCisvLyBTVkdBbmltYXRlZFN0cmluZwordGVtcGxhdGU8Pgorc3Ry
dWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U3RyaW5nPiA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CisgICAgdHlwZWRlZiBjb25zdCBTdHJpbmcmIFBhc3NUeXBlOworICAgIHR5cGVkZWYgU3Ry
aW5nIFJldHVyblR5cGU7CisgICAgdHlwZWRlZiBTdHJpbmcgU3RvcmVkVHlwZTsKKworICAgIHN0
YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0
eXBlOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVy
biB0eXBlOyB9Cit9OworCisvLyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QKK3RlbXBsYXRlPD4K
K3N0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybUxpc3QqPiA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CisgICAgdHlwZWRlZiBTVkdUcmFuc2Zvcm1MaXN0KiBQYXNzVHlw
ZTsKKyAgICB0eXBlZGVmIFNWR1RyYW5zZm9ybUxpc3QqIFJldHVyblR5cGU7CisgICAgdHlwZWRl
ZiBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4gU3RvcmVkVHlwZTsKKworICAgIHN0YXRpYyBSZXR1
cm5UeXBlIG51bGwoKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1
cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUuZ2V0KCk7IH0KKyAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyB0
eXBlLT52YWx1ZUFzU3RyaW5nKCkgOiBTdHJpbmcoKTsgfQorfTsKKworfQorCisjZW5kaWYKKyNl
bmRpZgpJbmRleDogV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFp
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRyYWl0cy5oCShyZXZpc2lvbiA3MDA1NykKKysrIFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDgg
QEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRyYWl0c19oCi0jZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHNf
aAorI2lmbmRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0c19oCisjZGVmaW5l
IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzX2gKIAogI2lmIEVOQUJMRShTVkcp
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC0zNCwxMSArMzQsMTEgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLXN0cnVjdCBTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzIDogcHVibGljIE5vbmNvcHlhYmxlIHsgfTsKK3N0cnVjdCBEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7IH07CiAKIC8v
IFNWR0FuaW1hdGVkQW5nbGUKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5
VHJhaXRzPFNWR0FuZ2xlPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitzdHJ1Y3QgRGVwcmVjYXRl
ZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHQW5nbGU+IDogcHVibGljIE5vbmNvcHlhYmxl
IHsKICAgICB0eXBlZGVmIGNvbnN0IFNWR0FuZ2xlJiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIFNW
R0FuZ2xlIFJldHVyblR5cGU7CiAgICAgdHlwZWRlZiBTVkdBbmdsZSBTdG9yZWRUeXBlOwpAQCAt
NTAsNyArNTAsNyBAQCBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdBbmdsCiAK
IC8vIFNWR0FuaW1hdGVkQm9vbGVhbgogdGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJv
cGVydHlUcmFpdHM8Ym9vbD4gOiBwdWJsaWMgTm9uY29weWFibGUgeworc3RydWN0IERlcHJlY2F0
ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGJvb2w+IDogcHVibGljIE5vbmNvcHlhYmxlIHsK
ICAgICB0eXBlZGVmIGNvbnN0IGJvb2wmIFBhc3NUeXBlOwogICAgIHR5cGVkZWYgYm9vbCBSZXR1
cm5UeXBlOwogICAgIHR5cGVkZWYgYm9vbCBTdG9yZWRUeXBlOwpAQCAtNjIsNyArNjIsNyBAQCBz
dHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxib29sPiA6CiAKIC8vIFNWR0FuaW1hdGVk
RW51bWVyYXRpb24KIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
PGludD4gOiBwdWJsaWMgTm9uY29weWFibGUgeworc3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzPGludD4gOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHR5cGVkZWYg
Y29uc3QgaW50JiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIGludCBSZXR1cm5UeXBlOwogICAgIHR5
cGVkZWYgaW50IFN0b3JlZFR5cGU7CkBAIC03NCw3ICs3NCw3IEBAIHN0cnVjdCBTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzPGludD4gOiAKIAogLy8gU1ZHQW5pbWF0ZWRJbnRlZ2VyCiB0ZW1wbGF0
ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxsb25nPiA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CitzdHJ1Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8bG9u
Zz4gOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHR5cGVkZWYgY29uc3QgbG9uZyYgUGFzc1R5
cGU7CiAgICAgdHlwZWRlZiBsb25nIFJldHVyblR5cGU7CiAgICAgdHlwZWRlZiBsb25nIFN0b3Jl
ZFR5cGU7CkBAIC04Niw3ICs4Niw3IEBAIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
PGxvbmc+IDoKIAogLy8gU1ZHQW5pbWF0ZWRMZW5ndGgKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR0xlbmd0aD4gOiBwdWJsaWMgTm9uY29weWFibGUgewor
c3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR0xlbmd0aD4gOiBw
dWJsaWMgTm9uY29weWFibGUgewogICAgIHR5cGVkZWYgY29uc3QgU1ZHTGVuZ3RoJiBQYXNzVHlw
ZTsKICAgICB0eXBlZGVmIFNWR0xlbmd0aCBSZXR1cm5UeXBlOwogICAgIHR5cGVkZWYgU1ZHTGVu
Z3RoIFN0b3JlZFR5cGU7CkBAIC05OCw3ICs5OCw3IEBAIHN0cnVjdCBTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPFNWR0xlbmcKIAogLy8gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0CiB0ZW1wbGF0ZTw+
Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhMaXN0Kj4gOiBwdWJs
aWMgTm9uY29weWFibGUgeworc3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPFNWR0xlbmd0aExpc3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgdHlwZWRlZiBT
VkdMZW5ndGhMaXN0KiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIFNWR0xlbmd0aExpc3QqIFJldHVy
blR5cGU7CiAgICAgdHlwZWRlZiBSZWZQdHI8U1ZHTGVuZ3RoTGlzdD4gU3RvcmVkVHlwZTsKQEAg
LTExMCw3ICsxMTAsNyBAQCBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdMZW5n
CiAKIC8vIFNWR0FuaW1hdGVkTnVtYmVyCiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0czxmbG9hdD4gOiBwdWJsaWMgTm9uY29weWFibGUgeworc3RydWN0IERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGZsb2F0PiA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CiAgICAgdHlwZWRlZiBjb25zdCBmbG9hdCYgUGFzc1R5cGU7CiAgICAgdHlwZWRlZiBmbG9h
dCBSZXR1cm5UeXBlOwogICAgIHR5cGVkZWYgZmxvYXQgU3RvcmVkVHlwZTsKQEAgLTEyMiw3ICsx
MjIsNyBAQCBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxmbG9hdD4gCiAKIC8vIFNW
R0FuaW1hdGVkTnVtYmVyTGlzdAogdGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVy
dHlUcmFpdHM8U1ZHTnVtYmVyTGlzdCo+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3N0cnVjdCBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdOdW1iZXJMaXN0Kj4gOiBwdWJs
aWMgTm9uY29weWFibGUgewogICAgIHR5cGVkZWYgU1ZHTnVtYmVyTGlzdCogUGFzc1R5cGU7CiAg
ICAgdHlwZWRlZiBTVkdOdW1iZXJMaXN0KiBSZXR1cm5UeXBlOwogICAgIHR5cGVkZWYgUmVmUHRy
PFNWR051bWJlckxpc3Q+IFN0b3JlZFR5cGU7CkBAIC0xMzQsNyArMTM0LDcgQEAgc3RydWN0IFNW
R0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHTnVtYgogCiAvLyBTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8KIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
PFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3N0cnVjdCBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
PiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgdHlwZWRlZiBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvJiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8g
UmV0dXJuVHlwZTsKICAgICB0eXBlZGVmIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gU3RvcmVkVHlw
ZTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxT
VkdQcmVzCiAKIC8vIFNWR0FuaW1hdGVkUmVjdAogdGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1h
dGVkUHJvcGVydHlUcmFpdHM8RmxvYXRSZWN0PiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitzdHJ1
Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8RmxvYXRSZWN0PiA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CiAgICAgdHlwZWRlZiBjb25zdCBGbG9hdFJlY3QmIFBhc3NUeXBlOwog
ICAgIHR5cGVkZWYgRmxvYXRSZWN0IFJldHVyblR5cGU7CiAgICAgdHlwZWRlZiBGbG9hdFJlY3Qg
U3RvcmVkVHlwZTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRyYWl0czxGbG9hdFJlCiAKIC8vIFNWR0FuaW1hdGVkU3RyaW5nCiB0ZW1wbGF0ZTw+Ci1zdHJ1
Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTdHJpbmc+IDogcHVibGljIE5vbmNvcHlhYmxl
IHsKK3N0cnVjdCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTdHJpbmc+IDog
cHVibGljIE5vbmNvcHlhYmxlIHsKICAgICB0eXBlZGVmIGNvbnN0IFN0cmluZyYgUGFzc1R5cGU7
CiAgICAgdHlwZWRlZiBTdHJpbmcgUmV0dXJuVHlwZTsKICAgICB0eXBlZGVmIFN0cmluZyBTdG9y
ZWRUeXBlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPFN0cmluZz4KIAogLy8gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0CiB0ZW1wbGF0ZTw+Ci1z
dHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0Kj4gOiBwdWJs
aWMgTm9uY29weWFibGUgeworc3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPFNWR1RyYW5zZm9ybUxpc3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgdHlwZWRl
ZiBTVkdUcmFuc2Zvcm1MaXN0KiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIFNWR1RyYW5zZm9ybUxp
c3QqIFJldHVyblR5cGU7CiAgICAgdHlwZWRlZiBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4gU3Rv
cmVkVHlwZTsKSW5kZXg6IFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxh
dGUuaAkocmV2aXNpb24gNzAwNTcpCShmcm9tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxh
dGUuaDo3MDA1NykKKysrIFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBTVkdBbmltYXRlZFRlbXBsYXRlX2gKKyNkZWZpbmUgU1ZHQW5pbWF0
ZWRUZW1wbGF0ZV9oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJv
cGVydHlUcmFpdHMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgIAorICAgIGNsYXNzIFNWR0FuZ2xl
OworICAgIGNsYXNzIFNWR0VsZW1lbnQ7CisgICAgY2xhc3MgU1ZHTGVuZ3RoTGlzdDsKKyAgICBj
bGFzcyBTVkdOdW1iZXJMaXN0OworICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW87Cisg
ICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKKyAgICBjbGFzcyBRdWFsaWZpZWROYW1lOworCisg
ICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkgeyAgICAgICAgICAgIAorICAgICAg
ICAvLyBFbXB0eSB2YWx1ZQorICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KCkKKyAg
ICAgICAgICAgIDogZWxlbWVudCgwKQorICAgICAgICAgICAgLCBhdHRyaWJ1dGVOYW1lKDApCisg
ICAgICAgIHsgfQorCisgICAgICAgIC8vIERlbGV0ZWQgdmFsdWUKKyAgICAgICAgU1ZHQW5pbWF0
ZWRUeXBlV3JhcHBlcktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
ICAgICA6IGVsZW1lbnQocmVpbnRlcnByZXRfY2FzdDxTVkdFbGVtZW50Kj4oLTEpKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT0gcmVpbnRlcnBy
ZXRfY2FzdDxTVkdFbGVtZW50Kj4oLTEpOworICAgICAgICB9CisKKyAgICAgICAgU1ZHQW5pbWF0
ZWRUeXBlV3JhcHBlcktleShjb25zdCBTVkdFbGVtZW50KiBfZWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBfYXR0cmlidXRlTmFtZSkKKyAgICAgICAgICAgIDogZWxlbWVudChfZWxlbWVudCkK
KyAgICAgICAgICAgICwgYXR0cmlidXRlTmFtZShfYXR0cmlidXRlTmFtZS5pbXBsKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChh
dHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT0gb3RoZXIuZWxlbWVudCAmJiBhdHRyaWJ1dGVOYW1l
ID09IG90aGVyLmF0dHJpYnV0ZU5hbWU7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBTVkdF
bGVtZW50KiBlbGVtZW50OworICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdHRyaWJ1dGVOYW1l
OworICAgIH07CisgICAgCisgICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNo
IHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3Jh
cHBlcktleSYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6
Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KCZrZXkpLCBzaXplb2Yo
U1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSkgLyBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJL
ZXkmIGEsIGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIGIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBhID09IGI7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29u
c3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CisgICAgfTsKKwor
ICAgIHN0cnVjdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaFRyYWl0cyA6IFdURjo6R2Vu
ZXJpY0hhc2hUcmFpdHM8U1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleT4geworICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKworICAgICAgICBzdGF0aWMg
dm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgc2xv
dCkKKyAgICAgICAgeworICAgICAgICAgICAgbmV3ICgmc2xvdCkgU1ZHQW5pbWF0ZWRUeXBlV3Jh
cHBlcktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7CisgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVy
S2V5JiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7CisgICAgICAgIH0KKyAgICB9OworIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEFuaW1hdGVkVHlwZT4KKyAgICBjbGFzcyBTVkdBbmltYXRlZFRlbXBsYXRlIDogcHVi
bGljIFJlZkNvdW50ZWQ8U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxBbmltYXRlZFR5cGU+ID4geworICAg
IHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIFBhc3NUeXBlOworICAgICAgICB0eXBlZGVmIHR5
cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlw
ZSBSZXR1cm5UeXBlOworCisgICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkVGVtcGxhdGUoKSB7
IGZvcmdldFdyYXBwZXIodGhpcyk7IH0KKworICAgICAgICB2aXJ0dWFsIFJldHVyblR5cGUgYmFz
ZVZhbCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEJhc2VWYWwoUGFzc1R5
cGUpID0gMDsKKworICAgICAgICB2aXJ0dWFsIFJldHVyblR5cGUgYW5pbVZhbCgpIGNvbnN0ID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoUGFzc1R5cGUpID0gMDsKKworICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1l
KCkgY29uc3QgPSAwOworCisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTVkdBbmltYXRlZFR5cGVX
cmFwcGVyS2V5LCBTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4qLCBTVkdBbmltYXRl
ZFR5cGVXcmFwcGVyS2V5SGFzaCwgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2hUcmFpdHMg
PiBFbGVtZW50VG9XcmFwcGVyTWFwOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEVsZW1lbnRU
b1dyYXBwZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVyYXRvcjsK
KworICAgICAgICBzdGF0aWMgRWxlbWVudFRvV3JhcHBlck1hcCogd3JhcHBlckNhY2hlKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIEVsZW1lbnRUb1dyYXBwZXJNYXAqIHNfd3JhcHBl
ckNhY2hlID0gbmV3IEVsZW1lbnRUb1dyYXBwZXJNYXA7ICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgcmV0dXJuIHNfd3JhcHBlckNhY2hlOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGlj
IHZvaWQgZm9yZ2V0V3JhcHBlcihTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4qIHdy
YXBwZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXAqIGNhY2hl
ID0gd3JhcHBlckNhY2hlKCk7CisgICAgICAgICAgICBFbGVtZW50VG9XcmFwcGVyTWFwSXRlcmF0
b3IgaXRyID0gY2FjaGUtPmJlZ2luKCk7CisgICAgICAgICAgICBFbGVtZW50VG9XcmFwcGVyTWFw
SXRlcmF0b3IgZW5kID0gY2FjaGUtPmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ciAhPSBl
bmQ7ICsraXRyKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ci0+c2Vjb25kID09IHdyYXBwZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FjaGUtPnJlbW92ZShpdHItPmZpcnN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZT4K
KyAgICBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
QW5pbWF0ZWRUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFRlYXJPZmY+CisgICAgUGFzc1JlZlB0cjxB
bmltYXRlZFRlYXJPZmY+IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50
LCBTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4mIGNyZWF0b3IsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQorICAgIHsKKyAgICAgICAgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBl
cktleSBrZXkoZWxlbWVudCwgYXR0ck5hbWUubG9jYWxOYW1lKCkpOworICAgICAgICBSZWZQdHI8
QW5pbWF0ZWRUZWFyT2ZmPiB3cmFwcGVyID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRUZWFyT2ZmKj4o
QW5pbWF0ZWRUZWFyT2ZmOjp3cmFwcGVyQ2FjaGUoKS0+Z2V0KGtleSkpOworCisgICAgICAgIGlm
ICghd3JhcHBlcikgeworICAgICAgICAgICAgd3JhcHBlciA9IEFuaW1hdGVkVGVhck9mZjo6Y3Jl
YXRlKGNyZWF0b3IsIGVsZW1lbnQpOworICAgICAgICAgICAgQW5pbWF0ZWRUZWFyT2ZmOjp3cmFw
cGVyQ2FjaGUoKS0+c2V0KGtleSwgd3JhcHBlci5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gd3JhcHBlci5yZWxlYXNlKCk7CisgICAgfQorCisgICAgLy8gQ29tbW9uIHR5cGUg
ZGVmaW5pdGlvbnMsIHRvIGVhc2UgSURMIGdlbmVyYXRpb24uCisgICAgdHlwZWRlZiBTVkdBbmlt
YXRlZFRlbXBsYXRlPFNWR0FuZ2xlPiBTVkdBbmltYXRlZEFuZ2xlOworICAgIHR5cGVkZWYgU1ZH
QW5pbWF0ZWRUZW1wbGF0ZTxib29sPiBTVkdBbmltYXRlZEJvb2xlYW47CisgICAgdHlwZWRlZiBT
VkdBbmltYXRlZFRlbXBsYXRlPGludD4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjsKKyAgICB0eXBl
ZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8bG9uZz4gU1ZHQW5pbWF0ZWRJbnRlZ2VyOworICAgIHR5
cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdMZW5ndGg+IFNWR0FuaW1hdGVkTGVuZ3RoOwor
ICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdMZW5ndGhMaXN0Kj4gU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0OworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxmbG9hdD4gU1ZH
QW5pbWF0ZWROdW1iZXI7CisgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR051bWJl
ckxpc3QqPiBTVkdBbmltYXRlZE51bWJlckxpc3Q7IAorICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZTxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW87CisgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPEZsb2F0UmVjdD4gU1ZHQW5p
bWF0ZWRSZWN0OworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTdHJpbmc+IFNWR0Fu
aW1hdGVkU3RyaW5nOworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdUcmFuc2Zv
cm1MaXN0Kj4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OworCit9CisKKyNlbmRpZgorI2VuZGlm
CkluZGV4OiBXZWJDb3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmgJKHJl
dmlzaW9uIDcwMDU3KQorKysgV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTEgKzE4LDExIEBACiAgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGVfaAotI2Rl
ZmluZSBTVkdBbmltYXRlZFRlbXBsYXRlX2gKKyNpZm5kZWYgRGVwcmVjYXRlZFNWR0FuaW1hdGVk
VGVtcGxhdGVfaAorI2RlZmluZSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZV9oCiAKICNp
ZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCIKKyNp
bmNsdWRlICJEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzYsMTUgKzM2
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0Owog
ICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7CiAKLSAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlV3Jh
cHBlcktleSB7ICAgICAgICAgICAgCisgICAgc3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5
cGVXcmFwcGVyS2V5IHsgICAgICAgICAgICAKICAgICAgICAgLy8gRW1wdHkgdmFsdWUKLSAgICAg
ICAgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSgpCisgICAgICAgIERlcHJlY2F0ZWRTVkdBbmlt
YXRlZFR5cGVXcmFwcGVyS2V5KCkKICAgICAgICAgICAgIDogZWxlbWVudCgwKQogICAgICAgICAg
ICAgLCBhdHRyaWJ1dGVOYW1lKDApCiAgICAgICAgIHsgfQogCiAgICAgICAgIC8vIERlbGV0ZWQg
dmFsdWUKLSAgICAgICAgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleShXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVy
S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKICAgICAgICAgICAgIDogZWxlbWVu
dChyZWludGVycHJldF9jYXN0PFNWR0VsZW1lbnQqPigtMSkpCiAgICAgICAgIHsKICAgICAgICAg
fQpAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1
cm4gZWxlbWVudCA9PSByZWludGVycHJldF9jYXN0PFNWR0VsZW1lbnQqPigtMSk7CiAgICAgICAg
IH0KIAotICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KGNvbnN0IFNWR0VsZW1lbnQq
IF9lbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIF9hdHRyaWJ1dGVOYW1lKQorICAgICAgICBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleShjb25zdCBTVkdFbGVtZW50KiBfZWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBfYXR0cmlidXRlTmFtZSkKICAgICAgICAgICAgIDog
ZWxlbWVudChfZWxlbWVudCkKICAgICAgICAgICAgICwgYXR0cmlidXRlTmFtZShfYXR0cmlidXRl
TmFtZS5pbXBsKCkpCiAgICAgICAgIHsKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZU5hbWUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIG90
aGVyKSBjb25zdAorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkVHlwZVdyYXBwZXJLZXkmIG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudCA9PSBvdGhlci5lbGVtZW50ICYmIGF0dHJpYnV0ZU5hbWUgPT0gb3Ro
ZXIuYXR0cmlidXRlTmFtZTsKICAgICAgICAgfQpAQCAtNzEsMTMgKzcxLDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogYXR0cmlidXRlTmFtZTsKICAg
ICB9OwogICAgIAotICAgIHN0cnVjdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaCB7Ci0g
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJL
ZXkmIGtleSkKKyAgICBzdHJ1Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlI
YXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkVHlwZVdyYXBwZXJLZXkmIGtleSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPigm
a2V5KSwgc2l6ZW9mKFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkpIC8gc2l6ZW9mKFVDaGFyKSk7
CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVQ2hhcio+KCZrZXkpLCBzaXplb2YoRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlw
ZVdyYXBwZXJLZXkpIC8gc2l6ZW9mKFVDaGFyKSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBhLCBjb25zdCBT
VkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBiKQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgYSwgY29uc3QgRGVwcmVj
YXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIGIpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBhID09IGI7CiAgICAgICAgIH0KQEAgLTg1LDI3ICs4NSwyNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gdHJ1ZTsKICAgICB9OwogCi0gICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVdy
YXBwZXJLZXlIYXNoVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxTVkdBbmltYXRlZFR5
cGVXcmFwcGVyS2V5PiB7CisgICAgc3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFw
cGVyS2V5SGFzaFRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8RGVwcmVjYXRlZFNWR0Fu
aW1hdGVkVHlwZVdyYXBwZXJLZXk+IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IHRydWU7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIHNsb3QpCisgICAgICAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBl
cktleSYgc2xvdCkKICAgICAgICAgewotICAgICAgICAgICAgbmV3ICgmc2xvdCkgU1ZHQW5pbWF0
ZWRUeXBlV3JhcHBlcktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7CisgICAgICAgICAg
ICBuZXcgKCZzbG90KSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleShXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgYm9vbCBp
c0RlbGV0ZWRWYWx1ZShjb25zdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiB2YWx1ZSkKKyAg
ICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRGVwcmVjYXRlZFNWR0FuaW1h
dGVkVHlwZVdyYXBwZXJLZXkmIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
dmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKICAgICAgICAgfQogICAgIH07CiAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgotICAgIGNsYXNzIFNWR0FuaW1hdGVk
VGVtcGxhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVk
VHlwZT4gPiB7CisgICAgY2xhc3MgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxBbmltYXRlZFR5cGU+
ID4gewogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIFBhc3NUeXBlOwotICAgICAgICB0
eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6
UmV0dXJuVHlwZSBSZXR1cm5UeXBlOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIERlcHJlY2F0
ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIFBhc3NU
eXBlOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUgUmV0dXJuVHlwZTsKIAotICAgICAg
ICB2aXJ0dWFsIH5TVkdBbmltYXRlZFRlbXBsYXRlKCkgeyBmb3JnZXRXcmFwcGVyKHRoaXMpOyB9
CisgICAgICAgIHZpcnR1YWwgfkRlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlKCkgeyBmb3Jn
ZXRXcmFwcGVyKHRoaXMpOyB9CiAKICAgICAgICAgdmlydHVhbCBSZXR1cm5UeXBlIGJhc2VWYWwo
KSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRCYXNlVmFsKFBhc3NUeXBlKSA9
IDA7CkBAIC0xMTUsNyArMTE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZp
cnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25z
dCA9IDA7CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJL
ZXksIFNWR0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiosIFNWR0FuaW1hdGVkVHlwZVdy
YXBwZXJLZXlIYXNoLCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaFRyYWl0cyA+IEVsZW1l
bnRUb1dyYXBwZXJNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxEZXByZWNhdGVkU1ZHQW5p
bWF0ZWRUeXBlV3JhcHBlcktleSwgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0
ZWRUeXBlPiosIERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaCwgRGVwcmVj
YXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoVHJhaXRzID4gRWxlbWVudFRvV3JhcHBl
ck1hcDsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBFbGVtZW50VG9XcmFwcGVyTWFwOjpjb25z
dF9pdGVyYXRvciBFbGVtZW50VG9XcmFwcGVyTWFwSXRlcmF0b3I7CiAKICAgICAgICAgc3RhdGlj
IEVsZW1lbnRUb1dyYXBwZXJNYXAqIHdyYXBwZXJDYWNoZSgpCkBAIC0xMjQsNyArMTI0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIHNfd3JhcHBlckNhY2hlOwog
ICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgZm9yZ2V0V3JhcHBlcihTVkdBbmltYXRl
ZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4qIHdyYXBwZXIpCisgICAgICAgIHN0YXRpYyB2b2lkIGZv
cmdldFdyYXBwZXIoRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiog
d3JhcHBlcikKICAgICAgICAgewogICAgICAgICAgICAgRWxlbWVudFRvV3JhcHBlck1hcCogY2Fj
aGUgPSB3cmFwcGVyQ2FjaGUoKTsKICAgICAgICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVy
YXRvciBpdHIgPSBjYWNoZS0+YmVnaW4oKTsKQEAgLTEzOSwxMiArMTM5LDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBl
PgotICAgIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CisgICAgY2xhc3MgRGVwcmVjYXRlZFNW
R0FuaW1hdGVkUHJvcGVydHk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGUs
IHR5cGVuYW1lIEFuaW1hdGVkVGVhck9mZj4KLSAgICBQYXNzUmVmUHRyPEFuaW1hdGVkVGVhck9m
Zj4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIFNWR0FuaW1hdGVk
UHJvcGVydHk8QW5pbWF0ZWRUeXBlPiYgY3JlYXRvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCisgICAgUGFzc1JlZlB0cjxBbmltYXRlZFRlYXJPZmY+IGxvb2t1cE9yQ3JlYXRlV3Jh
cHBlcihTVkdFbGVtZW50KiBlbGVtZW50LCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxB
bmltYXRlZFR5cGU+JiBjcmVhdG9yLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAg
ICB7Ci0gICAgICAgIFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkga2V5KGVsZW1lbnQsIGF0dHJO
YW1lLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBw
ZXJLZXkga2V5KGVsZW1lbnQsIGF0dHJOYW1lLmxvY2FsTmFtZSgpKTsKICAgICAgICAgUmVmUHRy
PEFuaW1hdGVkVGVhck9mZj4gd3JhcHBlciA9IHN0YXRpY19jYXN0PEFuaW1hdGVkVGVhck9mZio+
KEFuaW1hdGVkVGVhck9mZjo6d3JhcHBlckNhY2hlKCktPmdldChrZXkpKTsKIAogICAgICAgICBp
ZiAoIXdyYXBwZXIpIHsKQEAgLTE1NiwxOCArMTU2LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICB9CiAKICAgICAvLyBDb21tb24gdHlwZSBkZWZpbml0aW9ucywgdG8gZWFzZSBJREwgZ2Vu
ZXJhdGlvbi4KLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHQW5nbGU+IFNWR0Fu
aW1hdGVkQW5nbGU7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGJvb2w+IFNWR0Fu
aW1hdGVkQm9vbGVhbjsKLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8aW50PiBTVkdB
bmltYXRlZEVudW1lcmF0aW9uOwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxsb25n
PiBTVkdBbmltYXRlZEludGVnZXI7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNW
R0xlbmd0aD4gU1ZHQW5pbWF0ZWRMZW5ndGg7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBs
YXRlPFNWR0xlbmd0aExpc3QqPiBTVkdBbmltYXRlZExlbmd0aExpc3Q7Ci0gICAgdHlwZWRlZiBT
VkdBbmltYXRlZFRlbXBsYXRlPGZsb2F0PiBTVkdBbmltYXRlZE51bWJlcjsKLSAgICB0eXBlZGVm
IFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTnVtYmVyTGlzdCo+IFNWR0FuaW1hdGVkTnVtYmVyTGlz
dDsgCi0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8+IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzsKLSAgICB0eXBlZGVmIFNWR0FuaW1h
dGVkVGVtcGxhdGU8RmxvYXRSZWN0PiBTVkdBbmltYXRlZFJlY3Q7Ci0gICAgdHlwZWRlZiBTVkdB
bmltYXRlZFRlbXBsYXRlPFN0cmluZz4gU1ZHQW5pbWF0ZWRTdHJpbmc7Ci0gICAgdHlwZWRlZiBT
VkdBbmltYXRlZFRlbXBsYXRlPFNWR1RyYW5zZm9ybUxpc3QqPiBTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3Q7CisgICAgdHlwZWRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdBbmds
ZT4gU1ZHQW5pbWF0ZWRBbmdsZTsKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRl
bXBsYXRlPGJvb2w+IFNWR0FuaW1hdGVkQm9vbGVhbjsKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRT
VkdBbmltYXRlZFRlbXBsYXRlPGludD4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjsKKyAgICB0eXBl
ZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlPGxvbmc+IFNWR0FuaW1hdGVkSW50ZWdl
cjsKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlPFNWR0xlbmd0aD4g
U1ZHQW5pbWF0ZWRMZW5ndGg7CisgICAgdHlwZWRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1w
bGF0ZTxTVkdMZW5ndGhMaXN0Kj4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OworICAgIHR5cGVkZWYg
RGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8ZmxvYXQ+IFNWR0FuaW1hdGVkTnVtYmVyOwor
ICAgIHR5cGVkZWYgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTnVtYmVyTGlzdCo+
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdDsgCisgICAgdHlwZWRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0
ZWRUZW1wbGF0ZTxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiBTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW87CisgICAgdHlwZWRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxGbG9h
dFJlY3Q+IFNWR0FuaW1hdGVkUmVjdDsKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFRlbXBsYXRlPFN0cmluZz4gU1ZHQW5pbWF0ZWRTdHJpbmc7CisgICAgdHlwZWRlZiBEZXByZWNh
dGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdUcmFuc2Zvcm1MaXN0Kj4gU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0OwogCiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHJldmlz
aW9uIDcwMDU3KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDIxNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eV9oCi0jZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlf
aAotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1
ZGUgIlNWR0FuaW1hdGVkVGVtcGxhdGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+Ci1jbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5Owot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+Ci1jbGFzcyBTVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZiA6IHB1YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4gewot
cHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxB
bmltYXRlZFR5cGU+OjpQYXNzVHlwZSBQYXNzVHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNW
R0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBSZXR1cm5U
eXBlOwotCi0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxBbmltYXRlZFR5
cGU+IFNlbGY7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4g
Q3JlYXRvcjsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlbGY+IGNyZWF0ZShDcmVhdG9yJiBj
cmVhdG9yLCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VsZihjcmVhdG9yLCBjb250ZXh0RWxlbWVudCkpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRCYXNlVmFsKFBhc3NUeXBlIHR5cGUpCi0gICAgewotICAgICAg
ICBtX2NyZWF0b3Iuc2V0QmFzZVZhbHVlKHR5cGUpOwotICAgICAgICBtX2NvbnRleHRFbGVtZW50
LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRBbmltVmFsKFBhc3NUeXBlIHR5cGUpCi0gICAgewotICAgICAgICBtX2NyZWF0b3Iuc2V0VmFs
dWUodHlwZSk7Ci0gICAgICAgIG1fY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1
dGVzKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBSZXR1cm5UeXBlIGJhc2VWYWwoKSBjb25zdCB7
IHJldHVybiBtX2NyZWF0b3IuYmFzZVZhbHVlKCk7IH0KLSAgICB2aXJ0dWFsIFJldHVyblR5cGUg
YW5pbVZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRvci52YWx1ZSgpOyB9Ci0gICAgdmlydHVh
bCBjb25zdCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3JlYXRvci5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYoQ3JlYXRvciYgY3JlYXRvciwgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQpCi0gICAgICAgIDogbV9jcmVhdG9yKGNyZWF0b3IpCi0gICAg
ICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKLSAgICB7Ci0gICAgICAgIG1f
Y3JlYXRvci5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZigpCi0gICAgewotICAgICAgICBtX2NyZWF0b3Iu
c2V0U2hvdWxkU3luY2hyb25pemUoZmFsc2UpOwotICAgIH0KLQotICAgIENyZWF0b3ImIG1fY3Jl
YXRvcjsKLSAgICBSZWZQdHI8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxlbWVudDsKLX07Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZT4KLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHkg
ewotcHVibGljOgotICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkUHJvcGVydHkoKSB7IH0KLQotICAg
IHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+
OjpQYXNzVHlwZSBQYXNzVHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJv
cGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBSZXR1cm5UeXBlOwotICAgIHR5
cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpT
dG9yZWRUeXBlIFN0b3JlZFR5cGU7Ci0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KCkKLSAgICAg
ICAgOiBtX3ZhbHVlKFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6bnVs
bCgpKQotICAgICAgICAsIG1fc2hvdWxkU3luY2hyb25pemUoZmFsc2UpCi0gICAgewotICAgIH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyT25lPgotICAgIFNW
R0FuaW1hdGVkUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSkK
LSAgICAgICAgOiBtX3ZhbHVlKHZhbHVlMSkKLSAgICAgICAgLCBtX3Nob3VsZFN5bmNocm9uaXpl
KGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25zdHJ1Y3Rv
clBhcmFtZXRlck9uZSwgdHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28+Ci0gICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxLCBj
b25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlclR3byYgdmFsdWUyKQotICAgICAgICA6IG1fdmFsdWUo
dmFsdWUxLCB2YWx1ZTIpCi0gICAgICAgICwgbV9zaG91bGRTeW5jaHJvbml6ZShmYWxzZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgUmV0dXJuVHlwZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNWR0Fu
aW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6dG9SZXR1cm5UeXBlKG1fdmFsdWUp
OyB9Ci0gICAgUmV0dXJuVHlwZSBiYXNlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OnRvUmV0dXJuVHlwZShtX3ZhbHVlKTsgfQot
Ci0gICAgdm9pZCBzZXRWYWx1ZShQYXNzVHlwZSB0eXBlKSB7IG1fdmFsdWUgPSB0eXBlOyB9Ci0g
ICAgdm9pZCBzZXRCYXNlVmFsdWUoUGFzc1R5cGUgdHlwZSkgeyBtX3ZhbHVlID0gdHlwZTsgfQot
Ci0gICAgYm9vbCBzaG91bGRTeW5jaHJvbml6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3lu
Y2hyb25pemU7IH0KLSAgICB2b2lkIHNldFNob3VsZFN5bmNocm9uaXplKGJvb2wgdmFsdWUpIHsg
bV9zaG91bGRTeW5jaHJvbml6ZSA9IHZhbHVlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgU3RvcmVkVHlwZSBtX3ZhbHVlOwotICAgIGJvb2wgbV9zaG91bGRTeW5jaHJvbml6
ZTsKLX07Ci0KLX07Ci0KLS8vIEhlbHBlciBtYWNybyB1c2VkIHdpdGhpbiBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZIGJlbG93Ci0jZGVmaW5lIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25l
clR5cGUsIERPTUF0dHJpYnV0ZSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5KSBcCi1jbGFz
cyBTVkdBbmltYXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHk8QW5pbWF0ZWRUeXBlPiB7IFwKLXB1YmxpYzogXAotICAgIFNWR0FuaW1hdGVkUHJv
cGVydHkjI1VwcGVyUHJvcGVydHkoKSBcCi0gICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxB
bmltYXRlZFR5cGU+KCkgXAotICAgIHsgXAotICAgIH0gXAotICAgIFwKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZT4gXAotICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHkjI1VwcGVyUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSkg
XAotICAgICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPih2YWx1ZTEpIFwK
LSAgICB7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0
b3JQYXJhbWV0ZXJPbmUsIHR5cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyVHdvPiBcCi0gICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFt
ZXRlck9uZSYgdmFsdWUxLCBjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlclR3byYgdmFsdWUyKSBc
Ci0gICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+KHZhbHVlMSwgdmFs
dWUyKSBcCi0gICAgeyBcCi0gICAgfSBcCi0gICAgXAotICAgIHZvaWQgc3luY2hyb25pemUoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJUKG1fc2hv
dWxkU3luY2hyb25pemUpOyBcCi0gICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZShTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OnRvU3RyaW5nKGJhc2VWYWx1ZSgpKSk7IFwK
LSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjxJc0Rlcml2ZWRGcm9tU1ZH
RWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50LCBE
T01BdHRyaWJ1dGUsIHZhbHVlKTsgXAotICAgIH0gXAotICAgIFwKLSAgICB2aXJ0dWFsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgXAotICAgIHsg
XAotICAgICAgICByZXR1cm4gRE9NQXR0cmlidXRlOyBcCi0gICAgfSBcCi19Ci0KLS8vIEhlbHBl
ciBtYWNybyBzaGFyZWQgYnkgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWSAvIERFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlMKLSNkZWZpbmUgREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWV9TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0
ZUlkZW50aWZpZXIsIEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkg
XAotcHJpdmF0ZTogXAotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8QW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eTsgXAot
ICAgIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgQW5p
bWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5KTsgXAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1Vw
cGVyUHJvcGVydHkgbV8jI0xvd2VyUHJvcGVydHk7IFwKLSAgICBcCi1wdWJsaWM6IFwKLSAgICBT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUgTG93ZXJQ
cm9wZXJ0eSgpIGNvbnN0IFwKLSAgICB7IFwKLSAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3Bl
cnR5LnZhbHVlKCk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRy
YWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgp
IGNvbnN0IFwKLSAgICB7IFwKLSAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LmJhc2VW
YWx1ZSgpOyBcCi0gICAgfSBcCi0gICAgXAotICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5KFNW
R0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgdHlwZSkgXAot
ICAgIHsgXAotICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRWYWx1ZSh0eXBlKTsgXAotICAg
ICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8
T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93
bmVyRWxlbWVudCh0aGlzKTsgXAotICAgICAgICBjb250ZXh0RWxlbWVudC0+aW52YWxpZGF0ZVNW
R0F0dHJpYnV0ZXMoKTsgXAotICAgIH0gXAotICAgIFwKLSAgICB2b2lkIHNldCMjVXBwZXJQcm9w
ZXJ0eSMjQmFzZVZhbHVlKFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6
UGFzc1R5cGUgdHlwZSkgXAotICAgIHsgXAotICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRC
YXNlVmFsdWUodHlwZSk7IFwKLSAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBH
ZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8
T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICAgICAgY29udGV4
dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7IFwKLSAgICB9IFwKLSAgICBcCi0g
ICAgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpIFwKLSAgICB7IFwKLSAgICAgICAg
aWYgKCFtXyMjTG93ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSgpKSBcCi0gICAgICAgICAg
ICByZXR1cm47IFwKLSAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25l
ckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJU
eXBlPjo6dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICAgICAgbV8jI0xvd2VyUHJv
cGVydHkuc3luY2hyb25pemUoY29udGV4dEVsZW1lbnQpOyBcCi0gICAgfSBcCi0gICAgXAotICAg
IFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYjI1VwcGVyUHJvcGVydHk+IExv
d2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgXAotICAgIHsgXAotICAgICAgICBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2
ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsg
XAotICAgICAgICByZXR1cm4gbG9va3VwT3JDcmVhdGVXcmFwcGVyPEFuaW1hdGVkVHlwZSwgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYjI1VwcGVyUHJvcGVydHk+KGNvbnRleHRFbGVtZW50LCBt
XyMjTG93ZXJQcm9wZXJ0eSwgRE9NQXR0cmlidXRlKTsgXAotICAgIH0KLQotLy8gVXNlZCBmb3Ig
U1ZHIERPTSBwcm9wZXJ0aWVzIHRoYXQgbWFwIGV4YWN0bHkgdG8gb25lIFhNTCBET00gYXR0cmli
dXRlCi0jZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRy
aWJ1dGUsIEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWV9TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERP
TUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dl
clByb3BlcnR5KQotCi0vLyBVc2VkIGZvciB0aGUgcmFyZSBjYXNlIG11bHRpcGxlIFNWRyBET00g
cHJvcGVydGllcyB0aGF0IG1hcCB0byB0aGUgc2FtZSBYTUwgZG9tIGF0dHJpYnV0ZQotI2RlZmlu
ZSBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBBbmltYXRlZFR5cGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlf
U0hBUkVEKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVy
LCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0KLSNlbmRpZgot
I2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9u
aXplci5oCShyZXZpc2lvbiA3MDA1NykKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw5NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXJfaAotI2Rl
ZmluZSBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyX2gKLQotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkUHJvcGVydHlUcmFpdHMuaCIKLQotI2lmIEVOQUJMRShTVkcpCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFNWR0VsZW1lbnQ7Ci0KLS8vIEdldE93bmVyRWxlbWVudEZvclR5cGUg
aW1wbGVtZW50YXRpb24KLXRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgYm9vbCBpc0Rlcml2
ZWRGcm9tU1ZHRWxlbWVudD4KLXN0cnVjdCBHZXRPd25lckVsZW1lbnRGb3JUeXBlOwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci1zdHJ1Y3QgR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxP
d25lclR5cGUsIHRydWU+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICBzdGF0aWMgU1ZHRWxl
bWVudCogb3duZXJFbGVtZW50KE93bmVyVHlwZSogdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0eXBlOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KLXN0cnVj
dCBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgZmFsc2U+IDogcHVibGljIE5vbmNv
cHlhYmxlIHsgICAgCi0gICAgc3RhdGljIFNWR0VsZW1lbnQqIG93bmVyRWxlbWVudChPd25lclR5
cGUqIHR5cGUpCi0gICAgewotICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0ID0gdHlwZS0+Y29u
dGV4dEVsZW1lbnQoKTsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgICAgICByZXR1cm4g
Y29udGV4dDsKLSAgICB9Ci19OwotCi0vLyBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudCBpbXBsZW1l
bnRhdGlvbgotdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgotc3RydWN0IElzRGVyaXZlZEZy
b21TVkdFbGVtZW50IDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICBzdGF0aWMgY29uc3QgYm9v
bCB2YWx1ZSA9IHRydWU7Ci19OwotCi1jbGFzcyBTVkdWaWV3U3BlYzsKLXRlbXBsYXRlPD4KLXN0
cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxTVkdWaWV3U3BlYz4gOiBwdWJsaWMgTm9uY29w
eWFibGUgewotICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7Ci19OwotCi0vLyBI
ZWxwZXIgdGVtcGxhdGUgdXNlZCBmb3Igc3luY2hyb25pemluZyBTVkcgPC0+IFhNTCBwcm9wZXJ0
aWVzCi10ZW1wbGF0ZTxib29sIGlzRGVyaXZlZEZyb21TVkdFbGVtZW50Pgotc3RydWN0IFNWR0Fu
aW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIgewotICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXpl
KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7
Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjx0cnVlPiB7Ci0gICAgc3RhdGljIHZvaWQgc3luY2hyb25pemUoU1ZHRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIE5hbWVkTm9kZU1hcCogbmFtZWRBdHRyTWFwID0gb3du
ZXJFbGVtZW50LT5hdHRyaWJ1dGVzKGZhbHNlKTsgCi0gICAgICAgIEF0dHJpYnV0ZSogb2xkID0g
bmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJOYW1lKTsKLSAgICAgICAgaWYgKG9s
ZCAmJiB2YWx1ZS5pc051bGwoKSkgCi0gICAgICAgICAgICBuYW1lZEF0dHJNYXAtPnJlbW92ZUF0
dHJpYnV0ZShvbGQtPm5hbWUoKSk7IAotICAgICAgICBlbHNlIGlmICghb2xkICYmICF2YWx1ZS5p
c051bGwoKSkgCi0gICAgICAgICAgICBuYW1lZEF0dHJNYXAtPmFkZEF0dHJpYnV0ZShvd25lckVs
ZW1lbnQtPmNyZWF0ZUF0dHJpYnV0ZShhdHRyTmFtZSwgdmFsdWUpKTsKLSAgICAgICAgZWxzZSBp
ZiAob2xkICYmICF2YWx1ZS5pc051bGwoKSkgCi0gICAgICAgICAgICBvbGQtPnNldFZhbHVlKHZh
bHVlKTsgCi0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXI8ZmFsc2U+IHsKLSAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZShTVkdF
bGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpCi0gICAg
ewotICAgICAgICAvLyBuby1vcCwgZm9yIHR5cGVzIG5vdCBpbmhlcml0aW5nIGZyb20gRWxlbWVu
dCwgdGh1cyBub3RoaW5nIHRvIHN5bmNocm9uaXplCi0gICAgfQotfTsKLQotfTsKLQotI2VuZGlm
Ci0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgJKHJl
dmlzaW9uIDcwMDU3KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFp
dHNfaAotI2RlZmluZSBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzX2gKLQotI2lmIEVOQUJMRShT
VkcpCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
LSNpbmNsdWRlICJTVkdBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUg
IlNWR0xlbmd0aExpc3QuaCIKLSNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCi0jaW5jbHVkZSAi
U1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotc3RydWN0
IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMgOiBwdWJsaWMgTm9uY29weWFibGUgeyB9OwotCi0v
LyBTVkdBbmltYXRlZEFuZ2xlCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRyYWl0czxTVkdBbmdsZT4gOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHR5cGVkZWYgY29u
c3QgU1ZHQW5nbGUmIFBhc3NUeXBlOwotICAgIHR5cGVkZWYgU1ZHQW5nbGUgUmV0dXJuVHlwZTsK
LSAgICB0eXBlZGVmIFNWR0FuZ2xlIFN0b3JlZFR5cGU7Ci0KLSAgICBzdGF0aWMgUmV0dXJuVHlw
ZSBudWxsKCkgeyByZXR1cm4gU1ZHQW5nbGUoKTsgfQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRv
UmV0dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9Ci0gICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVl
QXNTdHJpbmcoKTsgfQotfTsKLQotLy8gU1ZHQW5pbWF0ZWRCb29sZWFuCi10ZW1wbGF0ZTw+Ci1z
dHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxib29sPiA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7Ci0gICAgdHlwZWRlZiBjb25zdCBib29sJiBQYXNzVHlwZTsKLSAgICB0eXBlZGVmIGJvb2wg
UmV0dXJuVHlwZTsKLSAgICB0eXBlZGVmIGJvb2wgU3RvcmVkVHlwZTsKLQotICAgIHN0YXRpYyBS
ZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHN0YXRpYyBSZXR1cm5UeXBl
IHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9Ci0g
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID8g
InRydWUiIDogImZhbHNlIjsgfQotfTsKLQotLy8gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbgotdGVt
cGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8aW50PiA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBjb25zdCBpbnQmIFBhc3NUeXBlOwotICAgIHR5cGVk
ZWYgaW50IFJldHVyblR5cGU7Ci0gICAgdHlwZWRlZiBpbnQgU3RvcmVkVHlwZTsKLQotICAgIHN0
YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIFJldHVyblR5
cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0K
LSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyKHR5cGUpOyB9Ci19OwotCi0vLyBTVkdBbmltYXRlZEludGVnZXIKLXRlbXBsYXRl
PD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGxvbmc+IDogcHVibGljIE5vbmNv
cHlhYmxlIHsKLSAgICB0eXBlZGVmIGNvbnN0IGxvbmcmIFBhc3NUeXBlOwotICAgIHR5cGVkZWYg
bG9uZyBSZXR1cm5UeXBlOwotICAgIHR5cGVkZWYgbG9uZyBTdG9yZWRUeXBlOwotCi0gICAgc3Rh
dGljIFJldHVyblR5cGUgbnVsbCgpIHsgcmV0dXJuIDBsOyB9Ci0gICAgc3RhdGljIFJldHVyblR5
cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0K
LSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyKHR5cGUpOyB9Ci19OwotCi0vLyBTVkdBbmltYXRlZExlbmd0aAotdGVtcGxhdGU8
Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoPiA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBjb25zdCBTVkdMZW5ndGgmIFBhc3NUeXBlOwotICAg
IHR5cGVkZWYgU1ZHTGVuZ3RoIFJldHVyblR5cGU7Ci0gICAgdHlwZWRlZiBTVkdMZW5ndGggU3Rv
cmVkVHlwZTsKLQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBTVkdMZW5n
dGgoKTsgfQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRU
eXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQ
YXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQotfTsKLQotLy8g
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRyYWl0czxTVkdMZW5ndGhMaXN0Kj4gOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHR5
cGVkZWYgU1ZHTGVuZ3RoTGlzdCogUGFzc1R5cGU7Ci0gICAgdHlwZWRlZiBTVkdMZW5ndGhMaXN0
KiBSZXR1cm5UeXBlOwotICAgIHR5cGVkZWYgUmVmUHRyPFNWR0xlbmd0aExpc3Q+IFN0b3JlZFR5
cGU7Ci0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gMDsgfQotICAgIHN0
YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJl
dHVybiB0eXBlLmdldCgpOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0
eXBlKSB7IHJldHVybiB0eXBlID8gdHlwZS0+dmFsdWVBc1N0cmluZygpIDogU3RyaW5nKCk7IH0K
LX07Ci0KLS8vIFNWR0FuaW1hdGVkTnVtYmVyCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0czxmbG9hdD4gOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHR5cGVk
ZWYgY29uc3QgZmxvYXQmIFBhc3NUeXBlOwotICAgIHR5cGVkZWYgZmxvYXQgUmV0dXJuVHlwZTsK
LSAgICB0eXBlZGVmIGZsb2F0IFN0b3JlZFR5cGU7Ci0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSBu
dWxsKCkgeyByZXR1cm4gMC4wZjsgfQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlw
ZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9Ci0gICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiBTdHJpbmc6Om51bWJlcih0eXBl
KTsgfQotfTsKLQotLy8gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdOdW1iZXJMaXN0Kj4gOiBwdWJsaWMgTm9uY29w
eWFibGUgewotICAgIHR5cGVkZWYgU1ZHTnVtYmVyTGlzdCogUGFzc1R5cGU7Ci0gICAgdHlwZWRl
ZiBTVkdOdW1iZXJMaXN0KiBSZXR1cm5UeXBlOwotICAgIHR5cGVkZWYgUmVmUHRyPFNWR051bWJl
ckxpc3Q+IFN0b3JlZFR5cGU7Ci0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1
cm4gMDsgfQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRU
eXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLmdldCgpOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID8gdHlwZS0+dmFsdWVBc1N0cmluZygp
IDogU3RyaW5nKCk7IH0KLX07Ci0KLS8vIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbwot
dGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpbz4gOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHR5cGVkZWYgY29uc3QgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyYgUGFzc1R5cGU7Ci0gICAgdHlwZWRlZiBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvIFJldHVyblR5cGU7Ci0gICAgdHlwZWRlZiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
IFN0b3JlZFR5cGU7Ci0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbygpOyB9Ci0gICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5U
eXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KLSAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmlu
ZygpOyB9Ci19OwotCi0vLyBTVkdBbmltYXRlZFJlY3QKLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD4gOiBwdWJsaWMgTm9uY29weWFibGUgewot
ICAgIHR5cGVkZWYgY29uc3QgRmxvYXRSZWN0JiBQYXNzVHlwZTsKLSAgICB0eXBlZGVmIEZsb2F0
UmVjdCBSZXR1cm5UeXBlOwotICAgIHR5cGVkZWYgRmxvYXRSZWN0IFN0b3JlZFR5cGU7Ci0KLSAg
ICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KLSAgICBz
dGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyBy
ZXR1cm4gdHlwZTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoUGFzc1R5cGUgdHlwZSkg
eyByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVmICVmICVmICVmIiwgdHlwZS54KCksIHR5cGUueSgp
LCB0eXBlLndpZHRoKCksIHR5cGUuaGVpZ2h0KCkpOyB9Ci19OwotCi0vLyBTVkdBbmltYXRlZFN0
cmluZwotdGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U3RyaW5n
PiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBjb25zdCBTdHJpbmcmIFBhc3NU
eXBlOwotICAgIHR5cGVkZWYgU3RyaW5nIFJldHVyblR5cGU7Ci0gICAgdHlwZWRlZiBTdHJpbmcg
U3RvcmVkVHlwZTsKLQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRU
eXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQ
YXNzVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlOyB9Ci19OwotCi0vLyBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QKLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNW
R1RyYW5zZm9ybUxpc3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBTVkdU
cmFuc2Zvcm1MaXN0KiBQYXNzVHlwZTsKLSAgICB0eXBlZGVmIFNWR1RyYW5zZm9ybUxpc3QqIFJl
dHVyblR5cGU7Ci0gICAgdHlwZWRlZiBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4gU3RvcmVkVHlw
ZTsKLQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiAwOyB9Ci0gICAgc3Rh
dGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0
dXJuIHR5cGUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5
cGUpIHsgcmV0dXJuIHR5cGUgPyB0eXBlLT52YWx1ZUFzU3RyaW5nKCkgOiBTdHJpbmcoKTsgfQot
fTsKLQotfQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUu
aAkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2lmbmRlZiBTVkdBbmltYXRlZFRlbXBsYXRlX2gKLSNkZWZpbmUgU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZV9oCi0KLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVy
dHlUcmFpdHMuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgIAotICAgIGNsYXNzIFNWR0FuZ2xlOwot
ICAgIGNsYXNzIFNWR0VsZW1lbnQ7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoTGlzdDsKLSAgICBjbGFz
cyBTVkdOdW1iZXJMaXN0OwotICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW87Ci0gICAg
Y2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKLSAgICBjbGFzcyBRdWFsaWZpZWROYW1lOwotCi0gICAg
c3RydWN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkgeyAgICAgICAgICAgIAotICAgICAgICAv
LyBFbXB0eSB2YWx1ZQotICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KCkKLSAgICAg
ICAgICAgIDogZWxlbWVudCgwKQotICAgICAgICAgICAgLCBhdHRyaWJ1dGVOYW1lKDApCi0gICAg
ICAgIHsgfQotCi0gICAgICAgIC8vIERlbGV0ZWQgdmFsdWUKLSAgICAgICAgU1ZHQW5pbWF0ZWRU
eXBlV3JhcHBlcktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgICAg
ICA6IGVsZW1lbnQocmVpbnRlcnByZXRfY2FzdDxTVkdFbGVtZW50Kj4oLTEpKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT0gcmVpbnRlcnByZXRf
Y2FzdDxTVkdFbGVtZW50Kj4oLTEpOwotICAgICAgICB9Ci0KLSAgICAgICAgU1ZHQW5pbWF0ZWRU
eXBlV3JhcHBlcktleShjb25zdCBTVkdFbGVtZW50KiBfZWxlbWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBfYXR0cmlidXRlTmFtZSkKLSAgICAgICAgICAgIDogZWxlbWVudChfZWxlbWVudCkKLSAg
ICAgICAgICAgICwgYXR0cmlidXRlTmFtZShfYXR0cmlidXRlTmFtZS5pbXBsKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICAgICAgICAgIEFTU0VSVChhdHRy
aWJ1dGVOYW1lKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
VkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQgPT0gb3RoZXIuZWxlbWVudCAmJiBhdHRyaWJ1dGVOYW1lID09
IG90aGVyLmF0dHJpYnV0ZU5hbWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBTVkdFbGVt
ZW50KiBlbGVtZW50OwotICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhdHRyaWJ1dGVOYW1lOwot
ICAgIH07Ci0gICAgCi0gICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoIHsK
LSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBl
cktleSYga2V5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29t
cHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KCZrZXkpLCBzaXplb2YoU1ZH
QW5pbWF0ZWRUeXBlV3JhcHBlcktleSkgLyBzaXplb2YoVUNoYXIpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkm
IGEsIGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci0gICAgfTsKLQotICAg
IHN0cnVjdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaFRyYWl0cyA6IFdURjo6R2VuZXJp
Y0hhc2hUcmFpdHM8U1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleT4gewotICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKLQotICAgICAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgc2xvdCkK
LSAgICAgICAgewotICAgICAgICAgICAgbmV3ICgmc2xvdCkgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBl
cktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5
JiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCk7Ci0gICAgICAgIH0KLSAgICB9OwotIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEFuaW1hdGVkVHlwZT4KLSAgICBjbGFzcyBTVkdBbmltYXRlZFRlbXBsYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxBbmltYXRlZFR5cGU+ID4gewotICAgIHB1
YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
PEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIFBhc3NUeXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVu
YW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBS
ZXR1cm5UeXBlOwotCi0gICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkVGVtcGxhdGUoKSB7IGZv
cmdldFdyYXBwZXIodGhpcyk7IH0KLQotICAgICAgICB2aXJ0dWFsIFJldHVyblR5cGUgYmFzZVZh
bCgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEJhc2VWYWwoUGFzc1R5cGUp
ID0gMDsKLQotICAgICAgICB2aXJ0dWFsIFJldHVyblR5cGUgYW5pbVZhbCgpIGNvbnN0ID0gMDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoUGFzc1R5cGUpID0gMDsKLQotICAgICAg
ICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkg
Y29uc3QgPSAwOwotCi0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTVkdBbmltYXRlZFR5cGVXcmFw
cGVyS2V5LCBTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4qLCBTVkdBbmltYXRlZFR5
cGVXcmFwcGVyS2V5SGFzaCwgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2hUcmFpdHMgPiBF
bGVtZW50VG9XcmFwcGVyTWFwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEVsZW1lbnRUb1dy
YXBwZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVyYXRvcjsKLQot
ICAgICAgICBzdGF0aWMgRWxlbWVudFRvV3JhcHBlck1hcCogd3JhcHBlckNhY2hlKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIEVsZW1lbnRUb1dyYXBwZXJNYXAqIHNfd3JhcHBlckNh
Y2hlID0gbmV3IEVsZW1lbnRUb1dyYXBwZXJNYXA7ICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgcmV0dXJuIHNfd3JhcHBlckNhY2hlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZv
aWQgZm9yZ2V0V3JhcHBlcihTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4qIHdyYXBw
ZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXAqIGNhY2hlID0g
d3JhcHBlckNhY2hlKCk7Ci0gICAgICAgICAgICBFbGVtZW50VG9XcmFwcGVyTWFwSXRlcmF0b3Ig
aXRyID0gY2FjaGUtPmJlZ2luKCk7Ci0gICAgICAgICAgICBFbGVtZW50VG9XcmFwcGVyTWFwSXRl
cmF0b3IgZW5kID0gY2FjaGUtPmVuZCgpOwotICAgICAgICAgICAgZm9yICg7IGl0ciAhPSBlbmQ7
ICsraXRyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ci0+c2Vjb25kID09IHdyYXBwZXIpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2FjaGUtPnJlbW92ZShpdHItPmZpcnN0KTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZT4KLSAg
ICBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5p
bWF0ZWRUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFRlYXJPZmY+Ci0gICAgUGFzc1JlZlB0cjxBbmlt
YXRlZFRlYXJPZmY+IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50LCBT
VkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4mIGNyZWF0b3IsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQotICAgIHsKLSAgICAgICAgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktl
eSBrZXkoZWxlbWVudCwgYXR0ck5hbWUubG9jYWxOYW1lKCkpOwotICAgICAgICBSZWZQdHI8QW5p
bWF0ZWRUZWFyT2ZmPiB3cmFwcGVyID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRUZWFyT2ZmKj4oQW5p
bWF0ZWRUZWFyT2ZmOjp3cmFwcGVyQ2FjaGUoKS0+Z2V0KGtleSkpOwotCi0gICAgICAgIGlmICgh
d3JhcHBlcikgewotICAgICAgICAgICAgd3JhcHBlciA9IEFuaW1hdGVkVGVhck9mZjo6Y3JlYXRl
KGNyZWF0b3IsIGVsZW1lbnQpOwotICAgICAgICAgICAgQW5pbWF0ZWRUZWFyT2ZmOjp3cmFwcGVy
Q2FjaGUoKS0+c2V0KGtleSwgd3JhcHBlci5nZXQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gd3JhcHBlci5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgLy8gQ29tbW9uIHR5cGUgZGVm
aW5pdGlvbnMsIHRvIGVhc2UgSURMIGdlbmVyYXRpb24uCi0gICAgdHlwZWRlZiBTVkdBbmltYXRl
ZFRlbXBsYXRlPFNWR0FuZ2xlPiBTVkdBbmltYXRlZEFuZ2xlOwotICAgIHR5cGVkZWYgU1ZHQW5p
bWF0ZWRUZW1wbGF0ZTxib29sPiBTVkdBbmltYXRlZEJvb2xlYW47Ci0gICAgdHlwZWRlZiBTVkdB
bmltYXRlZFRlbXBsYXRlPGludD4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjsKLSAgICB0eXBlZGVm
IFNWR0FuaW1hdGVkVGVtcGxhdGU8bG9uZz4gU1ZHQW5pbWF0ZWRJbnRlZ2VyOwotICAgIHR5cGVk
ZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdMZW5ndGg+IFNWR0FuaW1hdGVkTGVuZ3RoOwotICAg
IHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdMZW5ndGhMaXN0Kj4gU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0OwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxmbG9hdD4gU1ZHQW5p
bWF0ZWROdW1iZXI7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR051bWJlckxp
c3QqPiBTVkdBbmltYXRlZE51bWJlckxpc3Q7IAotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1w
bGF0ZTxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW87Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPEZsb2F0UmVjdD4gU1ZHQW5pbWF0
ZWRSZWN0OwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTdHJpbmc+IFNWR0FuaW1h
dGVkU3RyaW5nOwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdUcmFuc2Zvcm1M
aXN0Kj4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OwotCi19Ci0KLSNlbmRpZgotI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCShyZXZpc2lvbiA3MDA1NykKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IH0KIAogLy8gVGhpcyBmaWxlIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGFmdGVyIHRoZSBTVkdFbGVt
ZW50IGRlY2xhcmF0aW9uCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorI2luY2x1
ZGUgIkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmgiIC8vIE5PTElOVAogCiAjZW5kaWYK
ICNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQu
aAkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZEJhc2VWYWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGJvb2w+OjpQ
YXNzVHlwZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEJhc2VWYWx1ZShEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxib29s
Pjo6UGFzc1R5cGUpID0gMDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGaXRUb1ZpZXdCb3guaAkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShEb2N1bWVudCosIEF0dHJpYnV0ZSopOwogICAg
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Vmlld0JveEJhc2VWYWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEZs
b2F0UmVjdD46OlBhc3NUeXBlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlQXNw
ZWN0UmF0aW9CYXNlVmFsdWUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvPjo6UGFzc1R5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld0JveEJh
c2VWYWx1ZShEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxGbG9hdFJlY3Q+OjpQ
YXNzVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZUFzcGVjdFJhdGlvQmFz
ZVZhbHVlKERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8+OjpQYXNzVHlwZSkgPSAwOwogCiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2VWaWV3
Qm94KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiwgRmxvYXRSZWN0Jik7CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdVUklSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVUklS
ZWZlcmVuY2UuaAkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVu
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHN0YXRpYyBTdHJpbmcgZ2V0VGFyZ2V0KGNvbnN0IFN0cmluZyYgdXJsKTsKIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEhyZWZCYXNlVmFsdWUoU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTdHJpbmc+OjpQYXNzVHlwZSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0SHJlZkJhc2VWYWx1ZShEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRyYWl0czxTdHJpbmc+OjpQYXNzVHlwZSkgPSAwOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVN5bmNocm9uaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCShyZXZpc2lvbiA3MDA1NykJKGZyb20gV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOjcwMDU3KQorKysgV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBT
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyX2gKKyNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplcl9oCisKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
LmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdF
bGVtZW50OworCisvLyBHZXRPd25lckVsZW1lbnRGb3JUeXBlIGltcGxlbWVudGF0aW9uCit0ZW1w
bGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIGJvb2wgaXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ+Citz
dHJ1Y3QgR2V0T3duZXJFbGVtZW50Rm9yVHlwZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgT3duZXJU
eXBlPgorc3RydWN0IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCB0cnVlPiA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CisgICAgc3RhdGljIFNWR0VsZW1lbnQqIG93bmVyRWxlbWVudChP
d25lclR5cGUqIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitzdHJ1Y3QgR2V0T3duZXJFbGVtZW50Rm9y
VHlwZTxPd25lclR5cGUsIGZhbHNlPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7ICAgIAorICAgIHN0
YXRpYyBTVkdFbGVtZW50KiBvd25lckVsZW1lbnQoT3duZXJUeXBlKiB0eXBlKQorICAgIHsKKyAg
ICAgICAgU1ZHRWxlbWVudCogY29udGV4dCA9IHR5cGUtPmNvbnRleHRFbGVtZW50KCk7CisgICAg
ICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorfTsK
KworLy8gSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQgaW1wbGVtZW50YXRpb24KK3RlbXBsYXRlPHR5
cGVuYW1lIE93bmVyVHlwZT4KK3N0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudCA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOworfTsK
KworY2xhc3MgU1ZHVmlld1NwZWM7Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgSXNEZXJpdmVkRnJvbVNW
R0VsZW1lbnQ8U1ZHVmlld1NwZWM+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOworfTsKKworLy8gSGVscGVyIHRlbXBsYXRlIHVzZWQg
Zm9yIHN5bmNocm9uaXppbmcgU1ZHIDwtPiBYTUwgcHJvcGVydGllcwordGVtcGxhdGU8Ym9vbCBp
c0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4KK3N0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyIHsKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZShTVkdFbGVtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworfTsKKwordGVtcGxhdGU8Pgor
c3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT4geworICAgIHN0YXRp
YyB2b2lkIHN5bmNocm9uaXplKFNWR0VsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCisgICAgeworICAg
ICAgICBOYW1lZE5vZGVNYXAqIG5hbWVkQXR0ck1hcCA9IG93bmVyRWxlbWVudC0+YXR0cmlidXRl
cyhmYWxzZSk7IAorICAgICAgICBBdHRyaWJ1dGUqIG9sZCA9IG5hbWVkQXR0ck1hcC0+Z2V0QXR0
cmlidXRlSXRlbShhdHRyTmFtZSk7CisgICAgICAgIGlmIChvbGQgJiYgdmFsdWUuaXNOdWxsKCkp
IAorICAgICAgICAgICAgbmFtZWRBdHRyTWFwLT5yZW1vdmVBdHRyaWJ1dGUob2xkLT5uYW1lKCkp
OyAKKyAgICAgICAgZWxzZSBpZiAoIW9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpIAorICAgICAgICAg
ICAgbmFtZWRBdHRyTWFwLT5hZGRBdHRyaWJ1dGUob3duZXJFbGVtZW50LT5jcmVhdGVBdHRyaWJ1
dGUoYXR0ck5hbWUsIHZhbHVlKSk7CisgICAgICAgIGVsc2UgaWYgKG9sZCAmJiAhdmFsdWUuaXNO
dWxsKCkpIAorICAgICAgICAgICAgb2xkLT5zZXRWYWx1ZSh2YWx1ZSk7IAorICAgIH0KK307CisK
K3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPGZhbHNl
PiB7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemUoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorICAgIHsKKyAgICAgICAgLy8gbm8tb3As
IGZvciB0eXBlcyBub3QgaW5oZXJpdGluZyBmcm9tIEVsZW1lbnQsIHRodXMgbm90aGluZyB0byBz
eW5jaHJvbml6ZQorICAgIH0KK307CisKK307CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5j
aHJvbml6ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3
IEBACiAjaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXJfaAogI2RlZmluZSBT
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyX2gKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVk
UHJvcGVydHlUcmFpdHMuaCIKKyNpbmNsdWRlICJEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRyYWl0cy5oIgogCiAjaWYgRU5BQkxFKFNWRykKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71263</attachid>
            <date>2010-10-20 01:07:58 -0700</date>
            <delta_ts>2010-10-20 01:27:52 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>PrepareSVGLength.diff</filename>
            <type>text/plain</type>
            <size>104966</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDEzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMTAtMjAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHkqIC0+IERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFByb3BlcnR5KgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDc5NzMKKworICAgICAgICBQcmVwYXJlIGZpeGluZyBidWcgNDc5MDUsIHJlZGVzaWduaW5n
IFNWR0FuaW1hdGVkUHJvcGVydHkuIEFzIHdlJ3JlIGdvaW5nIHRvIG1vdmUgdHlwZSBieSB0eXBl
CisgICAgICAgIHRvIHRoZSBuZXcgYW5pbWF0ZWQgcHJvcGVydHkgY29uY2VwdCwga2VlcCB0aGUg
b2xkIG9uZSBhcm91bmQsIG1hcmtlZCBkZXByZWNhdGVkLCB1bnRpbCB0aGUKKyAgICAgICAgdHJh
bnNpdGlvbiBpcyBmaW5pc2hlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
T2JqQy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBzdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkuaDogQ29waWVkIGZy
b20gc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaC4KKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0
ZWRTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVy
dHlUZWFyT2ZmKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZjo6fkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZik6CisgICAg
ICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6fkRlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTVkdBbmlt
YXRlZFByb3BlcnR5OjpEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6dmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHk6OmJhc2VWYWx1ZSk6CisgICAg
ICAgICogc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmg6IENvcGllZCBm
cm9tIHN2Zy9TVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmguCisgICAgICAgICogc3ZnL0RlcHJl
Y2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmg6IENvcGllZCBmcm9tIHN2Zy9TVkdBbmltYXRlZFRl
bXBsYXRlLmguCisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3Jh
cHBlcktleTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXk6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlI
YXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVX
cmFwcGVyS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFNWR0Fu
aW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNo
VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU1ZH
QW5pbWF0ZWRUZW1wbGF0ZTo6fkRlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlOjpmb3JnZXRXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcik6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkVGVtcGxhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmg6CisgICAgICAgICogc3Zn
L1NWR0ZpdFRvVmlld0JveC5oOgorICAgICAgICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllczogQWRkZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOiBDb3BpZWQgZnJvbSBzdmcvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oLgorCiAyMDEwLTEwLTIwICBTaGluaWNoaXJvIEhh
bWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBU
YW11cmEuCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDcwMDU3KQorKysgV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjk5Miw2ICsyOTkyLDkgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCBcCiAJV2ViQ29y
ZS9zdmcvQ29sb3JEaXN0YW5jZS5jcHAgXAogCVdlYkNvcmUvc3ZnL0NvbG9yRGlzdGFuY2UuaCBc
CisJV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkuaCBcCisJV2ViQ29y
ZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBcCisJV2ViQ29yZS9z
dmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCBcCiAJV2ViQ29yZS9zdmcvRWxlbWVu
dFRpbWVDb250cm9sLmggXAogCVdlYkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oIFwKIAlX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIFwKQEAgLTMwMDQsNiAr
MzAwNyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaCBcCiAJV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggXAogCVdl
YkNvcmUvc3ZnL1BhdHRlcm5BdHRyaWJ1dGVzLmggXAorCVdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIFwKIAlXZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIFwKIAlX
ZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oIFwKQEAgLTMwMTcsMTAgKzMwMjEsNiBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aERhdGEuaCBcCiAJV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludHMuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFBvaW50cy5oIFwKLQlXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmggXAotCVdlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBcCi0JV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIFwKLQlXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRl
bXBsYXRlLmggXAogCVdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBcCiAJV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3MDA1NykKKysrIFdlYkNvcmUvV2ViQ29y
ZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zOTIxLDggKzM5MjEsMTIgQEAKICAgICAgICAgICAg
ICdzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgnLAogICAgICAgICAgICAg
J3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oJywKKyAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5U3luY2hyb25pemVyLmgnLAogICAgICAgICAgICAgJ3N2Zy9Db2xvckRpc3RhbmNlLmNwcCcs
CiAgICAgICAgICAgICAnc3ZnL0NvbG9yRGlzdGFuY2UuaCcsCisgICAgICAgICAgICAnc3ZnL0Rl
cHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmgnLAorICAgICAgICAgICAgJ3N2Zy9EZXByZWNh
dGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oJywKKyAgICAgICAgICAgICdzdmcvRGVwcmVj
YXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCcsCiAgICAgICAgICAgICAnc3ZnL0VsZW1lbnRUaW1l
Q29udHJvbC5oJywKICAgICAgICAgICAgICdzdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmgnLAogICAg
ICAgICAgICAgJ3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCcsCkBAIC0zOTQ3LDEwICsz
OTUxLDYgQEAKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRQYXRoRGF0YS5oJywKICAgICAg
ICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRQb2ludHMuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZH
QW5pbWF0ZWRQb2ludHMuaCcsCi0gICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHku
aCcsCi0gICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCcs
Ci0gICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCcsCi0gICAgICAg
ICAgICAnc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAnLApJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZp
c2lvbiA3MDA1NykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIz
MzQsMjAgKzIzMzQsMjAgQEAgSEVBREVSUyArPSBcCiAgICAgc3ZnL2FuaW1hdGlvbi9TTUlMVGlt
ZS5oIFwKICAgICBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmggXAogICAgIHN2Zy9Db2xv
ckRpc3RhbmNlLmggXAorICAgIHN2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIFwK
KyAgICBzdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBcCisgICAgc3Zn
L0RlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmggXAogICAgIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuaCBcCiAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oIFwKICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBcCiAgICAgc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmggXAorICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlTeW5jaHJvbml6ZXIuaCBcCiAgICAgc3ZnL1NWR0FFbGVtZW50LmggXAogICAgIHN2Zy9T
VkdBbHRHbHlwaEVsZW1lbnQuaCBcCiAgICAgc3ZnL1NWR0FuZ2xlLmggXAogICAgIHN2Zy9TVkdB
bmltYXRlQ29sb3JFbGVtZW50LmggXAogICAgIHN2Zy9TVkdBbmltYXRlZFBhdGhEYXRhLmggXAog
ICAgIHN2Zy9TVkdBbmltYXRlZFBvaW50cy5oIFwKLSAgICBzdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oIFwKLSAgICBzdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIFwKLSAgICBz
dmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIFwKLSAgICBzdmcvU1ZHQW5pbWF0ZWRUZW1w
bGF0ZS5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaCBcCiAgICAgc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmggXAogICAgIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5o
IFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNzAw
NTcpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC02MTE0Nyw1MSArNjExNDcsNDcgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXEVsZW1lbnRUaW1lQ29udHJvbC5oIg0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3Zn
XFNWR0FFbGVtZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXERlcHJlY2F0ZWRTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQWxsSW5PbmUuY3BwIg0KLQkJCQk+DQotCQkJ
PC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FsdEdseXBo
RWxlbWVudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xEZXByZWNhdGVkU1ZHQW5pbWF0
ZWRUZW1wbGF0ZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3ZnXFNWR0FuZ2xlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXEVs
ZW1lbnRUaW1lQ29udHJvbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCINCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxzdmdcU1ZHQUVsZW1lbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmltYXRlZFBhdGhEYXRhLmgi
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FsbEluT25lLmNwcCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmltYXRl
ZFBvaW50cy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbHRHbHlwaEVsZW1lbnQu
aCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHN2Z1xTVkdBbmltYXRlZFByb3BlcnR5LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNW
R0FuZ2xlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIg0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmltYXRlQ29sb3JFbGVtZW50LmgiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0cy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmltYXRlZFBh
dGhEYXRhLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHN2Z1xTVkdBbmltYXRlZFBvaW50cy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQpAQCAtNjIyMTAsNiArNjIyMDYsMTQgQEAKIAkJCQkJPC9GaWxlPg0KIAkJCQk8L0ZpbHRlcj4N
CiAJCQk8L0ZpbHRlcj4NCisJCQk8RmlsdGVyDQorCQkJCU5hbWU9InByb3BlcnRpZXMiDQorCQkJ
CT4NCisJCQkJPEZpbGUNCisgICAgCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNc
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+
DQorCQkJPC9GaWx0ZXI+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCiAJCQlOYW1lPSJGb3J3
YXJkaW5nSGVhZGVycyINCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMTAgQEAKIAkJMDgxOEFF
RTIwRURCODZCQzAwNjQ3QjY2IC8qIFdNTEV2ZW50SGFuZGxpbmdFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MThBRUUwMEVEQjg2QkMw
MDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5jcHAgKi87IH07CiAJCTA4MThBRUUz
MEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxOEFFRTEwRURCODZCQzAwNjQ3
QjY2IC8qIFdNTEV2ZW50SGFuZGxpbmdFbGVtZW50LmggKi87IH07CiAJCTA4MUFBOERBMTExMTIz
N0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUFBOEQ5MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdF
bGVtZW50UmFyZURhdGEuaCAqLzsgfTsKKwkJMDgxQ0RGQjgxMjZFQ0ZEQjAwRDIxNUNBIC8qIERl
cHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODFDREZCNTEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRl
ZFNWR0FuaW1hdGVkUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwODFDREZCOTEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNW
R0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4MUNERkI2MTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTA4MUNERkJBMTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDgxQ0RGQjcxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmlt
YXRlZFRlbXBsYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMDgxQ0RGQkYxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlT
eW5jaHJvbml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4MUNERkJFMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDgxRDgxMzEwRUUwRTc0RDAwRDczNjg5IC8qIFdNTFRpbWVyRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFEODEyRjBFRTBFNzRE
MDBENzM2ODkgLyogV01MVGltZXJFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDgxRDgxMzIwRUUwRTc0
RDAwRDczNjg5IC8qIFdNTFRpbWVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRDgxMzAwRUUwRTc0RDAwRDczNjg5IC8qIFdNTFRpbWVy
RWxlbWVudC5oICovOyB9OwogCQkwODFFQkYzQTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVy
QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODFFQkYzODBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5jcHAgKi87IH07
CkBAIC0xMDgsOCArMTEyLDYgQEAKIAkJMDg0RDBFM0QxMUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jl
c291cmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg0RDBFMzkxMUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4NEQwRTNFMTFGNTgxNjEwMDA4
MUUxQSAvKiBTVkdSZXNvdXJjZXNDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODREMEUzQTExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3Vy
Y2VzQ2FjaGUuY3BwICovOyB9OwogCQkwODREMEUzRjExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVz
b3VyY2VzQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NEQwRTNCMTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJjZXNDYWNoZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA4NEQyODMzMTEw
QTdGQ0IwMDM4MjM5QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODREMjgzMTExMEE3RkNC
MDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA4NEQyODM0MTEwQTdGQ0Iw
MDM4MjM5QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODREMjgzMjExMEE3RkNCMDAzODIzOUEgLyog
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA4NERCQUExMEVEMzlEMzYwMDM4QzIyNiAvKiBXTUxWYXJp
YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg0REJBOUQwRUQzOUQzNTAwMzhDMjI2IC8qIFdNTFZhcmlhYmxlcy5jcHAgKi87IH07CiAJCTA4
NERCQUEyMEVEMzlEMzYwMDM4QzIyNiAvKiBXTUxWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NERCQTlFMEVEMzlEMzYwMDM4QzIyNiAv
KiBXTUxWYXJpYWJsZXMuaCAqLzsgfTsKIAkJMDg1NEIwMTQxMjU1RTRFNjAwQjlDREQwIC8qIFJl
bmRlclNWR0lubGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwODU0QjAwMjEyNTVFNEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5saW5lLmNwcCAq
LzsgfTsKQEAgLTE1NCw3ICsxNTYsNiBAQAogCQkwODczNUZCOTEwRTkxMjMyMDA2RDZGQUQgLyog
U1ZHTWFya2VyTGF5b3V0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDg3MzVGQjcxMEU5MTIzMjAwNkQ2RkFEIC8qIFNWR01hcmtlckxheW91dElu
Zm8uaCAqLzsgfTsKIAkJMDg3NDRCQUEwRURCN0Q4NjAwNEM5RTYzIC8qIFdNTE9uRXZlbnRFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NzQ0QkE5MEVEQjdEODYwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5jcHAgKi87IH07CiAJ
CTA4NzQ0QkFFMEVEQjdEOTIwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3NDRCQUQwRURCN0Q5MjAw
NEM5RTYzIC8qIFdNTE9uRXZlbnRFbGVtZW50LmggKi87IH07Ci0JCTA4NzhCMUZEMTA4NzRFM0Yw
MEE1NTA5NyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc4QjFGOTEwODc0RTNGMDBBNTUwOTcgLyogU1ZHQW5p
bWF0ZWRQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA4N0Q5N0JGMTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BPRExpc3RDdXN0b20u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4N0Q5N0JF
MTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BPRExpc3RDdXN0b20uaCAqLzsgfTsKIAkJMDg3RkZB
MEYwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODdGRkEwRDBFRkYzRUQz
MDA5REJEODggLyogV01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDg3RkZB
MTAwRUZGM0VEMzAwOURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3RkZBMEUwRUZGM0VEMzAw
OURCRDg4IC8qIFdNTEluc2VydGVkTGVnZW5kRWxlbWVudC5oICovOyB9OwpAQCAtMzkxNyw3ICsz
OTE4LDYgQEAKIAkJQjIyMjc5ODUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUGF0aERh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3
N0VGMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBhdGhEYXRhLmggKi87IH07CiAJCUIy
MjI3OTg3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBvaW50cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdGMTBEMDBCRjFGMDA3
MUI3ODIgLyogU1ZHQW5pbWF0ZWRQb2ludHMuY3BwICovOyB9OwogCQlCMjIyNzk4ODBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0YyMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmlt
YXRlZFBvaW50cy5oICovOyB9OwotCQlCMjIyNzk4RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5p
bWF0ZWRUZW1wbGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc3RjcwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkVGVtcGxhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyNzk4
RjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3RjkwRDAwQkYxRjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5OTAwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0FuaW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdGQTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVs
ZW1lbnQuaCAqLzsgfTsKIAkJQjIyMjc5OTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3N0ZDMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHAgKi87IH07CkBAIC02MDY0LDYgKzYwNjQsMTAgQEAKIAkJMDgxOEFFRTAwRURCODZCQzAw
NjQ3QjY2IC8qIFdNTEV2ZW50SGFuZGxpbmdFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdNTEV2ZW50SGFuZGxpbmdFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxOEFFRTEwRURCODZCQzAwNjQ3QjY2IC8qIFdNTEV2ZW50
SGFuZGxpbmdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTEV2
ZW50SGFuZGxpbmdFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUFB
OEQ5MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRWxlbWVudFJhcmVEYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA4MUNERkI1MTI2RUNGREIwMEQyMTVDQSAvKiBEZXByZWNhdGVkU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXBy
ZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwODFDREZCNjEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVy
dHlUcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVwcmVjYXRlZFNW
R0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDgxQ0RGQjcxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFRlbXBsYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4MUNERkJFMTI2RUNG
RTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRDgxMkYwRUUwRTc0RDAwRDczNjg5
IC8qIFdNTFRpbWVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXTUxUaW1lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODFEODEzMDBFRTBFNzREMDBENzM2ODkgLyogV01MVGltZXJFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFRpbWVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODFFQkYzODBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGaWx0ZXJCdWls
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwOTEsOCArNjA5NSw2IEBA
CiAJCTA4NEQwRTM5MTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJjZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVzb3VyY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA4NEQwRTNBMTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJjZXNDYWNo
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdSZXNvdXJjZXND
YWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NEQwRTNCMTFGNTgxNjEw
MDA4MUUxQSAvKiBTVkdSZXNvdXJjZXNDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdSZXNvdXJjZXNDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwODREMjgzMTExMEE3RkNCMDAzODIzOUEgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9u
aXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3Bl
cnR5U3luY2hyb25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4NEQyODMy
MTEwQTdGQ0IwMDM4MjM5QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg0REJBOUQwRUQzOUQzNTAwMzhDMjI2IC8qIFdN
TFZhcmlhYmxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxW
YXJpYWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODREQkE5RTBFRDM5
RDM2MDAzOEMyMjYgLyogV01MVmFyaWFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdNTFZhcmlhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODU0
QjAwMjEyNTVFNEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5saW5lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0lubGluZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02MTM3LDcgKzYxMzksNiBAQAogCQkwODczNUZCNzEwRTkxMjMy
MDA2RDZGQUQgLyogU1ZHTWFya2VyTGF5b3V0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdNYXJrZXJMYXlvdXRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4NzQ0QkE5MEVEQjdEODYwMDRDOUU2MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxPbkV2ZW50RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NzQ0QkFEMEVEQjdEOTIwMDRDOUU2
MyAvKiBXTUxPbkV2ZW50RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXTUxPbkV2ZW50RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwODc4
QjFGOTEwODc0RTNGMDBBNTUwOTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4N0Q5N0JFMTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BPRExp
c3RDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdQT0RMaXN0
Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4N0ZGQTBEMEVGRjNFRDMw
MDlEQkQ4OCAvKiBXTUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV01MSW5zZXJ0ZWRMZWdlbmRFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3RkZBMEUwRUZGM0VEMzAwOURCRDg4IC8qIFdNTElu
c2VydGVkTGVnZW5kRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
TUxJbnNlcnRlZExlZ2VuZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTk3MjMsNyArOTcyNCw2IEBACiAJCUIyMjI3N0Y0MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjIyNzdGNTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRSZWN0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHQW5pbWF0ZWRSZWN0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjIyMjc3RjYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkU3Ry
aW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHQW5pbWF0ZWRTdHJpbmcuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzdGNzBEMDBCRjFGMDA3MUI3ODIgLyog
U1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIy
NzdGODBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3RjkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0Fu
aW1hdGVFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdBbmltYXRlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3
N0ZBMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExNjU4LDYgKzExNjU4LDE0IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJ
CQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTA4MUNERkJEMTI2RUNGRTgwMEQyMTVDQSAvKiBwcm9w
ZXJ0aWVzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkw
ODFDREZCRTEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
ci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBwcm9wZXJ0aWVzOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNTg2Niw4ICsxNTg3
NCwxMiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRTQ2RTk3ODYwREFBRDYxQjAwNzFFODk0IC8q
IGFuaW1hdGlvbiAqLywKIAkJCQlCMjU1OTg4NjBEMDBEOEI4MDBCQjgyNUMgLyogZ3JhcGhpY3Mg
Ki8sCisJCQkJMDgxQ0RGQkQxMjZFQ0ZFODAwRDIxNUNBIC8qIHByb3BlcnRpZXMgKi8sCiAJCQkJ
QjIyMjc3Q0IwRDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwICovLAogCQkJCUIy
MjI3N0NDMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmggKi8sCisJCQkJMDgxQ0RG
QjUxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmggKi8s
CisJCQkJMDgxQ0RGQjYxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzLmggKi8sCisJCQkJMDgxQ0RGQjcxMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmggKi8sCiAJCQkJRTQxNUYxODMwRDlBMUE4MzAwMzND
RTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovLAogCQkJCUU0MTVGMTBDMEQ5QTA1ODcwMDMz
Q0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wuaWRsICovLAogCQkJCUIyMjI3N0NEMEQwMEJGMUYw
MDcxQjc4MiAvKiBHcmFkaWVudEF0dHJpYnV0ZXMuaCAqLywKQEAgLTE1OTAxLDEyICsxNTkxMyw4
IEBACiAJCQkJQjIyMjc3RjIwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUG9pbnRzLmgg
Ki8sCiAJCQkJQjIyMjc3RjMwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUG9pbnRzLmlk
bCAqLywKIAkJCQlCMjIyNzdGNDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmlkbCAqLywKLQkJCQkwODc4QjFGOTEwODc0RTNGMDBBNTUwOTcgLyogU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS5oICovLAotCQkJCTA4NEQyODMxMTEwQTdGQ0IwMDM4MjM5QSAvKiBT
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggKi8sCi0JCQkJMDg0RDI4MzIxMTBBN0ZD
QjAwMzgyMzlBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCAqLywKIAkJCQlCMjIyNzdG
NTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRSZWN0LmlkbCAqLywKIAkJCQlCMjIyNzdG
NjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaWRsICovLAotCQkJCUIyMjI3
N0Y3MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFRlbXBsYXRlLmggKi8sCiAJCQkJQjIy
Mjc3RjgwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5pZGwgKi8s
CiAJCQkJQjIyMjc3RjkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVtZW50LmNwcCAq
LywKIAkJCQlCMjIyNzdGQTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1lbnQuaCAq
LywKQEAgLTIwNjY4LDEwICsyMDY3Niw2IEBACiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTg1
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFBhdGhEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyNzk4ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQb2ludHMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTA4NzhCMUZEMTA4NzRFM0YwMEE1NTA5NyAvKiBTVkdBbmltYXRlZFBy
b3BlcnR5LmggaW4gSGVhZGVycyAqLywKLQkJCQkwODREMjgzMzExMEE3RkNCMDAzODIzOUEgLyog
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg0
RDI4MzQxMTBBN0ZDQjAwMzgyMzlBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUIyMjI3OThEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFRl
bXBsYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk5MDBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHQW5pbWF0ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTkzMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjc5OTUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTIxMDgyLDYgKzIxMDg2LDEwIEBACiAJCQkJOTdERDREODcwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGQTNCOTBC
MTI1Q0QxMjIwMDMwMEJBRCAvKiBJbnNwZWN0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyOEMzMTQxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwODFDREZCODEyNkVDRkRCMDBEMjE1Q0EgLyogRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4MUNERkI5MTI2RUNGREIwMEQyMTVD
QSAvKiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDgxQ0RGQkExMjZFQ0ZEQjAwRDIxNUNBIC8qIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRl
bXBsYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwODFDREZCRjEyNkVDRkU4MDBEMjE1Q0EgLyog
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZpc2lv
biA3MDA1NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQkod29ya2luZyBjb3B5KQpAQCAtNTg4LDcgKzU4OCw3IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5
cGUKICAgICB9CiAKICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0
eXBlKSkgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJTVkdBbmltYXRlZFRlbXBsYXRlLmgifSA9
IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRl
LmgifSA9IDE7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTSR7dHlwZX1JbnRlcm5hbC5oIn0g
PSAxOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTgzLDcgKzk4Myw3IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgICAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUo
JGludGVyZmFjZU5hbWUpOwogCiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmlt
YXRlZFR5cGUoJGludGVyZmFjZU5hbWUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbnRlcm5hbEhl
YWRlckNvbnRlbnQsICIjaW1wb3J0IDxXZWJDb3JlL1NWR0FuaW1hdGVkVGVtcGxhdGUuaD5cblxu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbnRlcm5hbEhlYWRlckNvbnRlbnQsICIjaW1wb3J0IDxX
ZWJDb3JlL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmg+XG5cbiIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW50ZXJuYWxIZWFkZXJDb250ZW50LCAibmFtZXNw
YWNlIFdlYkNvcmUge1xuIik7CiAgICAgICAgICAgICAkc3RhcnRlZE5hbWVzcGFjZSA9IDE7CkBA
IC0xMDg3LDcgKzEwODcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICRpbXBs
SW5jbHVkZXN7IkRPTVNWR1BhdGhTZWdJbnRlcm5hbC5oIn0gPSAxIGlmICRpbnRlcmZhY2VOYW1l
ID1+IC9eU1ZHUGF0aFNlZy4rLzsKIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmlt
YXRlZFR5cGUoJGludGVyZmFjZU5hbWUpKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IlNWR0Fu
aW1hdGVkVGVtcGxhdGUuaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siRGVwcmVjYXRl
ZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFt
ZSA9fiAvKFx3KykoQWJzfFJlbCkkLykgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyIkMS5oIn0g
PSAxOwogICAgIH0gZWxzZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDcwMDU3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBA
IHN1YiBBZGRJbmNsdWRlc0ZvclNWR0FuaW1hdGVkVHlwZQogICAgICAgICAkaW1wbEluY2x1ZGVz
eyJQbGF0Zm9ybVN0cmluZy5oIn0gPSAxOwogICAgIH0KIAotICAgICRpbXBsSW5jbHVkZXN7IlNW
R0FuaW1hdGVkVGVtcGxhdGUuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIn0gPSAxOwogfQogCiAjIElmIHRoZSBub2RlIGhhcyBhIFtD
b25kaXRpb25hbD1YWFhdIGF0dHJpYnV0ZSwgcmV0dXJucyBhbiAiRU5BQkxFKFhYWCkiIHN0cmlu
ZyBmb3IgdXNlIGluIGFuICNpZi4KQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdWIgR2V0SGVhZGVyQ2xh
c3NJbmNsdWRlCiAgICAgICAgICRjbGFzc05hbWUgPX4gcy9BYnN8UmVsLy87CiAgICAgfQogICAg
IHJldHVybiAiIiBpZiAoQXZvaWRJbmNsdXNpb25PZlR5cGUoJGNsYXNzTmFtZSkpOwotICAgIHJl
dHVybiAiU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIiBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5p
bWF0ZWRUeXBlKCRjbGFzc05hbWUpKTsKKyAgICByZXR1cm4gIkRlcHJlY2F0ZWRTVkdBbmltYXRl
ZFRlbXBsYXRlLmgiIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGNsYXNz
TmFtZSkpOwogICAgIHJldHVybiAiJHtjbGFzc05hbWV9LmgiOwogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmgJKHJldmlzaW9uIDcwMDU3KQko
ZnJvbSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6NzAwNTcpCisrKyBXZWJDb3Jl
L3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eV9oCisjZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlfaAorCisjaWYgRU5B
QkxFKFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgiCisj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgorI2luY2x1ZGUgIlNWR0FuaW1h
dGVkVGVtcGxhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBBbmltYXRlZFR5cGU+CitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBBbmltYXRlZFR5cGU+CitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiA6
IHB1YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4geworcHVibGljOgorICAg
IHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+
OjpQYXNzVHlwZSBQYXNzVHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJv
cGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBSZXR1cm5UeXBlOworCisgICAg
dHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxBbmltYXRlZFR5cGU+IFNlbGY7Cisg
ICAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4gQ3JlYXRvcjsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlbGY+IGNyZWF0ZShDcmVhdG9yJiBjcmVhdG9yLCBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2VsZihjcmVhdG9yLCBjb250ZXh0RWxlbWVudCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBzZXRCYXNlVmFsKFBhc3NUeXBlIHR5cGUpCisgICAgeworICAgICAgICBtX2NyZWF0b3Iu
c2V0QmFzZVZhbHVlKHR5cGUpOworICAgICAgICBtX2NvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRl
U1ZHQXR0cmlidXRlcygpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltVmFsKFBh
c3NUeXBlIHR5cGUpCisgICAgeworICAgICAgICBtX2NyZWF0b3Iuc2V0VmFsdWUodHlwZSk7Cisg
ICAgICAgIG1fY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAg
fQorCisgICAgdmlydHVhbCBSZXR1cm5UeXBlIGJhc2VWYWwoKSBjb25zdCB7IHJldHVybiBtX2Ny
ZWF0b3IuYmFzZVZhbHVlKCk7IH0KKyAgICB2aXJ0dWFsIFJldHVyblR5cGUgYW5pbVZhbCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3JlYXRvci52YWx1ZSgpOyB9CisgICAgdmlydHVhbCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jl
YXRvci5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpOyB9CisKK3ByaXZhdGU6CisgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmYoQ3JlYXRvciYgY3JlYXRvciwgU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpCisgICAgICAgIDogbV9jcmVhdG9yKGNyZWF0b3IpCisgICAgICAgICwgbV9jb250
ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKKyAgICB7CisgICAgICAgIG1fY3JlYXRvci5zZXRT
aG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZigpCisgICAgeworICAgICAgICBtX2NyZWF0b3Iuc2V0U2hvdWxkU3lu
Y2hyb25pemUoZmFsc2UpOworICAgIH0KKworICAgIENyZWF0b3ImIG1fY3JlYXRvcjsKKyAgICBS
ZWZQdHI8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxlbWVudDsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEFuaW1hdGVkVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHkgeworcHVibGljOgor
ICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkUHJvcGVydHkoKSB7IH0KKworICAgIHR5cGVkZWYgdHlw
ZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpQYXNzVHlwZSBQ
YXNzVHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8
QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBSZXR1cm5UeXBlOworICAgIHR5cGVkZWYgdHlwZW5h
bWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpTdG9yZWRUeXBlIFN0
b3JlZFR5cGU7CisKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5KCkKKyAgICAgICAgOiBtX3ZhbHVl
KFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6bnVsbCgpKQorICAgICAg
ICAsIG1fc2hvdWxkU3luY2hyb25pemUoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyT25lPgorICAgIFNWR0FuaW1hdGVkUHJv
cGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSkKKyAgICAgICAgOiBt
X3ZhbHVlKHZhbHVlMSkKKyAgICAgICAgLCBtX3Nob3VsZFN5bmNocm9uaXplKGZhbHNlKQorICAg
IHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25zdHJ1Y3RvclBhcmFtZXRlck9u
ZSwgdHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28+CisgICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxLCBjb25zdCBDb25zdHJ1
Y3RvclBhcmFtZXRlclR3byYgdmFsdWUyKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUxLCB2YWx1
ZTIpCisgICAgICAgICwgbV9zaG91bGRTeW5jaHJvbml6ZShmYWxzZSkKKyAgICB7CisgICAgfQor
CisgICAgUmV0dXJuVHlwZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVy
dHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6dG9SZXR1cm5UeXBlKG1fdmFsdWUpOyB9CisgICAgUmV0
dXJuVHlwZSBiYXNlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPEFuaW1hdGVkVHlwZT46OnRvUmV0dXJuVHlwZShtX3ZhbHVlKTsgfQorCisgICAgdm9pZCBz
ZXRWYWx1ZShQYXNzVHlwZSB0eXBlKSB7IG1fdmFsdWUgPSB0eXBlOyB9CisgICAgdm9pZCBzZXRC
YXNlVmFsdWUoUGFzc1R5cGUgdHlwZSkgeyBtX3ZhbHVlID0gdHlwZTsgfQorCisgICAgYm9vbCBz
aG91bGRTeW5jaHJvbml6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3luY2hyb25pemU7IH0K
KyAgICB2b2lkIHNldFNob3VsZFN5bmNocm9uaXplKGJvb2wgdmFsdWUpIHsgbV9zaG91bGRTeW5j
aHJvbml6ZSA9IHZhbHVlOyB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFz
c29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgU3Rv
cmVkVHlwZSBtX3ZhbHVlOworICAgIGJvb2wgbV9zaG91bGRTeW5jaHJvbml6ZTsKK307CisKK307
CisKKy8vIEhlbHBlciBtYWNybyB1c2VkIHdpdGhpbiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
IGJlbG93CisjZGVmaW5lIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5KSBcCitjbGFzcyBTVkdBbmltYXRl
ZFByb3BlcnR5IyNVcHBlclByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHk8QW5p
bWF0ZWRUeXBlPiB7IFwKK3B1YmxpYzogXAorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVy
UHJvcGVydHkoKSBcCisgICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+
KCkgXAorICAgIHsgXAorICAgIH0gXAorICAgIFwKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25z
dHJ1Y3RvclBhcmFtZXRlck9uZT4gXAorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJv
cGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSkgXAorICAgICAgICA6
IFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPih2YWx1ZTEpIFwKKyAgICB7IFwKKyAg
ICB9IFwKKyAgICBcCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJP
bmUsIHR5cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyVHdvPiBcCisgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFs
dWUxLCBjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlclR3byYgdmFsdWUyKSBcCisgICAgICAgIDog
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+KHZhbHVlMSwgdmFsdWUyKSBcCisgICAg
eyBcCisgICAgfSBcCisgICAgXAorICAgIHZvaWQgc3luY2hyb25pemUoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKG1fc2hvdWxkU3luY2hyb25p
emUpOyBcCisgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPEFuaW1hdGVkVHlwZT46OnRvU3RyaW5nKGJhc2VWYWx1ZSgpKSk7IFwKKyAgICAgICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25l
clR5cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUs
IHZhbHVlKTsgXAorICAgIH0gXAorICAgIFwKKyAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICBy
ZXR1cm4gRE9NQXR0cmlidXRlOyBcCisgICAgfSBcCit9CisKKy8vIEhlbHBlciBtYWNybyBzaGFy
ZWQgYnkgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWSAvIERFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VFlfTVVMVElQTEVfV1JBUFBFUlMKKyNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9T
SEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIs
IEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAorcHJpdmF0ZTog
XAorICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8QW5pbWF0ZWRUeXBlPiBT
VkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eTsgXAorICAgIERFRklORV9B
TklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgQW5pbWF0ZWRUeXBlLCBV
cHBlclByb3BlcnR5KTsgXAorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkg
bV8jI0xvd2VyUHJvcGVydHk7IFwKKyAgICBcCitwdWJsaWM6IFwKKyAgICBTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNv
bnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlKCk7
IFwKKyAgICB9IFwKKyAgICBcCisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRl
ZFR5cGU+OjpSZXR1cm5UeXBlIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IFwKKyAg
ICB7IFwKKyAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LmJhc2VWYWx1ZSgpOyBcCisg
ICAgfSBcCisgICAgXAorICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5KFNWR0FuaW1hdGVkUHJv
cGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgdHlwZSkgXAorICAgIHsgXAorICAg
ICAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRWYWx1ZSh0eXBlKTsgXAorICAgICAgICBTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJ
c0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0
aGlzKTsgXAorICAgICAgICBjb250ZXh0RWxlbWVudC0+aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMo
KTsgXAorICAgIH0gXAorICAgIFwKKyAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZh
bHVlKFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgdHlw
ZSkgXAorICAgIHsgXAorICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zZXRCYXNlVmFsdWUodHlw
ZSk7IFwKKyAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1l
bnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6
dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKKyAgICAgICAgY29udGV4dEVsZW1lbnQtPmlu
dmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgdm9pZCBzeW5j
aHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpIFwKKyAgICB7IFwKKyAgICAgICAgaWYgKCFtXyMjTG93
ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSgpKSBcCisgICAgICAgICAgICByZXR1cm47IFwK
KyAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JU
eXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+
Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKKyAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkuc3luY2hy
b25pemUoY29udGV4dEVsZW1lbnQpOyBcCisgICAgfSBcCisgICAgXAorICAgIFBhc3NSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYjI1VwcGVyUHJvcGVydHk+IExvd2VyUHJvcGVydHkj
I0FuaW1hdGVkKCkgXAorICAgIHsgXAorICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxl
bWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXAorICAgICAgICBy
ZXR1cm4gbG9va3VwT3JDcmVhdGVXcmFwcGVyPEFuaW1hdGVkVHlwZSwgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRlYXJPZmYjI1VwcGVyUHJvcGVydHk+KGNvbnRleHRFbGVtZW50LCBtXyMjTG93ZXJQcm9w
ZXJ0eSwgRE9NQXR0cmlidXRlKTsgXAorICAgIH0KKworLy8gVXNlZCBmb3IgU1ZHIERPTSBwcm9w
ZXJ0aWVzIHRoYXQgbWFwIGV4YWN0bHkgdG8gb25lIFhNTCBET00gYXR0cmlidXRlCisjZGVmaW5l
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIEFuaW1h
dGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAorREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWV9TSEFSRUQoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5s
b2NhbE5hbWUoKSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQor
CisvLyBVc2VkIGZvciB0aGUgcmFyZSBjYXNlIG11bHRpcGxlIFNWRyBET00gcHJvcGVydGllcyB0
aGF0IG1hcCB0byB0aGUgc2FtZSBYTUwgZG9tIGF0dHJpYnV0ZQorI2RlZmluZSBERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRZX01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlwZSwgRE9NQXR0cmlidXRl
LCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpIFwKK0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfU0hBUkVEKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBBbmltYXRlZFR5
cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCisKKyNlbmRpZgorI2VuZGlmCkluZGV4
OiBXZWJDb3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmgJKHJldmlzaW9u
IDcwMDU3KQorKysgV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTgsMjcgKzE4LDI3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlfaAotI2RlZmluZSBT
VkdBbmltYXRlZFByb3BlcnR5X2gKKyNpZm5kZWYgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVy
dHlfaAorI2RlZmluZSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eV9oCiAKICNpZiBFTkFC
TEUoU1ZHKQogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCIKLSNp
bmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRUZW1wbGF0ZS5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzLmgiCisjaW5jbHVkZSAiRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+Ci1jbGFz
cyBTVkdBbmltYXRlZFByb3BlcnR5OworY2xhc3MgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVy
dHk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZT4KLWNsYXNzIFNWR0FuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmIDogcHVibGljIFNWR0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBl
PiB7CitjbGFzcyBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMg
RGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiB7CiBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlw
ZT46OlBhc3NUeXBlIFBhc3NUeXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7CisgICAg
dHlwZWRlZiB0eXBlbmFtZSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmlt
YXRlZFR5cGU+OjpQYXNzVHlwZSBQYXNzVHlwZTsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUg
UmV0dXJuVHlwZTsKIAotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8QW5p
bWF0ZWRUeXBlPiBTZWxmOwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRl
ZFR5cGU+IENyZWF0b3I7CisgICAgdHlwZWRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRlYXJPZmY8QW5pbWF0ZWRUeXBlPiBTZWxmOworICAgIHR5cGVkZWYgRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPiBDcmVhdG9yOwogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2VsZj4gY3JlYXRlKENyZWF0b3ImIGNyZWF0b3IsIFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KQogICAgIHsKQEAgLTYyLDE0ICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3JlYXRvci5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpOyB9CiAKIHByaXZhdGU6Ci0g
ICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYoQ3JlYXRvciYgY3JlYXRvciwgU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQpCisgICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUZWFy
T2ZmKENyZWF0b3ImIGNyZWF0b3IsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgICAg
ICA6IG1fY3JlYXRvcihjcmVhdG9yKQogICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4
dEVsZW1lbnQpCiAgICAgewogICAgICAgICBtX2NyZWF0b3Iuc2V0U2hvdWxkU3luY2hyb25pemUo
dHJ1ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYo
KQorICAgIHZpcnR1YWwgfkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZigpCiAg
ICAgewogICAgICAgICBtX2NyZWF0b3Iuc2V0U2hvdWxkU3luY2hyb25pemUoZmFsc2UpOwogICAg
IH0KQEAgLTc5LDM2ICs3OSwzNiBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
QW5pbWF0ZWRUeXBlPgotY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7CitjbGFzcyBEZXByZWNh
dGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+U1ZHQW5pbWF0
ZWRQcm9wZXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgfkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5KCkgeyB9CiAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFp
dHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFzc1R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFt
ZSBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJldHVyblR5cGUgUmV0
dXJuVHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8
QW5pbWF0ZWRUeXBlPjo6U3RvcmVkVHlwZSBTdG9yZWRUeXBlOworICAgIHR5cGVkZWYgdHlwZW5h
bWUgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFz
c1R5cGUgUGFzc1R5cGU7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBEZXByZWNhdGVkU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxB
bmltYXRlZFR5cGU+OjpTdG9yZWRUeXBlIFN0b3JlZFR5cGU7CiAKLSAgICBTVkdBbmltYXRlZFBy
b3BlcnR5KCkKLSAgICAgICAgOiBtX3ZhbHVlKFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5p
bWF0ZWRUeXBlPjo6bnVsbCgpKQorICAgIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5KCkK
KyAgICAgICAgOiBtX3ZhbHVlKERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFu
aW1hdGVkVHlwZT46Om51bGwoKSkKICAgICAgICAgLCBtX3Nob3VsZFN5bmNocm9uaXplKGZhbHNl
KQogICAgIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25zdHJ1Y3RvclBhcmFt
ZXRlck9uZT4KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IENvbnN0cnVjdG9yUGFyYW1l
dGVyT25lJiB2YWx1ZTEpCisgICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHkoY29uc3Qg
Q29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSkKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
MSkKICAgICAgICAgLCBtX3Nob3VsZFN5bmNocm9uaXplKGZhbHNlKQogICAgIHsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSwgdHlwZW5hbWUg
Q29uc3RydWN0b3JQYXJhbWV0ZXJUd28+Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBD
b25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxLCBjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRl
clR3byYgdmFsdWUyKQorICAgIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0IENv
bnN0cnVjdG9yUGFyYW1ldGVyT25lJiB2YWx1ZTEsIGNvbnN0IENvbnN0cnVjdG9yUGFyYW1ldGVy
VHdvJiB2YWx1ZTIpCiAgICAgICAgIDogbV92YWx1ZSh2YWx1ZTEsIHZhbHVlMikKICAgICAgICAg
LCBtX3Nob3VsZFN5bmNocm9uaXplKGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBSZXR1cm5U
eXBlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmlt
YXRlZFR5cGU+Ojp0b1JldHVyblR5cGUobV92YWx1ZSk7IH0KLSAgICBSZXR1cm5UeXBlIGJhc2VW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRU
eXBlPjo6dG9SZXR1cm5UeXBlKG1fdmFsdWUpOyB9CisgICAgUmV0dXJuVHlwZSB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVk
VHlwZT46OnRvUmV0dXJuVHlwZShtX3ZhbHVlKTsgfQorICAgIFJldHVyblR5cGUgYmFzZVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5p
bWF0ZWRUeXBlPjo6dG9SZXR1cm5UeXBlKG1fdmFsdWUpOyB9CiAKICAgICB2b2lkIHNldFZhbHVl
KFBhc3NUeXBlIHR5cGUpIHsgbV92YWx1ZSA9IHR5cGU7IH0KICAgICB2b2lkIHNldEJhc2VWYWx1
ZShQYXNzVHlwZSB0eXBlKSB7IG1fdmFsdWUgPSB0eXBlOyB9CkBAIC0xMjcsMjkgKzEyNywyOSBA
QCBwcm90ZWN0ZWQ6CiAKIC8vIEhlbHBlciBtYWNybyB1c2VkIHdpdGhpbiBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZIGJlbG93CiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25l
clR5cGUsIERPTUF0dHJpYnV0ZSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5KSBcCi1jbGFz
cyBTVkdBbmltYXRlZFByb3BlcnR5IyNVcHBlclByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHk8QW5pbWF0ZWRUeXBlPiB7IFwKK2NsYXNzIERlcHJlY2F0ZWRTVkdBbmltYXRlZFBy
b3BlcnR5IyNVcHBlclByb3BlcnR5IDogcHVibGljIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5PEFuaW1hdGVkVHlwZT4geyBcCiBwdWJsaWM6IFwKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5
IyNVcHBlclByb3BlcnR5KCkgXAotICAgICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0
ZWRUeXBlPigpIFwKKyAgICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9w
ZXJ0eSgpIFwKKyAgICAgICAgOiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRl
ZFR5cGU+KCkgXAogICAgIHsgXAogICAgIH0gXAogICAgIFwKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZT4gXAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1Vw
cGVyUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUmIHZhbHVlMSkgXAotICAg
ICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPih2YWx1ZTEpIFwKKyAgICBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eShjb25zdCBDb25zdHJ1
Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxKSBcCisgICAgICAgIDogRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPih2YWx1ZTEpIFwKICAgICB7IFwKICAgICB9IFwKICAg
ICBcCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmUsIHR5cGVu
YW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyVHdvPiBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMj
VXBwZXJQcm9wZXJ0eShjb25zdCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxLCBjb25z
dCBDb25zdHJ1Y3RvclBhcmFtZXRlclR3byYgdmFsdWUyKSBcCi0gICAgICAgIDogU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+KHZhbHVlMSwgdmFsdWUyKSBcCisgICAgRGVwcmVjYXRl
ZFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkoY29uc3QgQ29uc3RydWN0b3JQYXJh
bWV0ZXJPbmUmIHZhbHVlMSwgY29uc3QgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28mIHZhbHVlMikg
XAorICAgICAgICA6IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4o
dmFsdWUxLCB2YWx1ZTIpIFwKICAgICB7IFwKICAgICB9IFwKICAgICBcCiAgICAgdm9pZCBzeW5j
aHJvbml6ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkgXAogICAgIHsgXAogICAgICAgICBB
U1NFUlQobV9zaG91bGRTeW5jaHJvbml6ZSk7IFwKLSAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVl
KFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6dG9TdHJpbmcoYmFzZVZh
bHVlKCkpKTsgXAorICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUoRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6dG9TdHJpbmcoYmFzZVZhbHVlKCkpKTsg
XAogICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPElzRGVyaXZlZEZyb21T
VkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQs
IERPTUF0dHJpYnV0ZSwgdmFsdWUpOyBcCiAgICAgfSBcCiAgICAgXApAQCAtMTYyLDI5ICsxNjIs
MjkgQEAgcHVibGljOiBcCiAvLyBIZWxwZXIgbWFjcm8gc2hhcmVkIGJ5IERFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVFkgLyBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX01VTFRJUExFX1dSQVBQRVJT
CiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfU0hBUkVEKE93bmVyVHlwZSwgRE9N
QXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBBbmltYXRlZFR5cGUsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIHByaXZhdGU6IFwKLSAgICB0eXBlZGVmIFNWR0Fu
aW1hdGVkUHJvcGVydHlUZWFyT2ZmPEFuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmYjI1VwcGVyUHJvcGVydHk7IFwKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZjxBbmltYXRlZFR5cGU+IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eTsgXAogICAgIERFRklORV9BTklNQVRFRF9QUk9QRVJU
WShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgQW5pbWF0ZWRUeXBlLCBVcHBlclByb3BlcnR5KTsg
XAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkjI1VwcGVyUHJvcGVydHkgbV8jI0xvd2VyUHJvcGVy
dHk7IFwKKyAgICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eSBt
XyMjTG93ZXJQcm9wZXJ0eTsgXAogICAgIFwKIHB1YmxpYzogXAotICAgIFNWR0FuaW1hdGVkUHJv
cGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBMb3dlclByb3BlcnR5KCkgY29u
c3QgXAorICAgIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlw
ZT46OlJldHVyblR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IFwKICAgICB7IFwKICAgICAgICAg
cmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlKCk7IFwKICAgICB9IFwKICAgICBcCi0gICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIExvd2Vy
UHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IFwKKyAgICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIExvd2VyUHJvcGVydHkjI0Jh
c2VWYWx1ZSgpIGNvbnN0IFwKICAgICB7IFwKICAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3Bl
cnR5LmJhc2VWYWx1ZSgpOyBcCiAgICAgfSBcCiAgICAgXAotICAgIHZvaWQgc2V0IyNVcHBlclBy
b3BlcnR5KFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUg
dHlwZSkgXAorICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5KERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIHR5cGUpIFwKICAgICB7IFwK
ICAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkuc2V0VmFsdWUodHlwZSk7IFwKICAgICAgICAgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlw
ZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1l
bnQodGhpcyk7IFwKICAgICAgICAgY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1
dGVzKCk7IFwKICAgICB9IFwKICAgICBcCi0gICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkjI0Jh
c2VWYWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBl
IHR5cGUpIFwKKyAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKERlcHJlY2F0
ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIHR5cGUp
IFwKICAgICB7IFwKICAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkuc2V0QmFzZVZhbHVlKHR5cGUp
OyBcCiAgICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50
Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZh
bHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCkBAIC0xOTksMTAgKzE5OSwxMCBAQCBwdWJsaWM6
IFwKICAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkuc3luY2hyb25pemUoY29udGV4dEVsZW1lbnQp
OyBcCiAgICAgfSBcCiAgICAgXAotICAgIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmYjI1VwcGVyUHJvcGVydHk+IExvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgXAorICAgIFBh
c3NSZWZQdHI8RGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmIyNVcHBlclByb3Bl
cnR5PiBMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIFwKICAgICB7IFwKICAgICAgICAgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwg
SXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1lbnQo
dGhpcyk7IFwKLSAgICAgICAgcmV0dXJuIGxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxBbmltYXRlZFR5
cGUsIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmIyNVcHBlclByb3BlcnR5Pihjb250ZXh0RWxl
bWVudCwgbV8jI0xvd2VyUHJvcGVydHksIERPTUF0dHJpYnV0ZSk7IFwKKyAgICAgICAgcmV0dXJu
IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxBbmltYXRlZFR5cGUsIERlcHJlY2F0ZWRTVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eT4oY29udGV4dEVsZW1lbnQsIG1fIyNMb3dl
clByb3BlcnR5LCBET01BdHRyaWJ1dGUpOyBcCiAgICAgfQogCiAvLyBVc2VkIGZvciBTVkcgRE9N
IHByb3BlcnRpZXMgdGhhdCBtYXAgZXhhY3RseSB0byBvbmUgWE1MIERPTSBhdHRyaWJ1dGUKSW5k
ZXg6IFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFp
dHMuaAkocmV2aXNpb24gNzAwNTcpCShmcm9tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVy
dHlUcmFpdHMuaDo3MDA1NykKKysrIFdlYkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0c19oCisjZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHNfaAor
CisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3Ro
LmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1ZGUgIlNWR051bWJlckxpc3Qu
aCIKKyNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCisjaW5jbHVkZSAiU1ZHVHJh
bnNmb3JtTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFR5cGU+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cyA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7IH07CisKKy8vIFNWR0FuaW1hdGVkQW5nbGUKK3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR0FuZ2xlPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Cisg
ICAgdHlwZWRlZiBjb25zdCBTVkdBbmdsZSYgUGFzc1R5cGU7CisgICAgdHlwZWRlZiBTVkdBbmds
ZSBSZXR1cm5UeXBlOworICAgIHR5cGVkZWYgU1ZHQW5nbGUgU3RvcmVkVHlwZTsKKworICAgIHN0
YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBTVkdBbmdsZSgpOyB9CisgICAgc3RhdGlj
IFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJu
IHR5cGU7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0
dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Cit9OworCisvLyBTVkdBbmltYXRlZEJvb2xlYW4K
K3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGJvb2w+IDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKKyAgICB0eXBlZGVmIGNvbnN0IGJvb2wmIFBhc3NUeXBlOworICAg
IHR5cGVkZWYgYm9vbCBSZXR1cm5UeXBlOworICAgIHR5cGVkZWYgYm9vbCBTdG9yZWRUeXBlOwor
CisgICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3Rh
dGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0
dXJuIHR5cGU7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsg
cmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9Cit9OworCisvLyBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxp
bnQ+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICB0eXBlZGVmIGNvbnN0IGludCYgUGFzc1R5
cGU7CisgICAgdHlwZWRlZiBpbnQgUmV0dXJuVHlwZTsKKyAgICB0eXBlZGVmIGludCBTdG9yZWRU
eXBlOworCisgICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgpIHsgcmV0dXJuIDA7IH0KKyAgICBz
dGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyBy
ZXR1cm4gdHlwZTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoUGFzc1R5cGUgdHlwZSkg
eyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KK307CisKKy8vIFNWR0FuaW1hdGVkSW50
ZWdlcgordGVtcGxhdGU8Pgorc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8bG9uZz4g
OiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHR5cGVkZWYgY29uc3QgbG9uZyYgUGFzc1R5cGU7
CisgICAgdHlwZWRlZiBsb25nIFJldHVyblR5cGU7CisgICAgdHlwZWRlZiBsb25nIFN0b3JlZFR5
cGU7CisKKyAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkgeyByZXR1cm4gMGw7IH0KKyAgICBz
dGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyBy
ZXR1cm4gdHlwZTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoUGFzc1R5cGUgdHlwZSkg
eyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KK307CisKKy8vIFNWR0FuaW1hdGVkTGVu
Z3RoCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdMZW5n
dGg+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICB0eXBlZGVmIGNvbnN0IFNWR0xlbmd0aCYg
UGFzc1R5cGU7CisgICAgdHlwZWRlZiBTVkdMZW5ndGggUmV0dXJuVHlwZTsKKyAgICB0eXBlZGVm
IFNWR0xlbmd0aCBTdG9yZWRUeXBlOworCisgICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgpIHsg
cmV0dXJuIFNWR0xlbmd0aCgpOyB9CisgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBl
KGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygp
OyB9Cit9OworCisvLyBTVkdBbmltYXRlZExlbmd0aExpc3QKK3RlbXBsYXRlPD4KK3N0cnVjdCBT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3QqPiA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CisgICAgdHlwZWRlZiBTVkdMZW5ndGhMaXN0KiBQYXNzVHlwZTsKKyAgICB0eXBlZGVm
IFNWR0xlbmd0aExpc3QqIFJldHVyblR5cGU7CisgICAgdHlwZWRlZiBSZWZQdHI8U1ZHTGVuZ3Ro
TGlzdD4gU3RvcmVkVHlwZTsKKworICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVy
biAwOyB9CisgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5
cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUuZ2V0KCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyB0eXBlLT52YWx1ZUFzU3RyaW5nKCkg
OiBTdHJpbmcoKTsgfQorfTsKKworLy8gU1ZHQW5pbWF0ZWROdW1iZXIKK3RlbXBsYXRlPD4KK3N0
cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGZsb2F0PiA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CisgICAgdHlwZWRlZiBjb25zdCBmbG9hdCYgUGFzc1R5cGU7CisgICAgdHlwZWRlZiBmbG9h
dCBSZXR1cm5UeXBlOworICAgIHR5cGVkZWYgZmxvYXQgU3RvcmVkVHlwZTsKKworICAgIHN0YXRp
YyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiAwLjBmOyB9CisgICAgc3RhdGljIFJldHVyblR5
cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0K
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIFN0cmlu
Zzo6bnVtYmVyKHR5cGUpOyB9Cit9OworCisvLyBTVkdBbmltYXRlZE51bWJlckxpc3QKK3RlbXBs
YXRlPD4KK3N0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR051bWJlckxpc3QqPiA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgdHlwZWRlZiBTVkdOdW1iZXJMaXN0KiBQYXNzVHlw
ZTsKKyAgICB0eXBlZGVmIFNWR051bWJlckxpc3QqIFJldHVyblR5cGU7CisgICAgdHlwZWRlZiBS
ZWZQdHI8U1ZHTnVtYmVyTGlzdD4gU3RvcmVkVHlwZTsKKworICAgIHN0YXRpYyBSZXR1cm5UeXBl
IG51bGwoKSB7IHJldHVybiAwOyB9CisgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBl
KGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUuZ2V0KCk7IH0KKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyB0eXBlLT52
YWx1ZUFzU3RyaW5nKCkgOiBTdHJpbmcoKTsgfQorfTsKKworLy8gU1ZHQW5pbWF0ZWRQcmVzZXJ2
ZUFzcGVjdFJhdGlvCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0
czxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgdHlw
ZWRlZiBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBQYXNzVHlwZTsKKyAgICB0eXBlZGVm
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gUmV0dXJuVHlwZTsKKyAgICB0eXBlZGVmIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8gU3RvcmVkVHlwZTsKKworICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwo
KSB7IHJldHVybiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7IH0KKyAgICBzdGF0aWMgUmV0dXJu
VHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZTsg
fQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoUGFzc1R5cGUgdHlwZSkgeyByZXR1cm4gdHlw
ZS52YWx1ZUFzU3RyaW5nKCk7IH0KK307CisKKy8vIFNWR0FuaW1hdGVkUmVjdAordGVtcGxhdGU8
Pgorc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8RmxvYXRSZWN0PiA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CisgICAgdHlwZWRlZiBjb25zdCBGbG9hdFJlY3QmIFBhc3NUeXBlOworICAg
IHR5cGVkZWYgRmxvYXRSZWN0IFJldHVyblR5cGU7CisgICAgdHlwZWRlZiBGbG9hdFJlY3QgU3Rv
cmVkVHlwZTsKKworICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBGbG9hdFJl
Y3QoKTsgfQorICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0dXJuVHlwZShjb25zdCBTdG9yZWRU
eXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQ
YXNzVHlwZSB0eXBlKSB7IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJWYgJWYgJWYgJWYiLCB0eXBl
LngoKSwgdHlwZS55KCksIHR5cGUud2lkdGgoKSwgdHlwZS5oZWlnaHQoKSk7IH0KK307CisKKy8v
IFNWR0FuaW1hdGVkU3RyaW5nCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRyYWl0czxTdHJpbmc+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICB0eXBlZGVmIGNvbnN0
IFN0cmluZyYgUGFzc1R5cGU7CisgICAgdHlwZWRlZiBTdHJpbmcgUmV0dXJuVHlwZTsKKyAgICB0
eXBlZGVmIFN0cmluZyBTdG9yZWRUeXBlOworCisgICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgp
IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBl
KGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KK307CisKKy8vIFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdAordGVtcGxhdGU8Pgorc3RydWN0IFNWR0FuaW1hdGVkUHJv
cGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlzdCo+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAg
ICB0eXBlZGVmIFNWR1RyYW5zZm9ybUxpc3QqIFBhc3NUeXBlOworICAgIHR5cGVkZWYgU1ZHVHJh
bnNmb3JtTGlzdCogUmV0dXJuVHlwZTsKKyAgICB0eXBlZGVmIFJlZlB0cjxTVkdUcmFuc2Zvcm1M
aXN0PiBTdG9yZWRUeXBlOworCisgICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgpIHsgcmV0dXJu
IDA7IH0KKyAgICBzdGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlw
ZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5nZXQoKTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJp
bmcoUGFzc1R5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA/IHR5cGUtPnZhbHVlQXNTdHJpbmcoKSA6
IFN0cmluZygpOyB9Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2
Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgJKHJldmlzaW9u
IDcwMDU3KQorKysgV2ViQ29yZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFp
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsOCBAQAogICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzX2gK
LSNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0c19oCisjaWZuZGVmIERlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzX2gKKyNkZWZpbmUgRGVwcmVjYXRlZFNWR0FuaW1hdGVk
UHJvcGVydHlUcmFpdHNfaAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKQEAgLTM0LDExICszNCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUeXBlPgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMgOiBwdWJsaWMg
Tm9uY29weWFibGUgeyB9Oworc3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzIDogcHVibGljIE5vbmNvcHlhYmxlIHsgfTsKIAogLy8gU1ZHQW5pbWF0ZWRBbmdsZQogdGVt
cGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHQW5nbGU+IDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKK3N0cnVjdCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRy
YWl0czxTVkdBbmdsZT4gOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHR5cGVkZWYgY29uc3Qg
U1ZHQW5nbGUmIFBhc3NUeXBlOwogICAgIHR5cGVkZWYgU1ZHQW5nbGUgUmV0dXJuVHlwZTsKICAg
ICB0eXBlZGVmIFNWR0FuZ2xlIFN0b3JlZFR5cGU7CkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR0FuZ2wKIAogLy8gU1ZHQW5pbWF0ZWRCb29sZWFu
CiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxib29sPiA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CitzdHJ1Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlU
cmFpdHM8Ym9vbD4gOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHR5cGVkZWYgY29uc3QgYm9v
bCYgUGFzc1R5cGU7CiAgICAgdHlwZWRlZiBib29sIFJldHVyblR5cGU7CiAgICAgdHlwZWRlZiBi
b29sIFN0b3JlZFR5cGU7CkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPGJvb2w+IDoKIAogLy8gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbgogdGVtcGxhdGU8
Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8aW50PiA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CitzdHJ1Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8aW50PiA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgdHlwZWRlZiBjb25zdCBpbnQmIFBhc3NUeXBlOwog
ICAgIHR5cGVkZWYgaW50IFJldHVyblR5cGU7CiAgICAgdHlwZWRlZiBpbnQgU3RvcmVkVHlwZTsK
QEAgLTc0LDcgKzc0LDcgQEAgc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8aW50PiA6
IAogCiAvLyBTVkdBbmltYXRlZEludGVnZXIKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRl
ZFByb3BlcnR5VHJhaXRzPGxvbmc+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3N0cnVjdCBEZXBy
ZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxsb25nPiA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CiAgICAgdHlwZWRlZiBjb25zdCBsb25nJiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIGxvbmcg
UmV0dXJuVHlwZTsKICAgICB0eXBlZGVmIGxvbmcgU3RvcmVkVHlwZTsKQEAgLTg2LDcgKzg2LDcg
QEAgc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8bG9uZz4gOgogCiAvLyBTVkdBbmlt
YXRlZExlbmd0aAogdGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8
U1ZHTGVuZ3RoPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitzdHJ1Y3QgRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAg
ICAgdHlwZWRlZiBjb25zdCBTVkdMZW5ndGgmIFBhc3NUeXBlOwogICAgIHR5cGVkZWYgU1ZHTGVu
Z3RoIFJldHVyblR5cGU7CiAgICAgdHlwZWRlZiBTVkdMZW5ndGggU3RvcmVkVHlwZTsKQEAgLTk4
LDcgKzk4LDcgQEAgc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHTGVuZwogCiAv
LyBTVkdBbmltYXRlZExlbmd0aExpc3QKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitzdHJ1
Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoTGlzdCo+IDog
cHVibGljIE5vbmNvcHlhYmxlIHsKICAgICB0eXBlZGVmIFNWR0xlbmd0aExpc3QqIFBhc3NUeXBl
OwogICAgIHR5cGVkZWYgU1ZHTGVuZ3RoTGlzdCogUmV0dXJuVHlwZTsKICAgICB0eXBlZGVmIFJl
ZlB0cjxTVkdMZW5ndGhMaXN0PiBTdG9yZWRUeXBlOwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0cnVj
dCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR0xlbmcKIAogLy8gU1ZHQW5pbWF0ZWROdW1i
ZXIKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGZsb2F0PiA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CitzdHJ1Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVy
dHlUcmFpdHM8ZmxvYXQ+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICB0eXBlZGVmIGNvbnN0
IGZsb2F0JiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIGZsb2F0IFJldHVyblR5cGU7CiAgICAgdHlw
ZWRlZiBmbG9hdCBTdG9yZWRUeXBlOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0cnVjdCBTVkdBbmlt
YXRlZFByb3BlcnR5VHJhaXRzPGZsb2F0PiAKIAogLy8gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0CiB0
ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdOdW1iZXJMaXN0
Kj4gOiBwdWJsaWMgTm9uY29weWFibGUgeworc3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzPFNWR051bWJlckxpc3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAg
dHlwZWRlZiBTVkdOdW1iZXJMaXN0KiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIFNWR051bWJlckxp
c3QqIFJldHVyblR5cGU7CiAgICAgdHlwZWRlZiBSZWZQdHI8U1ZHTnVtYmVyTGlzdD4gU3RvcmVk
VHlwZTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0
czxTVkdOdW1iCiAKIC8vIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbwogdGVtcGxhdGU8
Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVBc3BlY3RSYXRp
bz4gOiBwdWJsaWMgTm9uY29weWFibGUgeworc3RydWN0IERlcHJlY2F0ZWRTVkdBbmltYXRlZFBy
b3BlcnR5VHJhaXRzPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IDogcHVibGljIE5vbmNvcHlhYmxl
IHsKICAgICB0eXBlZGVmIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIFBhc3NUeXBlOwog
ICAgIHR5cGVkZWYgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBSZXR1cm5UeXBlOwogICAgIHR5cGVk
ZWYgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBTdG9yZWRUeXBlOwpAQCAtMTQ2LDcgKzE0Niw3IEBA
IHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR1ByZXMKIAogLy8gU1ZHQW5pbWF0
ZWRSZWN0CiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxGbG9h
dFJlY3Q+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3N0cnVjdCBEZXByZWNhdGVkU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0czxGbG9hdFJlY3Q+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICB0
eXBlZGVmIGNvbnN0IEZsb2F0UmVjdCYgUGFzc1R5cGU7CiAgICAgdHlwZWRlZiBGbG9hdFJlY3Qg
UmV0dXJuVHlwZTsKICAgICB0eXBlZGVmIEZsb2F0UmVjdCBTdG9yZWRUeXBlOwpAQCAtMTU4LDcg
KzE1OCw3IEBAIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEZsb2F0UmUKIAogLy8g
U1ZHQW5pbWF0ZWRTdHJpbmcKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5
VHJhaXRzPFN0cmluZz4gOiBwdWJsaWMgTm9uY29weWFibGUgeworc3RydWN0IERlcHJlY2F0ZWRT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFN0cmluZz4gOiBwdWJsaWMgTm9uY29weWFibGUgewog
ICAgIHR5cGVkZWYgY29uc3QgU3RyaW5nJiBQYXNzVHlwZTsKICAgICB0eXBlZGVmIFN0cmluZyBS
ZXR1cm5UeXBlOwogICAgIHR5cGVkZWYgU3RyaW5nIFN0b3JlZFR5cGU7CkBAIC0xNzAsNyArMTcw
LDcgQEAgc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U3RyaW5nPgogCiAvLyBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QKIHRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPFNWR1RyYW5zZm9ybUxpc3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitzdHJ1
Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlzdCo+
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICB0eXBlZGVmIFNWR1RyYW5zZm9ybUxpc3QqIFBh
c3NUeXBlOwogICAgIHR5cGVkZWYgU1ZHVHJhbnNmb3JtTGlzdCogUmV0dXJuVHlwZTsKICAgICB0
eXBlZGVmIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiBTdG9yZWRUeXBlOwpJbmRleDogV2ViQ29y
ZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCShyZXZpc2lvbiA3MDA1NykJ
KGZyb20gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oOjcwMDU3KQorKysgV2ViQ29y
ZS9zdmcvRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNWR0Fu
aW1hdGVkVGVtcGxhdGVfaAorI2RlZmluZSBTVkdBbmltYXRlZFRlbXBsYXRlX2gKKworI2lmIEVO
QUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgCisgICAgY2xhc3MgU1ZHQW5nbGU7CisgICAgY2xhc3MgU1ZHRWxlbWVu
dDsKKyAgICBjbGFzcyBTVkdMZW5ndGhMaXN0OworICAgIGNsYXNzIFNWR051bWJlckxpc3Q7Cisg
ICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzsKKyAgICBjbGFzcyBTVkdUcmFuc2Zvcm1M
aXN0OworICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7CisKKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRU
eXBlV3JhcHBlcktleSB7ICAgICAgICAgICAgCisgICAgICAgIC8vIEVtcHR5IHZhbHVlCisgICAg
ICAgIFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkoKQorICAgICAgICAgICAgOiBlbGVtZW50KDAp
CisgICAgICAgICAgICAsIGF0dHJpYnV0ZU5hbWUoMCkKKyAgICAgICAgeyB9CisKKyAgICAgICAg
Ly8gRGVsZXRlZCB2YWx1ZQorICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgIDogZWxlbWVudChyZWludGVy
cHJldF9jYXN0PFNWR0VsZW1lbnQqPigtMSkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudCA9PSByZWludGVycHJldF9jYXN0PFNWR0VsZW1lbnQqPigt
MSk7CisgICAgICAgIH0KKworICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KGNvbnN0
IFNWR0VsZW1lbnQqIF9lbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIF9hdHRyaWJ1dGVOYW1l
KQorICAgICAgICAgICAgOiBlbGVtZW50KF9lbGVtZW50KQorICAgICAgICAgICAgLCBhdHRyaWJ1
dGVOYW1lKF9hdHRyaWJ1dGVOYW1lLmltcGwoKSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGVsZW1lbnQpOworICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZU5hbWUpOworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBw
ZXJLZXkmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dCA9PSBvdGhlci5lbGVtZW50ICYmIGF0dHJpYnV0ZU5hbWUgPT0gb3RoZXIuYXR0cmlidXRlTmFt
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQ7CisgICAg
ICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0dHJpYnV0ZU5hbWU7CisgICAgfTsKKyAgICAKKyAgICBz
dHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2ggeworICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBrZXkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJl
dF9jYXN0PGNvbnN0IFVDaGFyKj4oJmtleSksIHNpemVvZihTVkdBbmltYXRlZFR5cGVXcmFwcGVy
S2V5KSAvIHNpemVvZihVQ2hhcikpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgYSwgY29uc3QgU1ZHQW5pbWF0
ZWRUeXBlV3JhcHBlcktleSYgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0g
YjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgc3RydWN0IFNWR0FuaW1hdGVk
VHlwZVdyYXBwZXJLZXlIYXNoVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxTVkdBbmlt
YXRlZFR5cGVXcmFwcGVyS2V5PiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSB0cnVlOworCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRW
YWx1ZShTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBzbG90KQorICAgICAgICB7CisgICAgICAg
ICAgICBuZXcgKCZzbG90KSBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZFZhbHVlKGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIHZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAg
ICAgICAgfQorICAgIH07CisgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgor
ICAgIGNsYXNzIFNWR0FuaW1hdGVkVGVtcGxhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdBbmlt
YXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4gPiB7CisgICAgcHVibGljOgorICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFz
c1R5cGUgUGFzc1R5cGU7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7CisKKyAgICAg
ICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRUZW1wbGF0ZSgpIHsgZm9yZ2V0V3JhcHBlcih0aGlzKTsg
fQorCisgICAgICAgIHZpcnR1YWwgUmV0dXJuVHlwZSBiYXNlVmFsKCkgY29uc3QgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFzZVZhbChQYXNzVHlwZSkgPSAwOworCisgICAgICAgIHZp
cnR1YWwgUmV0dXJuVHlwZSBhbmltVmFsKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0QW5pbVZhbChQYXNzVHlwZSkgPSAwOworCisgICAgICAgIHZpcnR1YWwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCA9IDA7CisKKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXksIFNWR0FuaW1hdGVk
VGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiosIFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoLCBT
VkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaFRyYWl0cyA+IEVsZW1lbnRUb1dyYXBwZXJNYXA7
CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRWxlbWVudFRvV3JhcHBlck1hcDo6Y29uc3RfaXRl
cmF0b3IgRWxlbWVudFRvV3JhcHBlck1hcEl0ZXJhdG9yOworCisgICAgICAgIHN0YXRpYyBFbGVt
ZW50VG9XcmFwcGVyTWFwKiB3cmFwcGVyQ2FjaGUoKQorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgRWxlbWVudFRvV3JhcHBlck1hcCogc193cmFwcGVyQ2FjaGUgPSBuZXcgRWxlbWVudFRv
V3JhcHBlck1hcDsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gc193cmFwcGVy
Q2FjaGU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgdm9pZCBmb3JnZXRXcmFwcGVyKFNW
R0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiogd3JhcHBlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgRWxlbWVudFRvV3JhcHBlck1hcCogY2FjaGUgPSB3cmFwcGVyQ2FjaGUoKTsKKyAg
ICAgICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVyYXRvciBpdHIgPSBjYWNoZS0+YmVnaW4o
KTsKKyAgICAgICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVyYXRvciBlbmQgPSBjYWNoZS0+
ZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRyICE9IGVuZDsgKytpdHIpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXRyLT5zZWNvbmQgPT0gd3JhcHBlcikgeworICAgICAgICAgICAgICAgICAg
ICBjYWNoZS0+cmVtb3ZlKGl0ci0+Zmlyc3QpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgorICAgIGNsYXNzIFNWR0FuaW1hdGVk
UHJvcGVydHk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1l
IEFuaW1hdGVkVGVhck9mZj4KKyAgICBQYXNzUmVmUHRyPEFuaW1hdGVkVGVhck9mZj4gbG9va3Vw
T3JDcmVhdGVXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIFNWR0FuaW1hdGVkUHJvcGVydHk8
QW5pbWF0ZWRUeXBlPiYgY3JlYXRvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisg
ICAgeworICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5IGtleShlbGVtZW50LCBhdHRy
TmFtZS5sb2NhbE5hbWUoKSk7CisgICAgICAgIFJlZlB0cjxBbmltYXRlZFRlYXJPZmY+IHdyYXBw
ZXIgPSBzdGF0aWNfY2FzdDxBbmltYXRlZFRlYXJPZmYqPihBbmltYXRlZFRlYXJPZmY6OndyYXBw
ZXJDYWNoZSgpLT5nZXQoa2V5KSk7CisKKyAgICAgICAgaWYgKCF3cmFwcGVyKSB7CisgICAgICAg
ICAgICB3cmFwcGVyID0gQW5pbWF0ZWRUZWFyT2ZmOjpjcmVhdGUoY3JlYXRvciwgZWxlbWVudCk7
CisgICAgICAgICAgICBBbmltYXRlZFRlYXJPZmY6OndyYXBwZXJDYWNoZSgpLT5zZXQoa2V5LCB3
cmFwcGVyLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVh
c2UoKTsKKyAgICB9CisKKyAgICAvLyBDb21tb24gdHlwZSBkZWZpbml0aW9ucywgdG8gZWFzZSBJ
REwgZ2VuZXJhdGlvbi4KKyAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHQW5nbGU+
IFNWR0FuaW1hdGVkQW5nbGU7CisgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGJvb2w+
IFNWR0FuaW1hdGVkQm9vbGVhbjsKKyAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8aW50
PiBTVkdBbmltYXRlZEVudW1lcmF0aW9uOworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0
ZTxsb25nPiBTVkdBbmltYXRlZEludGVnZXI7CisgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBs
YXRlPFNWR0xlbmd0aD4gU1ZHQW5pbWF0ZWRMZW5ndGg7CisgICAgdHlwZWRlZiBTVkdBbmltYXRl
ZFRlbXBsYXRlPFNWR0xlbmd0aExpc3QqPiBTVkdBbmltYXRlZExlbmd0aExpc3Q7CisgICAgdHlw
ZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGZsb2F0PiBTVkdBbmltYXRlZE51bWJlcjsKKyAgICB0
eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTnVtYmVyTGlzdCo+IFNWR0FuaW1hdGVkTnVt
YmVyTGlzdDsgCisgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8+IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzsKKyAgICB0eXBlZGVmIFNW
R0FuaW1hdGVkVGVtcGxhdGU8RmxvYXRSZWN0PiBTVkdBbmltYXRlZFJlY3Q7CisgICAgdHlwZWRl
ZiBTVkdBbmltYXRlZFRlbXBsYXRlPFN0cmluZz4gU1ZHQW5pbWF0ZWRTdHJpbmc7CisgICAgdHlw
ZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR1RyYW5zZm9ybUxpc3QqPiBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3Q7CisKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL0Rl
cHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
RGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUuaAkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJD
b3JlL3N2Zy9EZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOCwxMSArMTgsMTEgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAK
LSNpZm5kZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZV9oCi0jZGVmaW5lIFNWR0FuaW1hdGVkVGVtcGxh
dGVfaAorI2lmbmRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZV9oCisjZGVmaW5lIERl
cHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlX2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zNiwxNSArMzYsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAgICAgY2xhc3MgUXVhbGlmaWVkTmFt
ZTsKIAotICAgIHN0cnVjdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5IHsgICAgICAgICAgICAK
KyAgICBzdHJ1Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkgeyAgICAgICAg
ICAgIAogICAgICAgICAvLyBFbXB0eSB2YWx1ZQotICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFw
cGVyS2V5KCkKKyAgICAgICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkoKQog
ICAgICAgICAgICAgOiBlbGVtZW50KDApCiAgICAgICAgICAgICAsIGF0dHJpYnV0ZU5hbWUoMCkK
ICAgICAgICAgeyB9CiAKICAgICAgICAgLy8gRGVsZXRlZCB2YWx1ZQotICAgICAgICBTVkdBbmlt
YXRlZFR5cGVXcmFwcGVyS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAg
ICAgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKQogICAgICAgICAgICAgOiBlbGVtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8U1ZH
RWxlbWVudCo+KC0xKSkKICAgICAgICAgewogICAgICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09IHJlaW50ZXJw
cmV0X2Nhc3Q8U1ZHRWxlbWVudCo+KC0xKTsKICAgICAgICAgfQogCi0gICAgICAgIFNWR0FuaW1h
dGVkVHlwZVdyYXBwZXJLZXkoY29uc3QgU1ZHRWxlbWVudCogX2VsZW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgX2F0dHJpYnV0ZU5hbWUpCisgICAgICAgIERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5
cGVXcmFwcGVyS2V5KGNvbnN0IFNWR0VsZW1lbnQqIF9lbGVtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIF9hdHRyaWJ1dGVOYW1lKQogICAgICAgICAgICAgOiBlbGVtZW50KF9lbGVtZW50KQogICAg
ICAgICAgICAgLCBhdHRyaWJ1dGVOYW1lKF9hdHRyaWJ1dGVOYW1lLmltcGwoKSkKICAgICAgICAg
ewpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBBU1NF
UlQoYXR0cmlidXRlTmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgb3RoZXIpIGNvbnN0CisgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYg
b3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09IG90
aGVyLmVsZW1lbnQgJiYgYXR0cmlidXRlTmFtZSA9PSBvdGhlci5hdHRyaWJ1dGVOYW1lOwogICAg
ICAgICB9CkBAIC03MSwxMyArNzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBB
dG9taWNTdHJpbmdJbXBsKiBhdHRyaWJ1dGVOYW1lOwogICAgIH07CiAgICAgCi0gICAgc3RydWN0
IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYga2V5KQorICAgIHN0cnVjdCBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2ggeworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYg
a2V5KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhh
c2gocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KCZrZXkpLCBzaXplb2YoU1ZHQW5pbWF0
ZWRUeXBlV3JhcHBlcktleSkgLyBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgIHJldHVybiBT
dHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oJmtl
eSksIHNpemVvZihEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSkgLyBzaXplb2Yo
VUNoYXIpKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNW
R0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIGEsIGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJL
ZXkmIGIpCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IERlcHJlY2F0ZWRTVkdBbmlt
YXRlZFR5cGVXcmFwcGVyS2V5JiBhLCBjb25zdCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3Jh
cHBlcktleSYgYikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKICAgICAg
ICAgfQpAQCAtODUsMjcgKzg1LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwogICAg
IH07CiAKLSAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2hUcmFpdHMgOiBX
VEY6OkdlbmVyaWNIYXNoVHJhaXRzPFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXk+IHsKKyAgICBz
dHJ1Y3QgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoVHJhaXRzIDogV1RG
OjpHZW5lcmljSGFzaFRyYWl0czxEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleT4g
ewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKIAot
ICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoU1ZHQW5pbWF0ZWRUeXBl
V3JhcHBlcktleSYgc2xvdCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZh
bHVlKERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBzbG90KQogICAgICAgICB7
Ci0gICAgICAgICAgICBuZXcgKCZzbG90KSBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsKKyAgICAgICAgICAgIG5ldyAoJnNsb3QpIERlcHJlY2F0
ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFNW
R0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIHZhbHVlKQorICAgICAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShjb25zdCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgdmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpOwogICAgICAgICB9CiAgICAgfTsKICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBB
bmltYXRlZFR5cGU+Ci0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRUZW1wbGF0ZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFNWR0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiA+IHsKKyAgICBjbGFzcyBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlcHJlY2F0
ZWRTVkdBbmltYXRlZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4gPiB7CiAgICAgcHVibGljOgotICAg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRU
eXBlPjo6UGFzc1R5cGUgUGFzc1R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7
CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlU
cmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5cGUgUGFzc1R5cGU7CisgICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgRGVwcmVjYXRlZFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBl
Pjo6UmV0dXJuVHlwZSBSZXR1cm5UeXBlOwogCi0gICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVk
VGVtcGxhdGUoKSB7IGZvcmdldFdyYXBwZXIodGhpcyk7IH0KKyAgICAgICAgdmlydHVhbCB+RGVw
cmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGUoKSB7IGZvcmdldFdyYXBwZXIodGhpcyk7IH0KIAog
ICAgICAgICB2aXJ0dWFsIFJldHVyblR5cGUgYmFzZVZhbCgpIGNvbnN0ID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldEJhc2VWYWwoUGFzc1R5cGUpID0gMDsKQEAgLTExNSw3ICsxMTUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0ID0gMDsKIAotICAgICAgICB0eXBl
ZGVmIEhhc2hNYXA8U1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSwgU1ZHQW5pbWF0ZWRUZW1wbGF0
ZTxBbmltYXRlZFR5cGU+KiwgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2gsIFNWR0FuaW1h
dGVkVHlwZVdyYXBwZXJLZXlIYXNoVHJhaXRzID4gRWxlbWVudFRvV3JhcHBlck1hcDsKKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPERlcHJlY2F0ZWRTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5LCBE
ZXByZWNhdGVkU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxBbmltYXRlZFR5cGU+KiwgRGVwcmVjYXRlZFNW
R0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoLCBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3Jh
cHBlcktleUhhc2hUcmFpdHMgPiBFbGVtZW50VG9XcmFwcGVyTWFwOwogICAgICAgICB0eXBlZGVm
IHR5cGVuYW1lIEVsZW1lbnRUb1dyYXBwZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIEVsZW1lbnRUb1dy
YXBwZXJNYXBJdGVyYXRvcjsKIAogICAgICAgICBzdGF0aWMgRWxlbWVudFRvV3JhcHBlck1hcCog
d3JhcHBlckNhY2hlKCkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICByZXR1cm4gc193cmFwcGVyQ2FjaGU7CiAgICAgICAgIH0KIAotICAgICAgICBz
dGF0aWMgdm9pZCBmb3JnZXRXcmFwcGVyKFNWR0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBl
Piogd3JhcHBlcikKKyAgICAgICAgc3RhdGljIHZvaWQgZm9yZ2V0V3JhcHBlcihEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxBbmltYXRlZFR5cGU+KiB3cmFwcGVyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBFbGVtZW50VG9XcmFwcGVyTWFwKiBjYWNoZSA9IHdyYXBwZXJDYWNoZSgpOwog
ICAgICAgICAgICAgRWxlbWVudFRvV3JhcHBlck1hcEl0ZXJhdG9yIGl0ciA9IGNhY2hlLT5iZWdp
bigpOwpAQCAtMTM5LDEyICsxMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+Ci0gICAgY2xhc3MgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTsKKyAgICBjbGFzcyBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRUZWFy
T2ZmPgotICAgIFBhc3NSZWZQdHI8QW5pbWF0ZWRUZWFyT2ZmPiBsb29rdXBPckNyZWF0ZVdyYXBw
ZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+
JiBjcmVhdG9yLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKKyAgICBQYXNzUmVmUHRy
PEFuaW1hdGVkVGVhck9mZj4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1l
bnQsIERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4mIGNyZWF0b3Is
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHsKLSAgICAgICAgU1ZHQW5pbWF0
ZWRUeXBlV3JhcHBlcktleSBrZXkoZWxlbWVudCwgYXR0ck5hbWUubG9jYWxOYW1lKCkpOworICAg
ICAgICBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSBrZXkoZWxlbWVudCwgYXR0
ck5hbWUubG9jYWxOYW1lKCkpOwogICAgICAgICBSZWZQdHI8QW5pbWF0ZWRUZWFyT2ZmPiB3cmFw
cGVyID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRUZWFyT2ZmKj4oQW5pbWF0ZWRUZWFyT2ZmOjp3cmFw
cGVyQ2FjaGUoKS0+Z2V0KGtleSkpOwogCiAgICAgICAgIGlmICghd3JhcHBlcikgewpAQCAtMTU2
LDE4ICsxNTYsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH0KIAogICAgIC8vIENvbW1v
biB0eXBlIGRlZmluaXRpb25zLCB0byBlYXNlIElETCBnZW5lcmF0aW9uLgotICAgIHR5cGVkZWYg
U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdBbmdsZT4gU1ZHQW5pbWF0ZWRBbmdsZTsKLSAgICB0eXBl
ZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8Ym9vbD4gU1ZHQW5pbWF0ZWRCb29sZWFuOwotICAgIHR5
cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxpbnQ+IFNWR0FuaW1hdGVkRW51bWVyYXRpb247Ci0g
ICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGxvbmc+IFNWR0FuaW1hdGVkSW50ZWdlcjsK
LSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTGVuZ3RoPiBTVkdBbmltYXRlZExl
bmd0aDsKLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTGVuZ3RoTGlzdCo+IFNW
R0FuaW1hdGVkTGVuZ3RoTGlzdDsKLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8Zmxv
YXQ+IFNWR0FuaW1hdGVkTnVtYmVyOwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxT
VkdOdW1iZXJMaXN0Kj4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0OyAKLSAgICB0eXBlZGVmIFNWR0Fu
aW1hdGVkVGVtcGxhdGU8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4gU1ZHQW5pbWF0ZWRQcmVzZXJ2
ZUFzcGVjdFJhdGlvOwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxGbG9hdFJlY3Q+
IFNWR0FuaW1hdGVkUmVjdDsKLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U3RyaW5n
PiBTVkdBbmltYXRlZFN0cmluZzsKLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZH
VHJhbnNmb3JtTGlzdCo+IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDsKKyAgICB0eXBlZGVmIERl
cHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlPFNWR0FuZ2xlPiBTVkdBbmltYXRlZEFuZ2xlOwor
ICAgIHR5cGVkZWYgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8Ym9vbD4gU1ZHQW5pbWF0
ZWRCb29sZWFuOworICAgIHR5cGVkZWYgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8aW50
PiBTVkdBbmltYXRlZEVudW1lcmF0aW9uOworICAgIHR5cGVkZWYgRGVwcmVjYXRlZFNWR0FuaW1h
dGVkVGVtcGxhdGU8bG9uZz4gU1ZHQW5pbWF0ZWRJbnRlZ2VyOworICAgIHR5cGVkZWYgRGVwcmVj
YXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTGVuZ3RoPiBTVkdBbmltYXRlZExlbmd0aDsKKyAg
ICB0eXBlZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlPFNWR0xlbmd0aExpc3QqPiBT
VkdBbmltYXRlZExlbmd0aExpc3Q7CisgICAgdHlwZWRlZiBEZXByZWNhdGVkU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZTxmbG9hdD4gU1ZHQW5pbWF0ZWROdW1iZXI7CisgICAgdHlwZWRlZiBEZXByZWNhdGVk
U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdOdW1iZXJMaXN0Kj4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
OyAKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlPFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8+IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzsKKyAgICB0eXBlZGVm
IERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRlPEZsb2F0UmVjdD4gU1ZHQW5pbWF0ZWRSZWN0
OworICAgIHR5cGVkZWYgRGVwcmVjYXRlZFNWR0FuaW1hdGVkVGVtcGxhdGU8U3RyaW5nPiBTVkdB
bmltYXRlZFN0cmluZzsKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRTVkdBbmltYXRlZFRlbXBsYXRl
PFNWR1RyYW5zZm9ybUxpc3QqPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q7CiAKIH0KIApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaAkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjE3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBTVkdBbmltYXRlZFByb3Bl
cnR5X2gKLSNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eV9oCi0KLSNpZiBFTkFCTEUoU1ZHKQot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCIKLSNpbmNsdWRlICJT
VkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUZW1wbGF0
ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVk
VHlwZT4KLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFu
aW1hdGVkVHlwZT4KLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmIDogcHVibGljIFNW
R0FuaW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBl
IFBhc3NUeXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0
czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7Ci0KLSAgICB0eXBlZGVmIFNW
R0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPEFuaW1hdGVkVHlwZT4gU2VsZjsKLSAgICB0eXBlZGVm
IFNWR0FuaW1hdGVkUHJvcGVydHk8QW5pbWF0ZWRUeXBlPiBDcmVhdG9yOwotCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VsZj4gY3JlYXRlKENyZWF0b3ImIGNyZWF0b3IsIFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxmKGNy
ZWF0b3IsIGNvbnRleHRFbGVtZW50KSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldEJh
c2VWYWwoUGFzc1R5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIG1fY3JlYXRvci5zZXRCYXNlVmFs
dWUodHlwZSk7Ci0gICAgICAgIG1fY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1
dGVzKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoUGFzc1R5cGUgdHlw
ZSkKLSAgICB7Ci0gICAgICAgIG1fY3JlYXRvci5zZXRWYWx1ZSh0eXBlKTsKLSAgICAgICAgbV9j
b250ZXh0RWxlbWVudC0+aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIFJldHVyblR5cGUgYmFzZVZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRvci5iYXNl
VmFsdWUoKTsgfQotICAgIHZpcnR1YWwgUmV0dXJuVHlwZSBhbmltVmFsKCkgY29uc3QgeyByZXR1
cm4gbV9jcmVhdG9yLnZhbHVlKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdG9yLmFzc29j
aWF0ZWRBdHRyaWJ1dGVOYW1lKCk7IH0KLQotcHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZihDcmVhdG9yJiBjcmVhdG9yLCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkK
LSAgICAgICAgOiBtX2NyZWF0b3IoY3JlYXRvcikKLSAgICAgICAgLCBtX2NvbnRleHRFbGVtZW50
KGNvbnRleHRFbGVtZW50KQotICAgIHsKLSAgICAgICAgbV9jcmVhdG9yLnNldFNob3VsZFN5bmNo
cm9uaXplKHRydWUpOwotICAgIH0KLQotICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkUHJvcGVydHlU
ZWFyT2ZmKCkKLSAgICB7Ci0gICAgICAgIG1fY3JlYXRvci5zZXRTaG91bGRTeW5jaHJvbml6ZShm
YWxzZSk7Ci0gICAgfQotCi0gICAgQ3JlYXRvciYgbV9jcmVhdG9yOwotICAgIFJlZlB0cjxTVkdF
bGVtZW50PiBtX2NvbnRleHRFbGVtZW50OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0
ZWRUeXBlPgotY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpIHsgfQotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlBhc3NUeXBlIFBhc3NUeXBlOwot
ICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5
cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdBbmlt
YXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlN0b3JlZFR5cGUgU3RvcmVkVHlwZTsK
LQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoKQotICAgICAgICA6IG1fdmFsdWUoU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpudWxsKCkpCi0gICAgICAgICwgbV9zaG91
bGRTeW5jaHJvbml6ZShmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJPbmU+Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb25z
dCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxKQotICAgICAgICA6IG1fdmFsdWUodmFs
dWUxKQotICAgICAgICAsIG1fc2hvdWxkU3luY2hyb25pemUoZmFsc2UpCi0gICAgewotICAgIH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnN0cnVjdG9yUGFyYW1ldGVyT25lLCB0eXBlbmFt
ZSBDb25zdHJ1Y3RvclBhcmFtZXRlclR3bz4KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnN0
IENvbnN0cnVjdG9yUGFyYW1ldGVyT25lJiB2YWx1ZTEsIGNvbnN0IENvbnN0cnVjdG9yUGFyYW1l
dGVyVHdvJiB2YWx1ZTIpCi0gICAgICAgIDogbV92YWx1ZSh2YWx1ZTEsIHZhbHVlMikKLSAgICAg
ICAgLCBtX3Nob3VsZFN5bmNocm9uaXplKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXR1
cm5UeXBlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxB
bmltYXRlZFR5cGU+Ojp0b1JldHVyblR5cGUobV92YWx1ZSk7IH0KLSAgICBSZXR1cm5UeXBlIGJh
c2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0
ZWRUeXBlPjo6dG9SZXR1cm5UeXBlKG1fdmFsdWUpOyB9Ci0KLSAgICB2b2lkIHNldFZhbHVlKFBh
c3NUeXBlIHR5cGUpIHsgbV92YWx1ZSA9IHR5cGU7IH0KLSAgICB2b2lkIHNldEJhc2VWYWx1ZShQ
YXNzVHlwZSB0eXBlKSB7IG1fdmFsdWUgPSB0eXBlOyB9Ci0KLSAgICBib29sIHNob3VsZFN5bmNo
cm9uaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTeW5jaHJvbml6ZTsgfQotICAgIHZvaWQg
c2V0U2hvdWxkU3luY2hyb25pemUoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZFN5bmNocm9uaXplID0g
dmFsdWU7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0
dHJpYnV0ZU5hbWUoKSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBTdG9yZWRUeXBlIG1f
dmFsdWU7Ci0gICAgYm9vbCBtX3Nob3VsZFN5bmNocm9uaXplOwotfTsKLQotfTsKLQotLy8gSGVs
cGVyIG1hY3JvIHVzZWQgd2l0aGluIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkgYmVsb3cKLSNk
ZWZpbmUgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBB
bmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHkpIFwKLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHkj
I1VwcGVyUHJvcGVydHkgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+
IHsgXAotcHVibGljOiBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eSgp
IFwKLSAgICAgICAgOiBTVkdBbmltYXRlZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4oKSBcCi0gICAg
eyBcCi0gICAgfSBcCi0gICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnN0cnVjdG9yUGFy
YW1ldGVyT25lPiBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eShjb25z
dCBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSYgdmFsdWUxKSBcCi0gICAgICAgIDogU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTxBbmltYXRlZFR5cGU+KHZhbHVlMSkgXAotICAgIHsgXAotICAgIH0gXAotICAg
IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25zdHJ1Y3RvclBhcmFtZXRlck9uZSwgdHlwZW5h
bWUgQ29uc3RydWN0b3JQYXJhbWV0ZXJUd28+IFwKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5IyNV
cHBlclByb3BlcnR5KGNvbnN0IENvbnN0cnVjdG9yUGFyYW1ldGVyT25lJiB2YWx1ZTEsIGNvbnN0
IENvbnN0cnVjdG9yUGFyYW1ldGVyVHdvJiB2YWx1ZTIpIFwKLSAgICAgICAgOiBTVkdBbmltYXRl
ZFByb3BlcnR5PEFuaW1hdGVkVHlwZT4odmFsdWUxLCB2YWx1ZTIpIFwKLSAgICB7IFwKLSAgICB9
IFwKLSAgICBcCi0gICAgdm9pZCBzeW5jaHJvbml6ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCkgXAotICAgIHsgXAotICAgICAgICBBU1NFUlQobV9zaG91bGRTeW5jaHJvbml6ZSk7IFwKLSAg
ICAgICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0
ZWRUeXBlPjo6dG9TdHJpbmcoYmFzZVZhbHVlKCkpKTsgXAotICAgICAgICBTVkdBbmltYXRlZFBy
b3BlcnR5U3luY2hyb25pemVyPElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZh
bHVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIERPTUF0dHJpYnV0ZSwgdmFsdWUpOyBc
Ci0gICAgfSBcCi0gICAgXAotICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2Np
YXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCBcCi0gICAgeyBcCi0gICAgICAgIHJldHVybiBET01B
dHRyaWJ1dGU7IFwKLSAgICB9IFwKLX0KLQotLy8gSGVscGVyIG1hY3JvIHNoYXJlZCBieSBERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRZIC8gREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9NVUxUSVBM
RV9XUkFQUEVSUwotI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX1NIQVJFRChPd25l
clR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgQW5pbWF0ZWRU
eXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1wcml2YXRlOiBcCi0gICAgdHlw
ZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmIyNVcHBlclByb3BlcnR5OyBcCi0gICAgREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVy
dHkpOyBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSMjVXBwZXJQcm9wZXJ0eSBtXyMjTG93ZXJQ
cm9wZXJ0eTsgXAotICAgIFwKLXB1YmxpYzogXAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFp
dHM8QW5pbWF0ZWRUeXBlPjo6UmV0dXJuVHlwZSBMb3dlclByb3BlcnR5KCkgY29uc3QgXAotICAg
IHsgXAotICAgICAgICByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWUoKTsgXAotICAgIH0g
XAotICAgIFwKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPEFuaW1hdGVkVHlwZT46OlJl
dHVyblR5cGUgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3QgXAotICAgIHsgXAotICAg
ICAgICByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkuYmFzZVZhbHVlKCk7IFwKLSAgICB9IFwKLSAg
ICBcCi0gICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkoU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0
czxBbmltYXRlZFR5cGU+OjpQYXNzVHlwZSB0eXBlKSBcCi0gICAgeyBcCi0gICAgICAgIG1fIyNM
b3dlclByb3BlcnR5LnNldFZhbHVlKHR5cGUpOyBcCi0gICAgICAgIFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZy
b21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCi0g
ICAgICAgIGNvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOyBcCi0gICAg
fSBcCi0gICAgXAotICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmltYXRlZFR5cGU+OjpQYXNzVHlwZSB0eXBlKSBcCi0gICAg
eyBcCi0gICAgICAgIG1fIyNMb3dlclByb3BlcnR5LnNldEJhc2VWYWx1ZSh0eXBlKTsgXAotICAg
ICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8
T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93
bmVyRWxlbWVudCh0aGlzKTsgXAotICAgICAgICBjb250ZXh0RWxlbWVudC0+aW52YWxpZGF0ZVNW
R0F0dHJpYnV0ZXMoKTsgXAotICAgIH0gXAotICAgIFwKLSAgICB2b2lkIHN5bmNocm9uaXplIyNV
cHBlclByb3BlcnR5KCkgXAotICAgIHsgXAotICAgICAgICBpZiAoIW1fIyNMb3dlclByb3BlcnR5
LnNob3VsZFN5bmNocm9uaXplKCkpIFwKLSAgICAgICAgICAgIHJldHVybjsgXAotICAgICAgICBT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJU
eXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxl
bWVudCh0aGlzKTsgXAotICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zeW5jaHJvbml6ZShjb250
ZXh0RWxlbWVudCk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgUGFzc1JlZlB0cjxTVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZiMjVXBwZXJQcm9wZXJ0eT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQo
KSBcCi0gICAgeyBcCi0gICAgICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3du
ZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVy
VHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCi0gICAgICAgIHJldHVybiBsb29r
dXBPckNyZWF0ZVdyYXBwZXI8QW5pbWF0ZWRUeXBlLCBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
ZiMjVXBwZXJQcm9wZXJ0eT4oY29udGV4dEVsZW1lbnQsIG1fIyNMb3dlclByb3BlcnR5LCBET01B
dHRyaWJ1dGUpOyBcCi0gICAgfQotCi0vLyBVc2VkIGZvciBTVkcgRE9NIHByb3BlcnRpZXMgdGhh
dCBtYXAgZXhhY3RseSB0byBvbmUgWE1MIERPTSBhdHRyaWJ1dGUKLSNkZWZpbmUgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgQW5pbWF0ZWRUeXBlLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
X1NIQVJFRChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgp
LCBBbmltYXRlZFR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0KLS8vIFVzZWQg
Zm9yIHRoZSByYXJlIGNhc2UgbXVsdGlwbGUgU1ZHIERPTSBwcm9wZXJ0aWVzIHRoYXQgbWFwIHRv
IHRoZSBzYW1lIFhNTCBkb20gYXR0cmlidXRlCi0jZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFlfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0
dHJpYnV0ZUlkZW50aWZpZXIsIEFuaW1hdGVkVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkgXAotREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9TSEFSRUQoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIEFuaW1hdGVkVHlwZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgJKHJldmlzaW9uIDcwMDU3
KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDk2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcl9oCi0jZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXJfaAotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5o
IgotCi0jaWYgRU5BQkxFKFNWRykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHRWxl
bWVudDsKLQotLy8gR2V0T3duZXJFbGVtZW50Rm9yVHlwZSBpbXBsZW1lbnRhdGlvbgotdGVtcGxh
dGU8dHlwZW5hbWUgT3duZXJUeXBlLCBib29sIGlzRGVyaXZlZEZyb21TVkdFbGVtZW50Pgotc3Ry
dWN0IEdldE93bmVyRWxlbWVudEZvclR5cGU7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlw
ZT4KLXN0cnVjdCBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgdHJ1ZT4gOiBwdWJs
aWMgTm9uY29weWFibGUgewotICAgIHN0YXRpYyBTVkdFbGVtZW50KiBvd25lckVsZW1lbnQoT3du
ZXJUeXBlKiB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGU7Ci0gICAgfQotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgotc3RydWN0IEdldE93bmVyRWxlbWVudEZvclR5
cGU8T3duZXJUeXBlLCBmYWxzZT4gOiBwdWJsaWMgTm9uY29weWFibGUgeyAgICAKLSAgICBzdGF0
aWMgU1ZHRWxlbWVudCogb3duZXJFbGVtZW50KE93bmVyVHlwZSogdHlwZSkKLSAgICB7Ci0gICAg
ICAgIFNWR0VsZW1lbnQqIGNvbnRleHQgPSB0eXBlLT5jb250ZXh0RWxlbWVudCgpOwotICAgICAg
ICBBU1NFUlQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KLX07Ci0K
LS8vIElzRGVyaXZlZEZyb21TVkdFbGVtZW50IGltcGxlbWVudGF0aW9uCi10ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGU+Ci1zdHJ1Y3QgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQgOiBwdWJsaWMg
Tm9uY29weWFibGUgewotICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKLX07Ci0K
LWNsYXNzIFNWR1ZpZXdTcGVjOwotdGVtcGxhdGU8Pgotc3RydWN0IElzRGVyaXZlZEZyb21TVkdF
bGVtZW50PFNWR1ZpZXdTcGVjPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKLX07Ci0KLS8vIEhlbHBlciB0ZW1wbGF0ZSB1c2VkIGZv
ciBzeW5jaHJvbml6aW5nIFNWRyA8LT4gWE1MIHByb3BlcnRpZXMKLXRlbXBsYXRlPGJvb2wgaXNE
ZXJpdmVkRnJvbVNWR0VsZW1lbnQ+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9u
aXplciB7Ci0gICAgc3RhdGljIHZvaWQgc3luY2hyb25pemUoU1ZHRWxlbWVudCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0
cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+IHsKLSAgICBzdGF0aWMg
dm9pZCBzeW5jaHJvbml6ZShTVkdFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgTmFtZWROb2RlTWFwKiBuYW1lZEF0dHJNYXAgPSBvd25lckVsZW1lbnQtPmF0dHJpYnV0ZXMo
ZmFsc2UpOyAKLSAgICAgICAgQXR0cmlidXRlKiBvbGQgPSBuYW1lZEF0dHJNYXAtPmdldEF0dHJp
YnV0ZUl0ZW0oYXR0ck5hbWUpOwotICAgICAgICBpZiAob2xkICYmIHZhbHVlLmlzTnVsbCgpKSAK
LSAgICAgICAgICAgIG5hbWVkQXR0ck1hcC0+cmVtb3ZlQXR0cmlidXRlKG9sZC0+bmFtZSgpKTsg
Ci0gICAgICAgIGVsc2UgaWYgKCFvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKSAKLSAgICAgICAgICAg
IG5hbWVkQXR0ck1hcC0+YWRkQXR0cmlidXRlKG93bmVyRWxlbWVudC0+Y3JlYXRlQXR0cmlidXRl
KGF0dHJOYW1lLCB2YWx1ZSkpOwotICAgICAgICBlbHNlIGlmIChvbGQgJiYgIXZhbHVlLmlzTnVs
bCgpKSAKLSAgICAgICAgICAgIG9sZC0+c2V0VmFsdWUodmFsdWUpOyAKLSAgICB9Ci19OwotCi10
ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjxmYWxzZT4g
ewotICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikKLSAgICB7Ci0gICAgICAgIC8vIG5vLW9wLCBm
b3IgdHlwZXMgbm90IGluaGVyaXRpbmcgZnJvbSBFbGVtZW50LCB0aHVzIG5vdGhpbmcgdG8gc3lu
Y2hyb25pemUKLSAgICB9Ci19OwotCi19OwotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaAkocmV2aXNpb24gNzAwNTcpCisrKyBXZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpZm5kZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0c19oCi0jZGVmaW5lIFNWR0FuaW1h
dGVkUHJvcGVydHlUcmFpdHNfaAotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNWR0FuZ2xlLmgi
Ci0jaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgotI2lu
Y2x1ZGUgIlNWR051bWJlckxpc3QuaCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRy
YWl0cyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7IH07Ci0KLS8vIFNWR0FuaW1hdGVkQW5nbGUKLXRl
bXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR0FuZ2xlPiA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBjb25zdCBTVkdBbmdsZSYgUGFzc1R5cGU7
Ci0gICAgdHlwZWRlZiBTVkdBbmdsZSBSZXR1cm5UeXBlOwotICAgIHR5cGVkZWYgU1ZHQW5nbGUg
U3RvcmVkVHlwZTsKLQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBTVkdB
bmdsZSgpOyB9Ci0gICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3Jl
ZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Ci19OwotCi0v
LyBTVkdBbmltYXRlZEJvb2xlYW4KLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3Bl
cnR5VHJhaXRzPGJvb2w+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICB0eXBlZGVmIGNvbnN0
IGJvb2wmIFBhc3NUeXBlOwotICAgIHR5cGVkZWYgYm9vbCBSZXR1cm5UeXBlOwotICAgIHR5cGVk
ZWYgYm9vbCBTdG9yZWRUeXBlOwotCi0gICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0
b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGU7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9Ci19
OwotCi0vLyBTVkdBbmltYXRlZEVudW1lcmF0aW9uCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRyYWl0czxpbnQ+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICB0eXBl
ZGVmIGNvbnN0IGludCYgUGFzc1R5cGU7Ci0gICAgdHlwZWRlZiBpbnQgUmV0dXJuVHlwZTsKLSAg
ICB0eXBlZGVmIGludCBTdG9yZWRUeXBlOwotCi0gICAgc3RhdGljIFJldHVyblR5cGUgbnVsbCgp
IHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3Qg
U3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoUGFzc1R5cGUgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KLX07
Ci0KLS8vIFNWR0FuaW1hdGVkSW50ZWdlcgotdGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVk
UHJvcGVydHlUcmFpdHM8bG9uZz4gOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHR5cGVkZWYg
Y29uc3QgbG9uZyYgUGFzc1R5cGU7Ci0gICAgdHlwZWRlZiBsb25nIFJldHVyblR5cGU7Ci0gICAg
dHlwZWRlZiBsb25nIFN0b3JlZFR5cGU7Ci0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSBudWxsKCkg
eyByZXR1cm4gMGw7IH0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3Qg
U3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoUGFzc1R5cGUgdHlwZSkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIodHlwZSk7IH0KLX07
Ci0KLS8vIFNWR0FuaW1hdGVkTGVuZ3RoCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICB0eXBl
ZGVmIGNvbnN0IFNWR0xlbmd0aCYgUGFzc1R5cGU7Ci0gICAgdHlwZWRlZiBTVkdMZW5ndGggUmV0
dXJuVHlwZTsKLSAgICB0eXBlZGVmIFNWR0xlbmd0aCBTdG9yZWRUeXBlOwotCi0gICAgc3RhdGlj
IFJldHVyblR5cGUgbnVsbCgpIHsgcmV0dXJuIFNWR0xlbmd0aCgpOyB9Ci0gICAgc3RhdGljIFJl
dHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5
cGU7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJu
IHR5cGUudmFsdWVBc1N0cmluZygpOyB9Ci19OwotCi0vLyBTVkdBbmltYXRlZExlbmd0aExpc3QK
LXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExp
c3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBTVkdMZW5ndGhMaXN0KiBQ
YXNzVHlwZTsKLSAgICB0eXBlZGVmIFNWR0xlbmd0aExpc3QqIFJldHVyblR5cGU7Ci0gICAgdHlw
ZWRlZiBSZWZQdHI8U1ZHTGVuZ3RoTGlzdD4gU3RvcmVkVHlwZTsKLQotICAgIHN0YXRpYyBSZXR1
cm5UeXBlIG51bGwoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1
cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUuZ2V0KCk7IH0KLSAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPyB0
eXBlLT52YWx1ZUFzU3RyaW5nKCkgOiBTdHJpbmcoKTsgfQotfTsKLQotLy8gU1ZHQW5pbWF0ZWRO
dW1iZXIKLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGZsb2F0
PiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBjb25zdCBmbG9hdCYgUGFzc1R5
cGU7Ci0gICAgdHlwZWRlZiBmbG9hdCBSZXR1cm5UeXBlOwotICAgIHR5cGVkZWYgZmxvYXQgU3Rv
cmVkVHlwZTsKLQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiAwLjBmOyB9
Ci0gICAgc3RhdGljIFJldHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5
cGUpIHsgcmV0dXJuIHR5cGU7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBl
IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9Ci19OwotCi0vLyBTVkdBbmlt
YXRlZE51bWJlckxpc3QKLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5VHJh
aXRzPFNWR051bWJlckxpc3QqPiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBT
VkdOdW1iZXJMaXN0KiBQYXNzVHlwZTsKLSAgICB0eXBlZGVmIFNWR051bWJlckxpc3QqIFJldHVy
blR5cGU7Ci0gICAgdHlwZWRlZiBSZWZQdHI8U1ZHTnVtYmVyTGlzdD4gU3RvcmVkVHlwZTsKLQot
ICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIFJl
dHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5
cGUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsg
cmV0dXJuIHR5cGUgPyB0eXBlLT52YWx1ZUFzU3RyaW5nKCkgOiBTdHJpbmcoKTsgfQotfTsKLQot
Ly8gU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBQ
YXNzVHlwZTsKLSAgICB0eXBlZGVmIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gUmV0dXJuVHlwZTsK
LSAgICB0eXBlZGVmIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gU3RvcmVkVHlwZTsKLQotICAgIHN0
YXRpYyBSZXR1cm5UeXBlIG51bGwoKSB7IHJldHVybiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7
IH0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSB0b1JldHVyblR5cGUoY29uc3QgU3RvcmVkVHlwZSYg
dHlwZSkgeyByZXR1cm4gdHlwZTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoUGFzc1R5
cGUgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KLX07Ci0KLS8vIFNWR0Fu
aW1hdGVkUmVjdAotdGVtcGxhdGU8Pgotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8
RmxvYXRSZWN0PiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgdHlwZWRlZiBjb25zdCBGbG9h
dFJlY3QmIFBhc3NUeXBlOwotICAgIHR5cGVkZWYgRmxvYXRSZWN0IFJldHVyblR5cGU7Ci0gICAg
dHlwZWRlZiBGbG9hdFJlY3QgU3RvcmVkVHlwZTsKLQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIG51
bGwoKSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQotICAgIHN0YXRpYyBSZXR1cm5UeXBlIHRvUmV0
dXJuVHlwZShjb25zdCBTdG9yZWRUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlOyB9Ci0gICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhQYXNzVHlwZSB0eXBlKSB7IHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiJWYgJWYgJWYgJWYiLCB0eXBlLngoKSwgdHlwZS55KCksIHR5cGUud2lkdGgoKSwgdHlwZS5o
ZWlnaHQoKSk7IH0KLX07Ci0KLS8vIFNWR0FuaW1hdGVkU3RyaW5nCi10ZW1wbGF0ZTw+Ci1zdHJ1
Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxTdHJpbmc+IDogcHVibGljIE5vbmNvcHlhYmxl
IHsKLSAgICB0eXBlZGVmIGNvbnN0IFN0cmluZyYgUGFzc1R5cGU7Ci0gICAgdHlwZWRlZiBTdHJp
bmcgUmV0dXJuVHlwZTsKLSAgICB0eXBlZGVmIFN0cmluZyBTdG9yZWRUeXBlOwotCi0gICAgc3Rh
dGljIFJldHVyblR5cGUgbnVsbCgpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgc3RhdGljIFJl
dHVyblR5cGUgdG9SZXR1cm5UeXBlKGNvbnN0IFN0b3JlZFR5cGUmIHR5cGUpIHsgcmV0dXJuIHR5
cGU7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFBhc3NUeXBlIHR5cGUpIHsgcmV0dXJu
IHR5cGU7IH0KLX07Ci0KLS8vIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdAotdGVtcGxhdGU8Pgot
c3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlzdCo+IDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKLSAgICB0eXBlZGVmIFNWR1RyYW5zZm9ybUxpc3QqIFBhc3NUeXBl
OwotICAgIHR5cGVkZWYgU1ZHVHJhbnNmb3JtTGlzdCogUmV0dXJuVHlwZTsKLSAgICB0eXBlZGVm
IFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiBTdG9yZWRUeXBlOwotCi0gICAgc3RhdGljIFJldHVy
blR5cGUgbnVsbCgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgUmV0dXJuVHlwZSB0b1JldHVy
blR5cGUoY29uc3QgU3RvcmVkVHlwZSYgdHlwZSkgeyByZXR1cm4gdHlwZS5nZXQoKTsgfQotICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoUGFzc1R5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA/IHR5
cGUtPnZhbHVlQXNTdHJpbmcoKSA6IFN0cmluZygpOyB9Ci19OwotCi19Ci0KLSNlbmRpZgotI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCShyZXZpc2lvbiA3MDA1NykKKysr
IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwx
NzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFNWR0FuaW1h
dGVkVGVtcGxhdGVfaAotI2RlZmluZSBTVkdBbmltYXRlZFRlbXBsYXRlX2gKLQotI2lmIEVOQUJM
RShTVkcpCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgCi0gICAgY2xhc3MgU1ZHQW5nbGU7Ci0gICAgY2xhc3MgU1ZHRWxlbWVudDsK
LSAgICBjbGFzcyBTVkdMZW5ndGhMaXN0OwotICAgIGNsYXNzIFNWR051bWJlckxpc3Q7Ci0gICAg
Y2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzsKLSAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0
OwotICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7Ci0KLSAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBl
V3JhcHBlcktleSB7ICAgICAgICAgICAgCi0gICAgICAgIC8vIEVtcHR5IHZhbHVlCi0gICAgICAg
IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkoKQotICAgICAgICAgICAgOiBlbGVtZW50KDApCi0g
ICAgICAgICAgICAsIGF0dHJpYnV0ZU5hbWUoMCkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgLy8g
RGVsZXRlZCB2YWx1ZQotICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgICAgIDogZWxlbWVudChyZWludGVycHJl
dF9jYXN0PFNWR0VsZW1lbnQqPigtMSkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZWxlbWVudCA9PSByZWludGVycHJldF9jYXN0PFNWR0VsZW1lbnQqPigtMSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KGNvbnN0IFNW
R0VsZW1lbnQqIF9lbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIF9hdHRyaWJ1dGVOYW1lKQot
ICAgICAgICAgICAgOiBlbGVtZW50KF9lbGVtZW50KQotICAgICAgICAgICAgLCBhdHRyaWJ1dGVO
YW1lKF9hdHRyaWJ1dGVOYW1lLmltcGwoKSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KGVsZW1lbnQpOwotICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZU5hbWUpOwotICAgICAgICB9
Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJL
ZXkmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbWVudCA9
PSBvdGhlci5lbGVtZW50ICYmIGF0dHJpYnV0ZU5hbWUgPT0gb3RoZXIuYXR0cmlidXRlTmFtZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQ7Ci0gICAgICAg
IEF0b21pY1N0cmluZ0ltcGwqIGF0dHJpYnV0ZU5hbWU7Ci0gICAgfTsKLSAgICAKLSAgICBzdHJ1
Y3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBrZXkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9j
YXN0PGNvbnN0IFVDaGFyKj4oJmtleSksIHNpemVvZihTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5
KSAvIHNpemVvZihVQ2hhcikpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgYSwgY29uc3QgU1ZHQW5pbWF0ZWRU
eXBlV3JhcHBlcktleSYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gdHJ1ZTsKLSAgICB9OwotCi0gICAgc3RydWN0IFNWR0FuaW1hdGVkVHlw
ZVdyYXBwZXJLZXlIYXNoVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxTVkdBbmltYXRl
ZFR5cGVXcmFwcGVyS2V5PiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJ
c1plcm8gPSB0cnVlOwotCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5JiBzbG90KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBuZXcgKCZzbG90KSBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIHZhbHVlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKLSAgICAg
ICAgfQotICAgIH07Ci0gCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgotICAg
IGNsYXNzIFNWR0FuaW1hdGVkVGVtcGxhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdBbmltYXRl
ZFRlbXBsYXRlPEFuaW1hdGVkVHlwZT4gPiB7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVm
IHR5cGVuYW1lIFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8QW5pbWF0ZWRUeXBlPjo6UGFzc1R5
cGUgUGFzc1R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRyYWl0czxBbmltYXRlZFR5cGU+OjpSZXR1cm5UeXBlIFJldHVyblR5cGU7Ci0KLSAgICAgICAg
dmlydHVhbCB+U1ZHQW5pbWF0ZWRUZW1wbGF0ZSgpIHsgZm9yZ2V0V3JhcHBlcih0aGlzKTsgfQot
Ci0gICAgICAgIHZpcnR1YWwgUmV0dXJuVHlwZSBiYXNlVmFsKCkgY29uc3QgPSAwOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QmFzZVZhbChQYXNzVHlwZSkgPSAwOwotCi0gICAgICAgIHZpcnR1
YWwgUmV0dXJuVHlwZSBhbmltVmFsKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
c2V0QW5pbVZhbChQYXNzVHlwZSkgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCA9IDA7Ci0KLSAgICAgICAg
dHlwZWRlZiBIYXNoTWFwPFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXksIFNWR0FuaW1hdGVkVGVt
cGxhdGU8QW5pbWF0ZWRUeXBlPiosIFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoLCBTVkdB
bmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaFRyYWl0cyA+IEVsZW1lbnRUb1dyYXBwZXJNYXA7Ci0g
ICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRWxlbWVudFRvV3JhcHBlck1hcDo6Y29uc3RfaXRlcmF0
b3IgRWxlbWVudFRvV3JhcHBlck1hcEl0ZXJhdG9yOwotCi0gICAgICAgIHN0YXRpYyBFbGVtZW50
VG9XcmFwcGVyTWFwKiB3cmFwcGVyQ2FjaGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgRWxlbWVudFRvV3JhcHBlck1hcCogc193cmFwcGVyQ2FjaGUgPSBuZXcgRWxlbWVudFRvV3Jh
cHBlck1hcDsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gc193cmFwcGVyQ2Fj
aGU7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBmb3JnZXRXcmFwcGVyKFNWR0Fu
aW1hdGVkVGVtcGxhdGU8QW5pbWF0ZWRUeXBlPiogd3JhcHBlcikKLSAgICAgICAgewotICAgICAg
ICAgICAgRWxlbWVudFRvV3JhcHBlck1hcCogY2FjaGUgPSB3cmFwcGVyQ2FjaGUoKTsKLSAgICAg
ICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVyYXRvciBpdHIgPSBjYWNoZS0+YmVnaW4oKTsK
LSAgICAgICAgICAgIEVsZW1lbnRUb1dyYXBwZXJNYXBJdGVyYXRvciBlbmQgPSBjYWNoZS0+ZW5k
KCk7Ci0gICAgICAgICAgICBmb3IgKDsgaXRyICE9IGVuZDsgKytpdHIpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoaXRyLT5zZWNvbmQgPT0gd3JhcHBlcikgewotICAgICAgICAgICAgICAgICAgICBj
YWNoZS0+cmVtb3ZlKGl0ci0+Zmlyc3QpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgotICAgIGNsYXNzIFNWR0FuaW1hdGVkUHJv
cGVydHk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1lIEFu
aW1hdGVkVGVhck9mZj4KLSAgICBQYXNzUmVmUHRyPEFuaW1hdGVkVGVhck9mZj4gbG9va3VwT3JD
cmVhdGVXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIFNWR0FuaW1hdGVkUHJvcGVydHk8QW5p
bWF0ZWRUeXBlPiYgY3JlYXRvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi0gICAg
ewotICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5IGtleShlbGVtZW50LCBhdHRyTmFt
ZS5sb2NhbE5hbWUoKSk7Ci0gICAgICAgIFJlZlB0cjxBbmltYXRlZFRlYXJPZmY+IHdyYXBwZXIg
PSBzdGF0aWNfY2FzdDxBbmltYXRlZFRlYXJPZmYqPihBbmltYXRlZFRlYXJPZmY6OndyYXBwZXJD
YWNoZSgpLT5nZXQoa2V5KSk7Ci0KLSAgICAgICAgaWYgKCF3cmFwcGVyKSB7Ci0gICAgICAgICAg
ICB3cmFwcGVyID0gQW5pbWF0ZWRUZWFyT2ZmOjpjcmVhdGUoY3JlYXRvciwgZWxlbWVudCk7Ci0g
ICAgICAgICAgICBBbmltYXRlZFRlYXJPZmY6OndyYXBwZXJDYWNoZSgpLT5zZXQoa2V5LCB3cmFw
cGVyLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVhc2Uo
KTsKLSAgICB9Ci0KLSAgICAvLyBDb21tb24gdHlwZSBkZWZpbml0aW9ucywgdG8gZWFzZSBJREwg
Z2VuZXJhdGlvbi4KLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHQW5nbGU+IFNW
R0FuaW1hdGVkQW5nbGU7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGJvb2w+IFNW
R0FuaW1hdGVkQm9vbGVhbjsKLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8aW50PiBT
VkdBbmltYXRlZEVudW1lcmF0aW9uOwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxs
b25nPiBTVkdBbmltYXRlZEludGVnZXI7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRl
PFNWR0xlbmd0aD4gU1ZHQW5pbWF0ZWRMZW5ndGg7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRl
bXBsYXRlPFNWR0xlbmd0aExpc3QqPiBTVkdBbmltYXRlZExlbmd0aExpc3Q7Ci0gICAgdHlwZWRl
ZiBTVkdBbmltYXRlZFRlbXBsYXRlPGZsb2F0PiBTVkdBbmltYXRlZE51bWJlcjsKLSAgICB0eXBl
ZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTnVtYmVyTGlzdCo+IFNWR0FuaW1hdGVkTnVtYmVy
TGlzdDsgCi0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW8+IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzsKLSAgICB0eXBlZGVmIFNWR0Fu
aW1hdGVkVGVtcGxhdGU8RmxvYXRSZWN0PiBTVkdBbmltYXRlZFJlY3Q7Ci0gICAgdHlwZWRlZiBT
VkdBbmltYXRlZFRlbXBsYXRlPFN0cmluZz4gU1ZHQW5pbWF0ZWRTdHJpbmc7Ci0gICAgdHlwZWRl
ZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR1RyYW5zZm9ybUxpc3QqPiBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3Q7Ci0KLX0KLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9u
IDcwMDU3KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTAsNyArMTEwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogfQogCiAvLyBUaGlzIGZpbGUgbmVl
ZHMgdG8gYmUgaW5jbHVkZWQgYWZ0ZXIgdGhlIFNWR0VsZW1lbnQgZGVjbGFyYXRpb24KLSNpbmNs
dWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCisjaW5jbHVkZSAiRGVwcmVjYXRlZFNWR0FuaW1h
dGVkUHJvcGVydHkuaCIgLy8gTk9MSU5UCiAKICNlbmRpZgogI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCShyZXZpc2lvbiA3MDA1NykKKysr
IFdlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVl
KFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8Ym9vbD46OlBhc3NUeXBlKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKERlcHJl
Y2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPGJvb2w+OjpQYXNzVHlwZSkgPSAwOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpdFRv
Vmlld0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCShy
ZXZpc2lvbiA3MDA1NykKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlTWFwcGVkQXR0
cmlidXRlKERvY3VtZW50KiwgQXR0cmlidXRlKik7CiAgICAgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3Qm94QmFz
ZVZhbHVlKFNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHM8RmxvYXRSZWN0Pjo6UGFzc1R5cGUpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZShTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+OjpQYXNzVHlwZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3Qm94QmFzZVZhbHVlKERlcHJlY2F0ZWRTVkdB
bmltYXRlZFByb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD46OlBhc3NUeXBlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUoRGVwcmVjYXRlZFNWR0Fu
aW1hdGVkUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz46OlBhc3NUeXBlKSA9
IDA7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZVZpZXdCb3goRG9jdW1lbnQqLCBjb25zdCBT
dHJpbmcmLCBGbG9hdFJlY3QmKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCShyZXZpc2lvbiA3
MDA1NykKKysrIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFN0cmlu
ZyBnZXRUYXJnZXQoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SHJlZkJhc2VWYWx1ZShTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRz
PFN0cmluZz46OlBhc3NUeXBlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRIcmVmQmFz
ZVZhbHVlKERlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzPFN0cmluZz46OlBhc3NU
eXBlKSA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyLmgJKHJldmlzaW9uIDcwMDU3KQkoZnJvbSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBy
b3BlcnR5U3luY2hyb25pemVyLmg6NzAwNTcpCisrKyBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5j
aHJvbml6ZXJfaAorI2RlZmluZSBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyX2gKKwor
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlUcmFpdHMuaCIKKworI2lmIEVOQUJMRShTVkcp
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0VsZW1lbnQ7CisKKy8vIEdldE93bmVy
RWxlbWVudEZvclR5cGUgaW1wbGVtZW50YXRpb24KK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlw
ZSwgYm9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4KK3N0cnVjdCBHZXRPd25lckVsZW1lbnRG
b3JUeXBlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitzdHJ1Y3QgR2V0T3duZXJF
bGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIHRydWU+IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAg
ICBzdGF0aWMgU1ZHRWxlbWVudCogb3duZXJFbGVtZW50KE93bmVyVHlwZSogdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0eXBlOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZT4KK3N0cnVjdCBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgZmFsc2U+
IDogcHVibGljIE5vbmNvcHlhYmxlIHsgICAgCisgICAgc3RhdGljIFNWR0VsZW1lbnQqIG93bmVy
RWxlbWVudChPd25lclR5cGUqIHR5cGUpCisgICAgeworICAgICAgICBTVkdFbGVtZW50KiBjb250
ZXh0ID0gdHlwZS0+Y29udGV4dEVsZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9Cit9OworCisvLyBJc0Rlcml2ZWRGcm9tU1ZH
RWxlbWVudCBpbXBsZW1lbnRhdGlvbgordGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgorc3Ry
dWN0IElzRGVyaXZlZEZyb21TVkdFbGVtZW50IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBz
dGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Cit9OworCitjbGFzcyBTVkdWaWV3U3BlYzsK
K3RlbXBsYXRlPD4KK3N0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxTVkdWaWV3U3BlYz4g
OiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFs
c2U7Cit9OworCisvLyBIZWxwZXIgdGVtcGxhdGUgdXNlZCBmb3Igc3luY2hyb25pemluZyBTVkcg
PC0+IFhNTCBwcm9wZXJ0aWVzCit0ZW1wbGF0ZTxib29sIGlzRGVyaXZlZEZyb21TVkdFbGVtZW50
Pgorc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIgeworICAgIHN0YXRpYyB2
b2lkIHN5bmNocm9uaXplKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplcjx0cnVlPiB7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemUoU1ZH
RWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE5hbWVkTm9kZU1hcCogbmFt
ZWRBdHRyTWFwID0gb3duZXJFbGVtZW50LT5hdHRyaWJ1dGVzKGZhbHNlKTsgCisgICAgICAgIEF0
dHJpYnV0ZSogb2xkID0gbmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJOYW1lKTsK
KyAgICAgICAgaWYgKG9sZCAmJiB2YWx1ZS5pc051bGwoKSkgCisgICAgICAgICAgICBuYW1lZEF0
dHJNYXAtPnJlbW92ZUF0dHJpYnV0ZShvbGQtPm5hbWUoKSk7IAorICAgICAgICBlbHNlIGlmICgh
b2xkICYmICF2YWx1ZS5pc051bGwoKSkgCisgICAgICAgICAgICBuYW1lZEF0dHJNYXAtPmFkZEF0
dHJpYnV0ZShvd25lckVsZW1lbnQtPmNyZWF0ZUF0dHJpYnV0ZShhdHRyTmFtZSwgdmFsdWUpKTsK
KyAgICAgICAgZWxzZSBpZiAob2xkICYmICF2YWx1ZS5pc051bGwoKSkgCisgICAgICAgICAgICBv
bGQtPnNldFZhbHVlKHZhbHVlKTsgCisgICAgfQorfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IFNW
R0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8ZmFsc2U+IHsKKyAgICBzdGF0aWMgdm9pZCBz
eW5jaHJvbml6ZShTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpCisgICAgeworICAgICAgICAvLyBuby1vcCwgZm9yIHR5cGVzIG5vdCBpbmhlcml0
aW5nIGZyb20gRWxlbWVudCwgdGh1cyBub3RoaW5nIHRvIHN5bmNocm9uaXplCisgICAgfQorfTsK
KworfTsKKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVN5bmNocm9uaXplcl9oCiAjZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5j
aHJvbml6ZXJfaAogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0cy5oIgorI2lu
Y2x1ZGUgIkRlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5VHJhaXRzLmgiCiAKICNpZiBFTkFC
TEUoU1ZHKQogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>
<flag name="review"
          id="61284"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>