<?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>164790</bug_id>
          
          <creation_ts>2016-11-15 14:02:19 -0800</creation_ts>
          <short_desc>[SVG] Moving more special casing of SVG out of the bindings - SVG lists</short_desc>
          <delta_ts>2016-11-17 15:58:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>164704</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1251618</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-15 14:02:19 -0800</bug_when>
    <thetext>We should move the special case code in the bindings for SVG list types into the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251622</commentid>
    <comment_count>1</comment_count>
      <attachid>294877</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-15 14:05:05 -0800</bug_when>
    <thetext>Created attachment 294877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251624</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-15 14:09:19 -0800</bug_when>
    <thetext>Attachment 294877 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGNumberListValues.cpp:38:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WebCore/svg/SVGAnimatedPointList.h:28:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
ERROR: Source/WebCore/svg/SVGTransformListValues.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGPathSegList.cpp:35:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:138:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:144:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/svg/SVGTransformable.h:41:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 93 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251732</commentid>
    <comment_count>3</comment_count>
      <attachid>294905</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-15 17:15:34 -0800</bug_when>
    <thetext>Created attachment 294905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251735</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-15 17:17:35 -0800</bug_when>
    <thetext>Attachment 294905 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGNumberListValues.cpp:38:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WebCore/svg/SVGAnimatedPointList.h:28:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
ERROR: Source/WebCore/svg/SVGTransformListValues.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGPathSegList.cpp:35:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:138:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:144:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/svg/SVGTransformable.h:41:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 10 in 93 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251737</commentid>
    <comment_count>5</comment_count>
      <attachid>294906</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-15 17:24:40 -0800</bug_when>
    <thetext>Created attachment 294906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251739</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-15 17:27:44 -0800</bug_when>
    <thetext>Attachment 294906 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGPathSegList.h:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:138:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:144:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/svg/SVGPathSegList.h:151:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 93 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252496</commentid>
    <comment_count>7</comment_count>
      <attachid>294906</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-17 15:46:28 -0800</bug_when>
    <thetext>Comment on attachment 294906
Patch

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

&gt; Source/WebCore/svg/SVGLengthListValues.cpp:60
&gt; +        if (i &gt; 0)

&gt; 0 unnecessary

&gt; Source/WebCore/svg/SVGNumberListValues.cpp:52
&gt; +        if (i &gt; 0)

ditto

&gt; Source/WebCore/svg/SVGPathSegList.h:47
&gt; +    int findItem(const ListItemType&amp; item) const

This could be an Optional&lt;unsigned&gt;

&gt; Source/WebCore/svg/SVGPointListValues.cpp:35
&gt; +        if (i &gt; 0)

ditto

&gt; Source/WebCore/svg/SVGTransformListValues.cpp:65
&gt; +        if (i &gt; 0)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252505</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-17 15:58:09 -0800</bug_when>
    <thetext>Committed r208863: &lt;http://trac.webkit.org/changeset/208863&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294877</attachid>
            <date>2016-11-15 14:05:05 -0800</date>
            <delta_ts>2016-11-15 17:15:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164790-20161115140503.patch</filename>
            <type>text/plain</type>
            <size>287580</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzMiBAQAorMjAxNi0xMS0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtTVkddIE1vdmluZyBtb3JlIHNwZWNp
YWwgY2FzaW5nIG9mIFNWRyBvdXQgb2YgdGhlIGJpbmRpbmdzIC0gU1ZHIGxpc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG06CisgICAgICAgIChJc1NWR1R5cGVOZWVkaW5nVGVhck9mZik6IERlbGV0ZWQu
CisgICAgICAgIChHZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYpOiBEZWxldGVkLgorICAgICAgICAo
R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5nVGVhck9mZik6IERlbGV0ZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZXRJbXBsQ2xhc3NO
YW1lKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdldE5hdGl2ZVR5cGVG
b3JDb252ZXJzaW9ucyk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKEdldElETEludGVyZmFjZU5h
bWUpOgorICAgICAgICAoR2V0TmF0aXZlVHlwZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUp
OgorICAgICAgICAoR2V0U1ZHUHJvcGVydHlUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQ
YXRoLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnVwZGF0ZVBhdGhGcm9tUG9seWdvbkVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6dXBkYXRlUGF0aEZyb21Qb2x5bGluZUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBk
YXRlQ2hhcmFjdGVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXI6OmZpbGxDaGFyYWN0ZXJEYXRhTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQWxs
SW5PbmUuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5nbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6U1ZHQW5nbGUp
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZUxlbmd0aExpc3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVE
aXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZE51bWJlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJM
aXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6
OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQb2ludExp
c3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZFBvaW50TGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNv
bnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQb2ludExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVUcmFuc2Zvcm1MaXN0KToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFR5cGU6Omxlbmd0aExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRU
eXBlOjpudW1iZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6cG9p
bnRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6dHJhbnNmb3JtTGlz
dCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6c3lzdGVtTGFuZ3VhZ2UpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRo
RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6cmVxdWlyZWRGZWF0
dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpyZXF1aXJlZEV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6c3lzdGVtTGFuZ3Vh
Z2UpOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAg
KiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjpTVkdMZW5ndGgpOgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OnBhcnNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OnZhbHVlQXNTdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdMZW5ndGhMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhM
aXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlzdDo6U1ZHTGVuZ3Ro
TGlzdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHTGVuZ3RoTGlzdD46OmluaXRpYWxWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhMaXN0Pjo6dG9TdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhMaXN0LmlkbDoKKyAgICAgICAgKiBzdmcv
U1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHA6IENvcGllZCBmcm9tIHN2Zy9TVkdMZW5ndGhMaXN0LmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3RWYWx1ZXM6OnBhcnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3RWYWx1ZXM6OnZhbHVlQXNTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlzdDo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoTGlzdDo6dmFsdWVBc1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuaDogQ29waWVkIGZyb20gc3ZnL1NWR0xlbmd0aExpc3Qu
aC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3RWYWx1
ZXM+Ojppbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8
U1ZHTGVuZ3RoTGlzdFZhbHVlcz46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1By
b3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3Q+Ojppbml0aWFsVmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoTGlzdD46OnRvU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoK
KyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OnJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFz
a0VsZW1lbnQ6OnJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNr
RWxlbWVudDo6c3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdNYXRyaXguaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJp
eDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6U1ZHTWF0cml4KToKKyAg
ICAgICAgKiBzdmcvU1ZHTnVtYmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdOdW1iZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdOdW1iZXI6OlNWR051bWJlcik6CisgICAgICAg
ICogc3ZnL1NWR051bWJlckxpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdOdW1i
ZXJMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdOdW1iZXJMaXN0OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTnVtYmVyTGlzdDo6U1ZHTnVtYmVyTGlzdCk6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTnVtYmVy
TGlzdD46OmluaXRpYWxWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdOdW1iZXJMaXN0Pjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmNwcDogQ29waWVkIGZyb20gc3ZnL1NWR051bWJlckxp
c3QuY3BwLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTnVtYmVyTGlzdFZhbHVlczo6cGFyc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTnVtYmVyTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdOdW1iZXJMaXN0OjpwYXJzZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTVkdOdW1iZXJMaXN0Ojp2YWx1ZUFzU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5oOiBDb3BpZWQgZnJvbSBzdmcvU1ZHTnVtYmVy
TGlzdC5oLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTnVtYmVyTGlz
dFZhbHVlcz46OmluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRy
YWl0czxTVkdOdW1iZXJMaXN0VmFsdWVzPjo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTnVtYmVyTGlzdD46OmluaXRpYWxWYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdOdW1iZXJMaXN0Pjo6dG9T
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cG9pbnRzTGlzdEZyb21TVkdEYXRhKToKKyAgICAgICAgKiBzdmcv
U1ZHUGFyc2VyVXRpbGl0aWVzLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6bm9ybWFsaXplZFBhdGhTZWdMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphbmltYXRlZFBhdGhTZWdMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2Vn
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3RDaGFu
Z2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aFNlZ0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmNsZWFy
Q29udGV4dEFuZFJvbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6Z2V0SXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6cmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFNlZ0xpc3Q6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ0xpc3Q6OmNvbnRleHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdM
aXN0Ojpwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWdMaXN0Ojp2YWx1ZUFzU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTZWdMaXN0Ojpjb21taXRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OlNWR1Bh
dGhTZWdMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRz
PFNWR1BhdGhTZWdMaXN0Pjo6aW5pdGlhbFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcv
U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdM
aXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0
aFNlZ0xpc3RCdWlsZGVyLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0U291cmNlOjpTVkdQYXRoU2VnTGlz
dFNvdXJjZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmg6CisgICAgICAg
ICogc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcDogQ29waWVkIGZyb20gc3ZnL1NWR1BhdGhT
ZWdMaXN0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0VmFsdWVzOjp2YWx1
ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjb21t
aXRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OnZhbHVlQXNTdHJp
bmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmNvbW1pdENo
YW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmg6IENv
cGllZCBmcm9tIHN2Zy9TVkdQYXRoU2VnTGlzdC5oLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ0xpc3RWYWx1ZXM6OlNWR1BhdGhTZWdMaXN0VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1BhdGhTZWdMaXN0VmFsdWVzPjo6aW5pdGlhbFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpTVkdQYXRoU2VnTGlzdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdQYXRoU2VnTGlzdD46
OmluaXRpYWxWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdGhVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRo
U2VnTGlzdFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTVkdQYXRoQnl0ZVN0cmVh
bUZyb21TVkdQYXRoU2VnKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXNGcm9tQnl0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFN0cmluZ0Zyb21T
VkdQYXRoU2VnTGlzdFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNWR1BhdGhCeXRl
U3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR1BhdGhVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN5c3RlbUxhbmd1YWdl
KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
UG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUG9pbnQ6OlNWR1BvaW50KToKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnQuaWRs
OgorICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2
Zy9TVkdQb2ludExpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50TGlzdDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50TGlzdDo6U1ZHUG9pbnRMaXN0KToKKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdQ
b2ludExpc3Q+Ojppbml0aWFsVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdQb2lu
dExpc3RWYWx1ZXMuY3BwOiBDb3BpZWQgZnJvbSBzdmcvU1ZHUG9pbnRMaXN0LmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BvaW50TGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQb2ludExpc3Q6OnZhbHVlQXNTdHJpbmcpOiBEZWxldGVkLgorICAgICAg
ICAqIHN2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaDogQ29waWVkIGZyb20gc3ZnL1NWR1BvaW50TGlz
dC5oLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHUG9pbnRMaXN0VmFs
dWVzPjo6aW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRz
PFNWR1BvaW50TGlzdD46OmluaXRpYWxWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NW
R1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JD
cmVhdGVQb2ludHNXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpw
b2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRz
KToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BvbHlFbGVtZW50Ojpwb2ludExpc3QpOgorICAgICAgICAqIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbyk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5j
cHA6CisgICAgICAgICogc3ZnL1NWR1JlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3Q6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0OjpTVkdSZWN0KToKKyAgICAgICAg
KiBzdmcvU1ZHU3RyaW5nTGlzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1N0cmlu
Z0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHA6IENvcGllZCBm
cm9tIHN2Zy9TVkdTdHJpbmdMaXN0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0cmluZ0xp
c3RWYWx1ZXM6OmNvbW1pdENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHJpbmdMaXN0
VmFsdWVzOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHJpbmdMaXN0VmFsdWVzOjpw
YXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHJpbmdMaXN0VmFsdWVzOjp2YWx1ZUFzU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0cmluZ0xpc3Q6OmNvbW1pdENoYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdTdHJpbmdMaXN0OjpyZXNldCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHJpbmdMaXN0OjpwYXJzZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdTdHJpbmdMaXN0Ojp2YWx1ZUFzU3RyaW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBzdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oOiBDb3BpZWQgZnJvbSBzdmcvU1ZHU3Ry
aW5nTGlzdC5oLgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXN0czo6c3luY2hyb25pemVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVz
dHM6OnJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lz
dGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5oOgorICAgICAgICAqIHN2Zy9T
VkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RyYW5zZm9ybTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6
U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybUxpc3Q+Ojppbml0aWFsVmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlz
dD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcy5jcHA6IENvcGllZCBmcm9tIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21N
YXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6Y29uc29s
aWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6Y29uY2F0
ZW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6dmFsdWVB
c1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpwYXJz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGVTVkdUcmFuc2Zv
cm1Gcm9tTWF0cml4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxp
c3Q6OmNvbnNvbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9y
bUxpc3Q6OmNvbmNhdGVuYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5z
Zm9ybUxpc3Q6OnZhbHVlQXNTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VHJhbnNmb3JtTGlzdDo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzLmg6IENvcGllZCBmcm9tIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmguCisgICAg
ICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPjo6
aW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXM+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0Pjo6aW5pdGlhbFZhbHVlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybUxpc3Q+Ojp0b1N0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUp
OgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmg6CisgICAgICAgICogc3ZnL1NWR1Zp
ZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50Ojp2aWV3VGFy
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdF
bGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdWaWV3U3BlYzo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjps
b29rdXBPckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmll
d1NwZWM6OnJlc2V0KToKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6YmFzZVZhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6OmFuaW1WYWwp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpmaW5k
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6
OnJlbW92ZUl0ZW1Gcm9tTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmY6OnN5bmNocm9uaXplV3JhcHBlcnNJZk5lZWRlZCk6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmg6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlU
ZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OmdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OnJlbW92ZUl0ZW1WYWx1ZXNB
bmRXcmFwcGVycyk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVh
ck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6OlNWR0xpc3RQcm9w
ZXJ0eVRlYXJPZmYpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6
flNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Bh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVz
L1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0
YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmOjpTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNvbW1pdENo
YW5nZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Ry
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaDogUmVtb3ZlZC4KKwogMjAxNi0xMS0xNSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBzdHJuY3B5IG1heSBs
ZWF2ZSB1bnRlcm1pbmF0ZWQgc3RyaW5nIGluIFdlYkNvcmU6OlVSTDo6aW5pdApJbmRleDogU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNzY5LDYgKzI3NjksNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR0xhbmdTcGFjZS5jcHAKICAgICBzdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5jcHAKICAgICBzdmcvU1ZHTGVuZ3RoTGlzdC5jcHAKKyAgICBzdmcvU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5jcHAKICAgICBzdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCiAgICAgc3ZnL1NWR0xpbmVF
bGVtZW50LmNwcAogICAgIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0yNzc4
LDcgKzI3NzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR01hc2tFbGVtZW50
LmNwcAogICAgIHN2Zy9TVkdNZXRhZGF0YUVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR01pc3NpbmdH
bHlwaEVsZW1lbnQuY3BwCi0gICAgc3ZnL1NWR051bWJlckxpc3QuY3BwCisgICAgc3ZnL1NWR051
bWJlckxpc3RWYWx1ZXMuY3BwCiAgICAgc3ZnL1NWR1BhaW50LmNwcAogICAgIHN2Zy9TVkdQYXJz
ZXJVdGlsaXRpZXMuY3BwCiAgICAgc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApAQCAtMjc5MCwxMiAr
Mjc5MSwxMyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR1BhdGhTZWdMaXN0LmNw
cAogICAgIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCiAgICAgc3ZnL1NWR1BhdGhTZWdM
aXN0U291cmNlLmNwcAorICAgIHN2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAKICAgICBzdmcv
U1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwCiAgICAgc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3Bw
CiAgICAgc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwCiAgICAgc3ZnL1NWR1Bh
dGhVdGlsaXRpZXMuY3BwCiAgICAgc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAotICAgIHN2Zy9T
VkdQb2ludExpc3QuY3BwCisgICAgc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAKICAgICBzdmcv
U1ZHUG9seUVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAogICAgIHN2
Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCkBAIC0yODA2LDcgKzI4MDgsNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1NldEVs
ZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAotICAgIHN2Zy9TVkdTdHJpbmdM
aXN0LmNwcAorICAgIHN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAogICAgIHN2Zy9TVkdTdHls
ZUVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1N5
bWJvbEVsZW1lbnQuY3BwCkBAIC0yODIxLDcgKzI4MjMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCiAgICAgc3ZnL1NWR1RyYW5zZm9y
bS5jcHAKICAgICBzdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwCi0gICAgc3ZnL1NWR1RyYW5z
Zm9ybUxpc3QuY3BwCisgICAgc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwCiAgICAgc3Zn
L1NWR1RyYW5zZm9ybVZhbHVlLmNwcAogICAgIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAogICAg
IHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCkBAIC0yODQ2LDcgKzI4NDgsNiBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAog
ICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwCi0gICAgc3Zn
L3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCiAgICAgc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmNwcAogCiAgICAgd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw2
IEBACiAJCTA4M0RBRUE4MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDgzREFFQTQwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAgKi87IH07CiAJCTA4M0RBRUE5MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4M0RBRUE1MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaCAqLzsgfTsKIAkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODQ1NjgwNzEy
QjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwODRBMDgyOTEyOEQ3ODY3MDAyREIxRjEgLyogU1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4NEEwODI4MTI4RDc4NjcwMDJEQjFGMSAvKiBTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwODREQjU5QjEyODAwOENDMDAyQTZENjQg
LyogU1ZHQW5pbWF0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NERCNTlBMTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmlu
Zy5oICovOyB9OwogCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NTI1RTYyMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdBbmltYXRlZFN0YXRpY1By
b3BlcnR5VGVhck9mZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA4NTRCMDE1MTI1NUU0RTYwMEI5Q0REMCAvKiBSZW5kZXJTVkdJbmxpbmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NTRCMDAzMTI1
NUU0RTYwMEI5Q0REMCAvKiBSZW5kZXJTVkdJbmxpbmUuaCAqLzsgfTsKQEAgLTM5OSw3ICszOTgs
NiBAQAogCQkwOEIzNUIxMzEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QjM1QjEyMTI3
QjZBN0MwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlci5oICovOyB9OwogCQkwOEIzNUIxNzEy
N0I2QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEIzNUIxNjEyN0I2QTg4MDA1MzE0REQg
LyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggKi87IH07CiAJCTA4QjVGMjU1MTNCNUZGRjIwMDI5
NTlFQyAvKiBTVkdBbmltYXRlZFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDg2Mzk1MTMxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVk
UGF0aC5jcHAgKi87IH07Ci0JCTA4QzcxMzZFMTI4OTU2QTMwMDFCMTA3RSAvKiBTVkdUcmFuc2Zv
cm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwOEM3MTM2RDEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwOEM3QTJDNzEwREM3NDYyMDAyRDM2OEIgLyog
U1ZHTmFtZXMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MUU5MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5oICov
OyB9OwogCQkwOEM4NTlDMDEyNzQ1NzU0MDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM4NTlCRjEyNzQ1
NzUzMDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggKi87IH07CiAJCTA4QzkyNTE5MEZDQzdD
NEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTcwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVm
ZmVjdC5jcHAgKi87IH07CkBAIC00MTksNyArNDE3LDYgQEAKIAkJMDhGQjE3QzExM0JDN0U5MTAw
MDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8q
IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwICovOyB9OwogCQkwOEZCM0Y4NDEzQkM3NTRD
MDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQjNGODMxM0JDNzU0QzAwOTlGQzE4IC8q
IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEZFMEJDNTEyN0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwOEZFMEJDNDEyN0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi87IH07Ci0JCTA4RkYxMDIwMTI5NTBGNUEwMEYwMDI3NiAv
KiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYgLyogU1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovOyB9OwogCQkwQTQ4NDQ5OTBDQTQ0Q0Iy
MDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBBRkRB
QzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFGREFDM0MxMEY1NDQ4QzAwRTFGM0QyIC8q
IFBsdWdpblZpZXdCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEI4QzU2RDQwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI4QzU2RDMw
RjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovOyB9OwpAQCAtMjg0NSw2ICsy
ODQyLDE0IEBACiAJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVj
dFRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgKi87
IH07CiAJCTdDMkJERDNFMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJERDND
MTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLzsgfTsKIAkJN0Mz
M0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzRjM2MDFCNEEw
NTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLzsgfTsKKwkJN0Mz
OUMzNjQxRERBODY0QzAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjIxRERBODY0OTAw
RkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwICovOyB9OworCQk3QzM5QzM2NTFEREE4
NjUyMDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjMxRERBODY0OTAwRkVGQjI5IC8qIFNW
R0xlbmd0aExpc3RWYWx1ZXMuaCAqLzsgfTsKKwkJN0MzOUMzNzExRERCQjhBRTAwRkVGQjI5IC8q
IFNWR1BhdGhTZWdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDMzlDMzcwMUREQkE0NDAwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdC5jcHAg
Ki87IH07CisJCTdDMzlDMzcyMUREQkI4QjMwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdFZhbHVl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5
QzM2RTFEREJBM0UwMDBGRUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwICovOyB9Owor
CQk3QzM5QzM3MzFEREJCOEMxMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5QzM2ODFEREI4
NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAgKi87IH07CisJCTdDMzlDMzc0
MUREQkI4RDMwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzZDMUREQjhCQjAwMEZF
RkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcCAqLzsgfTsKKwkJN0MzOUMzNzUxRERC
QjhERDAwRkVGQjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5QzM2QTFEREI4NzFDMDBGRUZCMjkgLyog
U1ZHUG9pbnRMaXN0VmFsdWVzLmNwcCAqLzsgfTsKKwkJN0MzOUMzNzYxRERCQjkwRDAwRkVGQjI5
IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjYxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xp
c3RWYWx1ZXMuY3BwICovOyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Mz
Qjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3NTdCMDBC
NDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKIAkJN0MzQjc5NzIxOTA4NzU3
QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NzAxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJN
ZXNzYWdlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC00NjM5LDcgKzQ2NDQsNiBAQAogCQlCMjIyN0E0QjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTWV0YWRhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzhCNTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVt
ZW50LmggKi87IH07CiAJCUIyMjI3QTREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc4QjcwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgKi87IH07CiAJCUIy
MjI3QTRFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEI4MEQwMEJGMjAwMDcxQjc4
MiAvKiBTVkdNUGF0aEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4QkEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3Bw
ICovOyB9OwogCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QkIwRDAw
QkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyN0E1MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
UGFpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc4QkQwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhaW50LmNwcCAqLzsgfTsKIAkJQjIyMjdB
NTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCRTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGFp
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NDY1NSwxMSArNDY1OSw5IEBACiAJCUIyMjI3QTZEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4RDcwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljLmggKi87IH07CiAJCUIyMjI3QTc4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRo
U2VnTGluZXRvSG9yaXpvbnRhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4RTIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG9I
b3Jpem9udGFsLmggKi87IH07CiAJCUIyMjI3QTdEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRo
U2VnTGluZXRvVmVydGljYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3OEU3MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVy
dGljYWwuaCAqLzsgfTsKLQkJQjIyMjdBODAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdM
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OEVBMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgKi87IH07CiAJCUIy
MjI3QTgxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4RUIwRDAwQkYyMDAwNzFCNzgy
IC8qIFNWR1BhdGhTZWdMaXN0LmggKi87IH07CiAJCUIyMjI3QTg3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdQYXR0ZXJuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzhGMTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1l
bnQuY3BwICovOyB9OwogCQlCMjIyN0E4ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OEYyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5oICovOyB9OwotCQlC
MjIyN0E4QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEY1MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdQb2ludExpc3QuY3BwICovOyB9OwogCQlCMjIyN0E4QzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzhGNjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggKi87IH07
CiAJCUIyMjI3QThFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGODBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0E4RjBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEY5MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2x5RWxl
bWVudC5oICovOyB9OwpAQCAtNDY3OSw3ICs0NjgxLDYgQEAKIAkJQjIyMjdBQTYwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1NldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3OTEwMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTZXRFbGVtZW50
LmggKi87IH07CiAJCUIyMjI3QUE4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkx
MjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FB
OTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTEzMEQwMEJGMjEwMDcxQjc4MiAvKiBT
VkdTdG9wRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0FBQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
U3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjIyNzkxNTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5jcHAgKi87IH07
CiAJCUIyMjI3QUFDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxNjBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUIyMjI3QUI1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdHcmFwaGlj
c0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc5MUYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR0dyYXBoaWNzRWxlbWVudC5jcHAgKi87
IH07CiAJCUIyMjI3QUI2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdHcmFwaGljc0VsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIwMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKQEAgLTQ3MDgsNyAr
NDcwOSw2IEBACiAJCUIyMjI3QURBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0
NDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5oICovOyB9OwogCQlCMjIyN0FE
QzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NDYwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmNwcCAqLzsgfTsKIAkJQjIyMjdBREQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0NzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZH
VHJhbnNmb3JtRGlzdGFuY2UuaCAqLzsgfTsKLQkJQjIyMjdBREUwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1RyYW5zZm9ybUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc5NDgwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3Qu
Y3BwICovOyB9OwogCQlCMjIyN0FERjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5
NDkwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCAqLzsgfTsKIAkJQjIyMjdB
RTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTRCMEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdUUmVmRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QUUyMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdUUmVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc5NEMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmggKi87
IH07CkBAIC02ODE0LDcgKzY4MTQsNiBAQAogCQlGREY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyog
SlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNh
bGxiYWNrLmggKi87IH07CiAJCUZFMEQ4NEU5MTA0ODQzNDgwMDFBMTc5RSAvKiBXZWJFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDg0RTgx
MDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUwRDg0RUIxMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2
ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUw
RDg0RUExMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tICovOyB9OwotCQlGRTMzNzFBMjE2
N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyog
RGF0YWJhc2VCYXNpY1R5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkUzNkZEMTUxNkM3ODI2NTAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25E
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2
RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCAqLzsgfTsKIAkJRkUz
NkZEMTYxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzZGRDEyMTZD
NzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5jcHAgKi87IH07CiAJ
CUZFMzZGRDE3MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNkZEMTMx
NkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmggKi87IH07CkBA
IC03MzA1LDcgKzczMDQsNiBAQAogCQkwODNEQUVBNDBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA4M0RBRUE1MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NDU2
ODA3MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0cmljcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250TWV0cmljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwODRBMDgyODEyOEQ3ODY3MDAyREIxRjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg0REI1OUExMjgw
MDhDQzAwMkE2RDY0IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4NTI1RTYyMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdBbmltYXRlZFN0YXRpY1Byb3Bl
cnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRl
ZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODU0QjAwMjEyNTVFNEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5saW5lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0lubGluZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzYxLDcgKzczNTksNiBAQAogCQkwOEE0ODQ3NjBFNTI3
MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
QjM1QjEyMTI3QjZBN0MwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZE51bWJlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwOEIzNUIxNjEyN0I2QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVk
TnVtYmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwOEM3MTM2RDEyODk1
NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2Zm
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4Qzg1OUJGMTI3NDU3NTMwMEE1NzI4
RCAvKiBTVkdBbmltYXRlZFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0ZWRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4QzkyNTE3
MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyRWZmZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTczODIsNyArNzM3OSw2IEBACiAJCTA4RkIxN0MwMTNCQzdFOTEw
MDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4RkUwQkM0MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4RkYxMDFG
MTI5NTBGNTkwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU2VnTGlzdFByb3BlcnR5
VGVhck9mZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRD
QjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQUZEQUMz
QzEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGx1Z2luVmlld0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUEhlYWRlck1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDI3MCw2ICsxMDI2NiwxOSBAQAogCQk3QzJCREQz
QjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBK
U0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNET01HbG9iYWxPYmplY3RUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNjIxRERBODY0OTAw
RkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDMzlDMzYzMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFs
dWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNjYxRERCODJDRjAwRkVG
QjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDMzlDMzY3MUREQjgyQ0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0cmluZ0xpc3RWYWx1ZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNjgxRERCODZEMzAwRkVGQjI5
IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdDMzlDMzY5MUREQjg2RDMwMEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNkExRERCODcxQzAwRkVGQjI5IC8q
IFNWR1BvaW50TGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdQb2ludExpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QzM5QzM2QjFEREI4NzFDMDBGRUZCMjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BvaW50TGlzdFZhbHVlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5QzM2QzFEREI4QkIwMDBGRUZCMjkgLyogU1ZHVHJh
bnNmb3JtTGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0MzOUMzNkQxRERCOEJCMDAwRkVGQjI5IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5QzM2RTFEREJBM0UwMDBGRUZCMjkg
LyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QzM5QzM2RjFEREJBM0UwMDBGRUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNzAxRERCQTQ0MDAwRkVGQjI5
IC8qIFNWR1BhdGhTZWdMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR1BhdGhTZWdMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Mz
QTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJN
ZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBV
c2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNC
Nzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTIzNzQsNyArMTIzODMsNiBAQAogCQlCMjIyNzhCNzBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdNUGF0aEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMjIyNzhCODBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNUGF0aEVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4QjkwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051
bWJlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR051bWJlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyMjI3OEJBMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdOdW1i
ZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdOdW1i
ZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4QkIwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR051bWJlckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIy
Mjc4QkMwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBTVkdOdW1iZXJMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIyMjc4QkQwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhaW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMjQxMSw3ICsxMjQxOSw2IEBACiAJCUIyMjI3OEU3MEQwMEJGMjAwMDcx
Qjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMjIyNzhFODBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpbmV0
b1ZlcnRpY2FsQWJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHUGF0aFNlZ0xpbmV0
b1ZlcnRpY2FsQWJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4RTkw
RDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyMjI3OEVBMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQ
YXRoU2VnTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
UGF0aFNlZ0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhFQjBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1BhdGhTZWdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyMjI3OEVDMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFNWR1BhdGhTZWdMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjIyMjc4RUYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG9B
YnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdQYXRoU2VnTW92ZXRvQWJzLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNDIwLDcgKzEyNDI3LDYgQEAKIAkJQjIy
Mjc4RjIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXR0ZXJuRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjIyNzhGMzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVs
ZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdQYXR0ZXJuRWxlbWVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEY0MEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdQb2ludC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR1BvaW50LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjIyMjc4RjUwRDAwQkYyMTAwNzFCNzgyIC8qIFNW
R1BvaW50TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
UG9pbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4RjYwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1BvaW50TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUG9pbnRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIy
MjI3OEY3MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBTVkdQb2ludExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjIyNzhGODBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BvbHlFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNDUxLDcgKzEyNDU3LDYgQEAKIAkJQjIyMjc5MTIw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdTdG9wRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUIyMjI3OTEzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHU3RvcEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MTQwRDAwQkYyMTAwNzFCNzgyIC8qIFNW
R1N0b3BFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHU3RvcEVsZW1lbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzkxNTBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3RyaW5nTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHU3RyaW5nTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIy
MjI3OTE2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTdHJpbmdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyMjI3OTE3MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHU3RyaW5nTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyMjI3OTFGMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdHcmFwaGljc0Vs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0dyYXBo
aWNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjQ5Myw3ICsx
MjQ5OCw2IEBACiAJCUIyMjI3OTQ0MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1hYmxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTQ2MEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMjIyNzk0NzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RyYW5zZm9ybURpc3RhbmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyMjI3OTQ4MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIyMjc5NDkwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RyYW5zZm9ybUxpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5NEEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5z
Zm9ybUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5NEIwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1RSZWZFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdUUmVmRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NDgyNiw3ICsxNDgzMCw2IEBACiAJCUZERjdFOUMyMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlv
QnVmZmVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRp
b0J1ZmZlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMEQ4NEU4
MTA0ODQzNDgwMDFBMTc5RSAvKiBXZWJFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTBEODRF
QTEwNDg0MzZFMDAxQTE3OUUgLyogV2ViRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkUzMzcxQTAxNjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUJhc2ljVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNkZEMTExNkM3ODI2NDAwRjg4N0MxIC8qIENoYW5n
ZVZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYW5nZVZl
cnNpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzZGRDEyMTZDNzgy
NjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzZGRDEzMTZDNzgyNjQwMEY4ODdDMSAv
KiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTUyOTMsOCArMTUyOTYsNiBAQAogCQkJCTA4MTA3NjQzMTI4Mjg1NTYwMDdD
NjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCAqLywKIAkJCQkwODhBMEUwMDEyNkVGMURCMDA5NzhG
N0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4Q0EzRDQzMTI4OTRBMzgw
MEZGRjI2MCAvKiBTVkdNYXRyaXhUZWFyT2ZmLmggKi8sCi0JCQkJMDhGRjEwMUYxMjk1MEY1OTAw
RjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCAqLywKLQkJCQkwODRB
MDgyODEyOEQ3ODY3MDAyREIxRjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAq
LywKIAkJCQkwODhBMEUwMTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHkuaCAqLywKIAkJ
CQlCNTQzQjg1NjE3RUI3NThGMDAzQkU5M0EgLyogU1ZHUHJvcGVydHlJbmZvLmNwcCAqLywKIAkJ
CQkwODFERDQ5QjEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggKi8sCkBAIC0x
NTMwMiw3ICsxNTMwMyw2IEBACiAJCQkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1By
b3BlcnR5VHJhaXRzLmggKi8sCiAJCQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0
YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODEzQTRFOTEyODQxMzI2MDA5OTI1
MTEgLyogU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8sCi0JCQkJMDhDNzEzNkQxMjg5NTZB
MzAwMUIxMDdFIC8qIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gcHJvcGVydGllczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0y
MTA1MCw2ICsyMTA1MCw4IEBACiAJCQkJQjIyMjc4OUYwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xl
bmd0aExpc3QuY3BwICovLAogCQkJCUIyMjI3OEEwMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5n
dGhMaXN0LmggKi8sCiAJCQkJQjIyMjc4QTEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aExp
c3QuaWRsICovLAorCQkJCTdDMzlDMzYyMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0
VmFsdWVzLmNwcCAqLywKKwkJCQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3Ro
TGlzdFZhbHVlcy5oICovLAogCQkJCTdDRTU4RDUyMUREN0IwOTMwMDEyODU1MiAvKiBTVkdMZW5n
dGhWYWx1ZS5jcHAgKi8sCiAJCQkJN0NFNThENTMxREQ3QjA5MzAwMTI4NTUyIC8qIFNWR0xlbmd0
aFZhbHVlLmggKi8sCiAJCQkJQjIyMjc4QTIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAgKi8sCkBAIC0yMTA4MCw5ICsyMTA4MiwxMCBAQAogCQkJCTQ0RDhE
QTk4MTM5NTQ1QkUwMDMzN0I3NSAvKiBTVkdNUGF0aEVsZW1lbnQuaWRsICovLAogCQkJCTdDRTU4
RDRGMURENjlBMUUwMDEyODU1MiAvKiBTVkdOdW1iZXIuaCAqLywKIAkJCQlCMjIyNzhCOTBEMDBC
RjIwMDA3MUI3ODIgLyogU1ZHTnVtYmVyLmlkbCAqLywKLQkJCQlCMjIyNzhCQTBEMDBCRjIwMDA3
MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5jcHAgKi8sCiAJCQkJQjIyMjc4QkIwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR051bWJlckxpc3QuaCAqLywKIAkJCQlCMjIyNzhCQzBEMDBCRjIwMDA3MUI3ODIg
LyogU1ZHTnVtYmVyTGlzdC5pZGwgKi8sCisJCQkJN0MzOUMzNjgxRERCODZEMzAwRkVGQjI5IC8q
IFNWR051bWJlckxpc3RWYWx1ZXMuY3BwICovLAorCQkJCTdDMzlDMzY5MUREQjg2RDMwMEZFRkIy
OSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmggKi8sCiAJCQkJQjIyMjc4QkQwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR1BhaW50LmNwcCAqLywKIAkJCQlCMjIyNzhCRTBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHUGFpbnQuaCAqLywKIAkJCQlCMjIyNzhCRjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGFpbnQu
aWRsICovLApAQCAtMjExNDYsMTMgKzIxMTQ5LDE1IEBACiAJCQkJQjIyMjc4RTgwRDAwQkYyMDAw
NzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicy5pZGwgKi8sCiAJCQkJODNDMUQ0
MjIxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oICovLAog
CQkJCUIyMjI3OEU5MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxS
ZWwuaWRsICovLAotCQkJCUIyMjI3OEVBMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlz
dC5jcHAgKi8sCisJCQkJN0MzOUMzNzAxRERCQTQ0MDAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0
LmNwcCAqLywKIAkJCQlCMjIyNzhFQjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3Qu
aCAqLywKIAkJCQlCMjIyNzhFQzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaWRs
ICovLAogCQkJCTg0NzZDOUUzMTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1aWxk
ZXIuY3BwICovLAogCQkJCTg0NzZDOUU0MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlz
dEJ1aWxkZXIuaCAqLywKIAkJCQk4NEI2Qjk3NTEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNl
Z0xpc3RTb3VyY2UuY3BwICovLAogCQkJCTg0QjZCOTc2MTIwRjEzRTUwMEI4RUZBRiAvKiBTVkdQ
YXRoU2VnTGlzdFNvdXJjZS5oICovLAorCQkJCTdDMzlDMzZFMUREQkEzRTAwMEZFRkIyOSAvKiBT
VkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAgKi8sCisJCQkJN0MzOUMzNkYxRERCQTNFMDAwRkVGQjI5
IC8qIFNWR1BhdGhTZWdMaXN0VmFsdWVzLmggKi8sCiAJCQkJODNDMUQ0MjMxNzhENUFCNDAwMTQx
RTY4IC8qIFNWR1BhdGhTZWdNb3ZldG9BYnMuaCAqLywKIAkJCQlCMjIyNzhFRjBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHUGF0aFNlZ01vdmV0b0Ficy5pZGwgKi8sCiAJCQkJODNDMUQ0MjQxNzhENUFC
NDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdNb3ZldG9SZWwuaCAqLywKQEAgLTIxMTcyLDkgKzIxMTc3
LDEwIEBACiAJCQkJQjIyMjc4RjMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50
LmlkbCAqLywKIAkJCQlCMjIyNzhGNDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnQuaWRsICov
LAogCQkJCTdDRTU4RDQ5MURENjRBNUIwMDEyODU1MiAvKiBTVkdQb2ludC5oICovLAotCQkJCUIy
MjI3OEY1MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuY3BwICovLAogCQkJCUIyMjI3
OEY2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuaCAqLywKIAkJCQlCMjIyNzhGNzBE
MDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmlkbCAqLywKKwkJCQk3QzM5QzM2QTFEREI4
NzFDMDBGRUZCMjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcCAqLywKKwkJCQk3QzM5QzM2QjFE
REI4NzFDMDBGRUZCMjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVzLmggKi8sCiAJCQkJQjIyMjc4Rjgw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzhGOTBE
MDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzhGQTBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHUG9seWdvbkVsZW1lbnQuY3BwICovLApAQCAtMjEyMDcsOSArMjEy
MTMsMTAgQEAKIAkJCQlCMjIyNzkxMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQu
Y3BwICovLAogCQkJCUIyMjI3OTEzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5o
ICovLAogCQkJCUIyMjI3OTE0MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5pZGwg
Ki8sCi0JCQkJQjIyMjc5MTUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuY3BwICov
LAogCQkJCUIyMjI3OTE2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggKi8sCiAJ
CQkJQjIyMjc5MTcwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaWRsICovLAorCQkJ
CTdDMzlDMzY2MUREQjgyQ0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLywK
KwkJCQk3QzM5QzM2NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oICov
LAogCQkJCUIyMjI3OTIxMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICov
LAogCQkJCUIyMjI3OTIyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLywK
IAkJCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmlkbCAqLywK
QEAgLTIxMjUwLDkgKzIxMjU3LDEwIEBACiAJCQkJQjIyMjc5NDQwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1RyYW5zZm9ybWFibGUuaCAqLywKIAkJCQlCMjIyNzk0NjBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwICovLAogCQkJCUIyMjI3OTQ3MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oICovLAotCQkJCUIyMjI3OTQ4MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmNwcCAqLywKIAkJCQlCMjIyNzk0OTBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5oICovLAogCQkJCUIyMjI3OTRBMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmlkbCAqLywKKwkJCQk3QzM5QzM2QzFEREI4QkIwMDBG
RUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgKi8sCisJCQkJN0MzOUMzNkQxRERC
OEJCMDAwRkVGQjI5IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCAqLywKIAkJCQk3Q0U1OEQ1
NTFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuY3BwICovLAogCQkJCTdDRTU4
RDU2MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJCUIyMjI3
OTRCMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5jcHAgKi8sCkBAIC0yNzA0Miw2
ICsyNzA1MCw3IEBACiAJCQkJODM2REFBMDYxQ0VBQjgwRDAwQTJCNzA3IC8qIFJlbmRlckRlc2Nl
bmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDMwMjc1NEExMkE1RkU4NDAwNEJE
ODI4IC8qIFJlbmRlckRldGFpbHNNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NkU1RjdG
MTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QzM5QzM2NTFEREE4NjUyMDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOUIzMkNEQTkxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVk
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0M0EwMjNCMTdFQjM3MEEwMDRDREQyNSAv
KiBSZW5kZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCN0E1NTEwRjY1RDdBMDAz
NzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjc2OTIs
NyArMjc3MDEsNiBAQAogCQkJCTgzQzFENDM0MTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2Vn
TGluZXRvVmVydGljYWxSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTgxMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RTYx
MURGNkEwQjAwNTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMDg0QTA4MjkxMjhENzg2NzAwMkRCMUYxIC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEI2Qjk3ODEyMEYxM0U1MDBCOEVGQUYgLyog
U1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDM1MTc4RDVB
QjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTW92ZXRvQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0MxRDQzNjE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzc1OCw3ICsyNzc2Niw2IEBACiAJCQkJQjIyMjdBREEwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUREMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBREYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTA4QzcxMzZFMTI4OTU2QTMwMDFCMTA3RSAvKiBTVkdUcmFuc2Zvcm1MaXN0
UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FFMjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUU1MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdUU3BhbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QUU3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdVbml0VHlwZXMuaCBpbiBIZWFkZXJzICovLApA
QCAtMjg5MDcsNiArMjg5MTQsNyBAQAogCQkJCTk3N0IzODYyMTIyODgzRTkwMEI4MUZGOCAvKiBD
U1NQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkQwNTBBMTk4OUNB
MDA3RkI4QzUgLyogQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgw
RTZDRjcwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Byb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdDMzlDMzY0MUREQTg2NEMwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc4RDAyQkM1MTU0QTE4REYwMEI2MkQwNSAvKiBDU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUJBNzZDQTExRDIwRTUwMDA0QzIw
MUMgLyogQ1NTUHJvcGVydHlOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NDZEMzc0NTFE
NkQwMUQ0MDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yOTEzMSw2ICsyOTEzOSw3IEBACiAJCQkJODQ3MzBEN0ExMjQ4RjBCMzAwRDNBOUM5IC8qIEZF
RGlmZnVzZUxpZ2h0aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDdDMTI0OEYwQjMw
MEQzQTlDOSAvKiBGRURpc3BsYWNlbWVudE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzU4
RTg4MDEzNjBBMzE3MDBFNDc0OEMgLyogRkVEcm9wU2hhZG93LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdDMzlDMzcxMUREQkI4QUUwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NDczMEQ3RTEyNDhGMEIzMDBEM0E5QzkgLyogRkVGbG9vZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NDgwMTk1NDEwOEJBRkIzMDBDQjJCMUYgLyogRkVHYXVzc2lhbkJs
dXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3MzBEODAxMjQ4RjBCMzAwRDNBOUM5IC8qIEZF
TGlnaHRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTM4Miw2ICsyOTM5MSw3IEBACiAJCQkJ
RDNENEU5NzIxMzBDN0NGRTAwN0JBNTQwIC8qIEhUTUxTdW1tYXJ5RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODcxREIzMjBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURCMkUwQTE1MEJENjAwQjEyQTY4
IC8qIEhUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMzlDMzcz
MUREQkI4QzEwMEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4NzFEQjI5MEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVDb2xFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQjI4MEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFi
bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQjJEMEExNTBCRDYwMEIxMkE2
OCAvKiBIVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTYwLDYg
KzMwNTcwLDcgQEAKIAkJCQkzMzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9u
Q2VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMjhDQTY4MTQ3MzMxNTIwMDc0QzcyQSAv
KiBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTEzRDUx
MTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QzM5QzM3MjFEREJCOEIzMDBGRUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMEEwRDdFMkI4MjAwN0MzOTgzIC8qIE5QX2pzb2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDBEMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1
bnRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGNTJFMTExNEEwMTM0RjAwQUNDMzk3IC8q
IE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMDc5MSw2ICszMDgw
Miw3IEBACiAJCQkJRDcwQUQ2NTcxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0U5M0Y0NzE1MTdDNkQ1MDA4Q0NGNzQgLyogUmVuZGVyUmVn
aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFERkUyMEExNTM3NkIwMEIxMkE2OCAv
KiBSZW5kZXJSZXBsYWNlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzM5QzM3NjFEREJCOTBE
MDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0E4NDZENjBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDc5RkFFRDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDc5RkFFRjEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTAzNyw2ICszMTA0OSw3IEBACiAJCQkJNUM2ODhBQTMx
RDM4MTRCRjAwMEI1NEZBIC8qIFNvY2tldFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhh
bmRsZUltcGxDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzM5QzM3NDFEREJCOEQzMDBG
RUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
NDUzOTA0NzBFQUZENjM3MDAzNjk1QzggLyogU291bmRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0QjMwNDNDOTBBRTAzNzFEMDBBODI2NDcgLyogU291bmRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk4NEE4MUYzRDBGQzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zMTI1MCw3ICszMTI2Myw2IEBACiAJCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQy
RjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
MjdBNEQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhaW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTU2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQ
YXJzZXJVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODRDNjc4NEMxMjE0ODE0NzAw
QTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEyNTksMTYg
KzMxMjcxLDEzIEBACiAJCQkJODQxOUQyQUMxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRl
U3RyZWFtU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTU4MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdQYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDc2QzlFRjEx
REY2QTU4MDA1NTVCMDIgLyogU1ZHUGF0aFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlC
MjIyN0E4MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODQ3NkM5RTUxMURGNkEwQjAwNTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRl
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwOEZGMTAyMDEyOTUwRjVBMDBGMDAyNzYgLyogU1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODRCNkI5
NzcxMjBGMTNFNTAwQjhFRkFGIC8qIFNWR1BhdGhTZWdMaXN0U291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg0MTlEMkI5MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDMwMEJEQTEyMEM5QUVEMDAyMTk1NEEgLyogU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NEM1QjJGQTEyMTZEQzgx
MDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3MUE1N0RGMTE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBOEIwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BvaW50TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4RTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdB
OTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTkzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5bGluZUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTI4MSw3ICszMTI5MCw2IEBACiAJCQkJQjIyMjdBQTUwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1NldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRB
RkQwMEYwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QUE4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCMjIyN0FBQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FCNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
U3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUJBMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTVkdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUJEMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdTd2l0Y2hFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzEyOTUsNyArMzEzMDMsNiBAQAogCQkJCTFDQ0RGNUJEMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdU
b09URkZvbnRDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUQ5MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QURDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlCMjIyN0FERTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FFMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
VFJlZkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBRTQwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1RTcGFuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FFOTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHVVJJUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzE1MDksNiArMzE1MTYsNyBAQAogCQkJCTBGMDk5RDA4MTdCOTY4QTEwMEZGODRCOSAvKiBXZWJD
b3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGODE4RkUw
RDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTQ0NEQ0RTIzMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0g
aW4gU291cmNlcyAqLywKKwkJCQk3QzM5QzM3NTFEREJCOEREMDBGRUZCMjkgLyogU1ZHUG9pbnRM
aXN0VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QjA3MDgyNDVFNTkwMDFFOUFC
QyAvKiBXZWJDb3JlVmlldy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVFNjE2NzMxODk0NTgxRjAw
OUFERjUwIC8qIFdlYkRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUwRDg0
RUIxMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShy
ZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTExOCwxNSArMTE4LDYgQEAgbXkgJXN2Z0F0
dHJpYnV0ZXNJbkhUTUxIYXNoID0gKAogICAgICJvbnVubG9hZCIgPT4gMSwKICk7CiAKLW15ICVz
dmdUeXBlTmVlZGluZ1RlYXJPZmYgPSAoCi0gICAgIlNWR0xlbmd0aExpc3QiID0+ICJTVkdMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aExpc3Q+IiwKLSAgICAiU1ZHTnVtYmVyTGlzdCIgPT4g
IlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTnVtYmVyTGlzdD4iLAotICAgICJTVkdQb2ludExp
c3QiID0+ICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4iLAotICAgICJTVkdT
dHJpbmdMaXN0IiA9PiAiU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdMaXN0
PiIsCi0gICAgIlNWR1BhdGhTZWdMaXN0IiA9PiAiU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmYiLAotICAgICJTVkdUcmFuc2Zvcm1MaXN0IiA9PiAiU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZiIKLSk7Ci0KICMgQ2FjaGUgb2YgSURMIGZpbGUgcGF0aG5hbWVzLgogbXkgJGlkbEZp
bGVzOwogbXkgJGNhY2hlZEludGVyZmFjZXMgPSB7fTsKQEAgLTYwNCwxNiArNTk1LDYgQEAgc3Vi
IElzTm9uUG9pbnRlclR5cGUKICAgICByZXR1cm4gMDsKIH0KIAotc3ViIElzU1ZHVHlwZU5lZWRp
bmdUZWFyT2ZmCi17Ci0gICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwotCi0gICAgYXNzZXJ0
KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7Ci0KLSAgICByZXR1cm4g
MSBpZiBleGlzdHMgJHN2Z1R5cGVOZWVkaW5nVGVhck9mZnskdHlwZS0+bmFtZX07Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KIHN1YiBJc1R5cGVkQXJyYXlUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0
eXBlKSA9IEBfOwpAQCAtNjQwLDM3ICs2MjEsNiBAQCBzdWIgSXNSZWZQdHJUeXBlCiAgICAgcmV0
dXJuIDE7CiB9CiAKLXN1YiBHZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYKLXsKLSAgICBteSAoJG9i
amVjdCwgJHR5cGUpID0gQF87Ci0KLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5
cGUpIG5lICJJRExUeXBlIjsKLQotICAgIHJldHVybiAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmeyR0
eXBlLT5uYW1lfSBpZiBleGlzdHMgJHN2Z1R5cGVOZWVkaW5nVGVhck9mZnskdHlwZS0+bmFtZX07
Ci0gICAgcmV0dXJuIHVuZGVmOwotfQotCi1zdWIgR2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5nVGVh
ck9mZgotewotICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKLQotICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwotCi0gICAgbXkgJHN2Z1R5cGVO
ZWVkaW5nVGVhck9mZiA9ICRvYmplY3QtPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlwZSk7
Ci0gICAgcmV0dXJuICRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgaWYgbm90ICRzdmdUeXBlTmVlZGlu
Z1RlYXJPZmY7Ci0KLSAgICBpZiAoJHN2Z1R5cGVOZWVkaW5nVGVhck9mZiA9fiAvU1ZHTGlzdFBy
b3BlcnR5VGVhck9mZi8pIHsKLSAgICAgICAgJHN2Z1R5cGVOZWVkaW5nVGVhck9mZiA9fiBzL1NW
R0xpc3RQcm9wZXJ0eVRlYXJPZmY8Ly87Ci0gICAgfSBlbHNpZiAoJHN2Z1R5cGVOZWVkaW5nVGVh
ck9mZiA9fiAvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi8pIHsKLSAgICAgICAgJHN2Z1R5
cGVOZWVkaW5nVGVhck9mZiA9fiBzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8Ly87Ci0g
ICAgfSAgZWxzaWYgKCRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPX4gL1NWR1RyYW5zZm9ybUxpc3RQ
cm9wZXJ0eVRlYXJPZmYvKSB7Ci0gICAgICAgICRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPX4gcy9T
VkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmPC8vOwotICAgIH0gCi0KLSAgICAkc3ZnVHlw
ZU5lZWRpbmdUZWFyT2ZmID1+IHMvPi8vOwotICAgIHJldHVybiAkc3ZnVHlwZU5lZWRpbmdUZWFy
T2ZmOwotfQotCiBzdWIgSXNTVkdBbmltYXRlZFR5cGVOYW1lCiB7CiAgICAgbXkgKCRvYmplY3Qs
ICR0eXBlTmFtZSkgPSBAXzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtODQyLDkgKzg0Miw2IEBAIHN1YiBHZXRJbXBsQ2xhc3NOYW1lCiB7CiAgICAgbXkgJGlu
dGVyZmFjZSA9IHNoaWZ0OwogCi0gICAgbXkgKCRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0
aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVzKCRpbnRlcmZhY2UpOwotICAgIHJldHVybiAk
c3ZnTmF0aXZlVHlwZSBpZiAkc3ZnTmF0aXZlVHlwZTsKLQogICAgIHJldHVybiAkaW50ZXJmYWNl
LT50eXBlLT5uYW1lOwogfQogCkBAIC0xMzQyLDcgKzEzMzksNiBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICAkaGVhZGVySW5jbHVkZXN7IlNWR0VsZW1lbnQuaCJ9ID0gMSBpZiAkY2xhc3NOYW1l
ID1+IC9eSlNTVkcvOwogCiAgICAgbXkgJGltcGxUeXBlID0gR2V0SW1wbENsYXNzTmFtZSgkaW50
ZXJmYWNlKTsKLSAgICBteSAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9
IEdldFNWR1Byb3BlcnR5VHlwZXMoJGludGVyZmFjZSk7CiAKICAgICBteSAkbnVtQ29uc3RhbnRz
ID0gQHskaW50ZXJmYWNlLT5jb25zdGFudHN9OwogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHsk
aW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsKQEAgLTEzNTUsNyArMTM1MSw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgIH0gZWxzZSB7CiAgICAgICAgICMgSW1wbGVtZW50YXRpb24gY2xhc3MgZm9y
d2FyZCBkZWNsYXJhdGlvbgogICAgICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFj
ZSkpIHsKLSAgICAgICAgICAgIEFkZENsYXNzRm9yd2FyZElmTmVlZGVkKCRpbnRlcmZhY2UtPnR5
cGUpIHVubGVzcyAkc3ZnTGlzdFByb3BlcnR5VHlwZTsKKyAgICAgICAgICAgIEFkZENsYXNzRm9y
d2FyZElmTmVlZGVkKCRpbnRlcmZhY2UtPnR5cGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
Mzg4LDcgKzEzODQsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57TWFzcXVlcmFkZXNBc1VuZGVmaW5lZH0pIHsKLSAgICAgICAgQWRkSW5jbHVk
ZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnTGlz
dFByb3BlcnR5VHlwZTsKKyAgICAgICAgQWRkSW5jbHVkZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJ
bkhlYWRlcigkaW1wbFR5cGUpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxPYmplY3QtPnZtKCksIFwiQWxsb2NhdGVkIG1h
c3F1ZXJhZGluZyBvYmplY3RcIik7XG4iKTsKQEAgLTE0MDQsNyArMTQwMCw3IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4g
cHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsgIAog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIEFkZEluY2x1ZGVzRm9ySW1wbGVtZW50YXRpb25UeXBlSW5I
ZWFkZXIoJGltcGxUeXBlKSB1bmxlc3MgJHN2Z0xpc3RQcm9wZXJ0eVR5cGU7CisgICAgICAgIEFk
ZEluY2x1ZGVzRm9ySW1wbGVtZW50YXRpb25UeXBlSW5IZWFkZXIoJGltcGxUeXBlKTsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xh
c3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+
KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpO1xuIik7CkBAIC0yMzczLDkgKzIzNjksNyBAQCBzdWIgR2V0
TmF0aXZlVHlwZUZvckNvbnZlcnNpb25zCiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owog
Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwotICAgICRp
bnRlcmZhY2VOYW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigk
aW50ZXJmYWNlLT50eXBlKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJP
ZmYoJGludGVyZmFjZS0+dHlwZSk7Ci0gICAgcmV0dXJuICRpbnRlcmZhY2VOYW1lOworICAgIHJl
dHVybiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwogfQogCiAjIFNlZSBodHRwOi8vcmVmc3BlY3Mu
bGludXgtZm91bmRhdGlvbi5vcmcvY3h4YWJpLTEuODMuaHRtbC4KQEAgLTI5NjYsOCArMjk2MCw2
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogICAgIHB1c2goQGltcGxDb250
ZW50LCAiLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRjbGFzc05hbWUpIH07XG5cbiIpOwogCi0gICAg
bXkgKCRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0
eVR5cGVzKCRpbnRlcmZhY2UpOwotCiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBBZGRJbmNsdWRlc0ZvckltcGxlbWVu
dGF0aW9uVHlwZUluSW1wbCgiSlNET01XaW5kb3dTaGVsbCIpOwpAQCAtMzMzNCwyNyArMzMyNiwy
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAgICAgbXkgQGNh
bGxXaXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCBcQGltcGxDb250ZW50LCAianNVbmRlZmlu
ZWQoKSIpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRzdmdMaXN0UHJvcGVydHlUeXBlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0
ID0gICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGlu
dGVyZmFjZSwgInRoaXNPYmplY3Qud3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIg
LiAoam9pbiAiLCAiLCBAY2FsbFdpdGhBcmdzKSAuICIpIiwgInRoaXNPYmplY3QiKSAuICI7XG4i
KTsKKyAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29k
ZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5h
bWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07CisgICAgICAgICAg
ICAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgJGZ1
bmN0aW9uTmFtZSA9ICJXZWJDb3JlOjoke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uTmFtZX0i
OworICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRh
dHRyaWJ1dGUtPmlzU3RhdGljOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbnRl
cmZhY2VOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29k
ZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5h
bWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OwotICAgICAg
ICAgICAgICAgICAgICBpZiAoJGltcGxlbWVudGVkQnkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6
JHtmdW5jdGlvbk5hbWV9IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3Vt
ZW50cywgImltcGwiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSI7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
ZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbk5hbWV9IjsKLSAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgQGNhbGxXaXRo
QXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWVV
c2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgIiR7ZnVuY3Rpb25OYW1l
fSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgInRoaXNPYmplY3QiKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpO1xuIikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICRqc1R5
cGU7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVu
Y3Rpb25OYW1lfSI7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgdW5zaGlm
dChAYXJndW1lbnRzLCBAY2FsbFdpdGhBcmdzKTsKKyAgICAgICAgICAgICAgICBteSAkanNUeXBl
ID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsIDAsICRpbnRlcmZh
Y2UsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJ0
aGlzT2JqZWN0Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpO1xuIikgaWYgISRhdHRyaWJ1dGUtPmlzU3Rh
dGljOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVz
dWx0ID0gJGpzVHlwZTtcbiIpOworCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgdGhpc09iamVjdC5tXyIgLiAkYXR0cmlidXRlLT5uYW1lIC4gIi5zZXQoc3RhdGUudm0o
KSwgJnRoaXNPYmplY3QsIHJlc3VsdCk7XG4iKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiByZXN1bHQ7XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTM2MDQsNDIg
KzM1OTIsMzQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAg
ICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtzdmdMaXN0
UHJvcGVydHlUeXBlfSYgcG9kSW1wbCA9IGltcGwucHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOwot
ICAgICAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAicG9kSW1wbC5zZXQkaW1w
bFNldHRlckZ1bmN0aW9uTmFtZShuYXRpdmVWYWx1ZSkiOwotICAgICAgICAgICAgICAgICAgICAk
ZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCAk
ZnVuY3Rpb25TdHJpbmcpIiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0
ZXJNYXlUaHJvd0V4Y2VwdGlvbn07Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRmdW5jdGlvblN0cmluZztcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRz
KSA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50
ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5h
bWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb24oXCVpbXBs
SW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKIAotICAgICAgICAgICAgICAg
ICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpIGFuZCBub3Qg
JHR5cGUtPm5hbWUgZXEgIkFycmF5QnVmZmVyIikgewotICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAYXJndW1lbnRzLCAibmF0aXZlVmFsdWUuZ2V0KCkiKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZS52YWx1ZSgpIik7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBhcmd1bWVudHMsIFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGF0dHJpYnV0ZSwg
JGludGVyZmFjZSkgPyAiKm5hdGl2ZVZhbHVlIiA6ICJXVEZNb3ZlKG5hdGl2ZVZhbHVlKSIpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRl
ZEJ5ID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0uaCIsICRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRhdHRyaWJ1dGUtPmlzU3Rh
dGljOwotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJXZWJDb3JlOjok
e2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uTmFtZX0iOwotICAgICAgICAgICAgICAgICAgICB9
IGVsc2lmICgkYXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAg
JGZ1bmN0aW9uTmFtZSA9ICIke2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9uTmFtZX0iOwotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0
aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25OYW1lfSI7Ci0gICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5
cGUpIGFuZCBub3QgJHR5cGUtPm5hbWUgZXEgIkFycmF5QnVmZmVyIikgeworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZS5nZXQoKSIpOworICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkgeworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZS52YWx1ZSgpIik7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJn
dW1lbnRzLCBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhdHRyaWJ1dGUsICRpbnRlcmZh
Y2UpID8gIipuYXRpdmVWYWx1ZSIgOiAiV1RGTW92ZShuYXRpdmVWYWx1ZSkiKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKKyAgICAgICAgICAgICAgICBp
ZiAoJGltcGxlbWVudGVkQnkpIHsKKyAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIiR7aW1wbGVtZW50ZWRCeX0uaCIsICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywg
ImltcGwiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgICAgICAgICAgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbk5hbWV9
IjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5pc1N0YXRpYykgeworICAg
ICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVu
Y3Rpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25OYW1lfSI7CisgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVD
YWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntT
ZXR0ZXJDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJmYWxzZSIpKTsKLSAgICAgICAgICAgICAg
ICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2Vz
KCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgXEBpbXBsQ29udGVu
dCwgImZhbHNlIikpOworICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2VuZXJh
dGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntTZXR0ZXJDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJmYWxzZSIpKTsKKyAgICAgICAgICAg
ICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCBcQGltcGxDb250ZW50
LCAiZmFsc2UiKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0g
IiRmdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7Ci0gICAgICAg
ICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUs
IHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1NldHRlck1heVRocm93RXhjZXB0aW9ufTsKKyAgICAgICAgICAgICAgICBteSAk
ZnVuY3Rpb25TdHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRz
KSAuICIpIjsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhj
ZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiAkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn07CiAKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGZ1bmN0aW9uU3RyaW5nO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0
cnVlO1xuIik7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRmdW5jdGlvblN0cmluZztcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKQEAgLTM4NjAsOCArMzg0MCw2
IEBAIEVORAogICAgICAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsK
ICAgICAgICAgICAgICAgICAgICAgbXkgJGVuY29kZWROYW1lID0gImVuY29kZWQiIC4gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwogICAgICAgICAgICAgICAgICAgICBteSAkbmF0
aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKLSAg
ICAgICAgICAgICAgICAgICAgbXkgJGlzVGVhck9mZiA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5
cGVOZWVkaW5nVGVhck9mZigkdHlwZSkgJiYgJGludGVyZmFjZU5hbWUgIX4gL0xpc3QkLzsKLSAg
ICAgICAgICAgICAgICAgICAgZGllICJUZWFyT2ZmIHR5cGUgaXMgbm90IGFsbG93ZWQiIGlmICRp
c1RlYXJPZmY7CiAgICAgICAgICAgICAgICAgICAgIG15ICRzaG91bGRQYXNzQnlSZWZlcmVuY2Ug
PSBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhcmd1bWVudCwgJGludGVyZmFjZSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc2hvdWxkUGFzc0J5UmVmZXJlbmNlICYmICgkY29k
ZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzVHlw
ZWRBcnJheVR5cGUoJHR5cGUpKSkgewpAQCAtNDQ3MSw3ICs0NDQ5LDYgQEAgc3ViIEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICBteSAkb3V0ZXI7CiAgICAgICAgICAgICBteSAk
aW5uZXI7CiAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVy
ZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKLSAgICAgICAgICAgIG15ICRpc1RlYXJPZmYgPSAkY29k
ZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpICYmICRpbnRlcmZhY2VO
YW1lICF+IC9MaXN0JC87CiAKICAgICAgICAgICAgIGRpZSAiVmFyaWFkaWMgYXJndW1lbnQgaXMg
YWxyZWFkeSBoYW5kbGVkIGhlcmUiIGlmICRhcmd1bWVudC0+aXNWYXJpYWRpYzsKICAgICAgICAg
ICAgIG15ICRhcmd1bWVudExvb2t1cE1ldGhvZCA9ICRhcmd1bWVudC0+aXNPcHRpb25hbCA/ICJh
cmd1bWVudCIgOiAidW5jaGVja2VkQXJndW1lbnQiOwpAQCAtNDUzMCw5ICs0NTA3LDcgQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmICgkaXNUZWFyT2ZmKSB7Ci0gICAgICAgICAgICAgICAgJHZhbHVlID0gIiRuYW1lLT5w
cm9wZXJ0eVJlZmVyZW5jZSgpIjsKLSAgICAgICAgICAgIH0gZWxzaWYgKFNob3VsZFBhc3NXcmFw
cGVyQnlSZWZlcmVuY2UoJGFyZ3VtZW50LCAkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgaWYg
KFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3VtZW50LCAkaW50ZXJmYWNlKSkgewog
ICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlw
ZSkgYW5kICR0eXBlLT5uYW1lIG5lICJBcnJheUJ1ZmZlciIpIHsKICAgICAgICAgICAgICAgICAg
ICAgJHZhbHVlID0gIiRuYW1lLnJlbGVhc2VOb25OdWxsKCkiOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC01MTU1LDcgKzUxMzAsNiBAQCBzdWIgR2V0SURMSW50ZXJmYWNlTmFtZQogewog
ICAgIG15ICgkdHlwZSkgPSBAXzsKIAotICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+R2V0U1ZH
VHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVl
ZGluZ1RlYXJPZmYoJHR5cGUpOwogICAgIHJldHVybiAkdHlwZS0+bmFtZTsKIH0KIApAQCAtNTIx
OSw5ICs1MTkzLDYgQEAgc3ViIEdldE5hdGl2ZVR5cGUKICAgICByZXR1cm4gR2V0RGljdGlvbmFy
eUNsYXNzTmFtZSgkdHlwZSwgJGludGVyZmFjZSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzRGljdGlv
bmFyeVR5cGUoJHR5cGUpOwogICAgIHJldHVybiBHZXROYXRpdmVWZWN0b3JUeXBlKCR0eXBlKSBp
ZiAkY29kZUdlbmVyYXRvci0+SXNTZXF1ZW5jZU9yRnJvemVuQXJyYXlUeXBlKCR0eXBlKTsKIAot
ICAgIG15ICR0ZWFyT2ZmVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1Rl
YXJPZmYoJHR5cGUpOwotICAgIHJldHVybiAiJHt0ZWFyT2ZmVHlwZX0qIiBpZiAkdGVhck9mZlR5
cGU7Ci0KICAgICByZXR1cm4gIlJlZlB0cjwke3R5cGVOYW1lfT4iIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSBhbmQgJHR5cGVOYW1lIG5lICJBcnJheUJ1ZmZlciI7
CiAgICAgcmV0dXJuICIke3R5cGVOYW1lfSoiOwogfQpAQCAtNTI2Myw0MCArNTIzNCw2IEBAIHN1
YiBHZXROYXRpdmVUeXBlRm9yTWVtb2l6YXRpb24KICAgICByZXR1cm4gR2V0TmF0aXZlVHlwZSgk
aW50ZXJmYWNlLCAkdHlwZSk7CiB9CiAKLXN1YiBHZXRTVkdQcm9wZXJ0eVR5cGVzCi17Ci0gICAg
bXkgJGludGVyZmFjZSA9IHNoaWZ0OwotCi0gICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJm
YWNlLT50eXBlLT5uYW1lOwotCi0gICAgbXkgJHN2Z0xpc3RQcm9wZXJ0eVR5cGU7Ci0gICAgbXkg
JHN2Z05hdGl2ZVR5cGU7Ci0KLSAgICByZXR1cm4gKCRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3Zn
TmF0aXZlVHlwZSkgaWYgbm90ICRpbnRlcmZhY2VOYW1lID1+IC9TVkcvOwotCi0gICAgJHN2Z05h
dGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRl
cmZhY2UtPnR5cGUpOwotICAgIHJldHVybiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUsICRzdmdOYXRp
dmVUeXBlKSBpZiBub3QgJHN2Z05hdGl2ZVR5cGU7Ci0KLSAgICBteSAkc3ZnV3JhcHBlZE5hdGl2
ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5nVGVhck9mZigk
aW50ZXJmYWNlLT50eXBlKTsKLSAgICBpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR0xpc3RQcm9w
ZXJ0eVRlYXJPZmYvIG9yICRzdmdOYXRpdmVUeXBlID1+IC9TVkdTdGF0aWNMaXN0UHJvcGVydHlU
ZWFyT2ZmLykgewotICAgICAgICAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9ICRzdmdXcmFwcGVkTmF0
aXZlVHlwZTsKLSAgICAgICAgJGhlYWRlckluY2x1ZGVzeyIkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUu
aCJ9ID0gMTsKLSAgICAgICAgJGhlYWRlckluY2x1ZGVzeyJTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmYuaCJ9ID0gMTsKLSAgICB9IGVsc2lmICgkc3ZnTmF0aXZlVHlwZSA9fiAvU1ZHVHJh
bnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi8pIHsKLSAgICAgICAgJHN2Z0xpc3RQcm9wZXJ0eVR5
cGUgPSAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGU7Ci0gICAgICAgICRoZWFkZXJJbmNsdWRlc3siJHN2
Z1dyYXBwZWROYXRpdmVUeXBlLmgifSA9IDE7Ci0gICAgICAgICRoZWFkZXJJbmNsdWRlc3siU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgifSA9IDE7Ci0gICAgICAgICRoZWFkZXJJbmNs
dWRlc3siU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIn0gPSAxOwotICAgIH0gZWxz
aWYgKCRzdmdOYXRpdmVUeXBlID1+IC9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi8pIHsK
LSAgICAgICAgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUgPSAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGU7Ci0g
ICAgICAgICRoZWFkZXJJbmNsdWRlc3siJHN2Z1dyYXBwZWROYXRpdmVUeXBlLmgifSA9IDE7Ci0g
ICAgICAgICRoZWFkZXJJbmNsdWRlc3siU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgi
fSA9IDE7Ci0gICAgICAgICRoZWFkZXJJbmNsdWRlc3siU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCJ9ID0gMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gKCRzdmdMaXN0UHJvcGVydHlUeXBl
LCAkc3ZnTmF0aXZlVHlwZSk7Ci19Ci0KIHN1YiBHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb24KIHsKICAgICBteSAkY29udGV4dCA9IHNoaWZ0OwpAQCAtNTUwOSwyMyArNTQ0Niw2IEBA
IHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICBpZiAoJHR5cGUtPm5hbWUgZXEgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSIpIHsKICAgICAgICAgcmV0dXJuICIkdmFsdWUgPyAkdmFsdWUtPmRlc2VyaWFs
aXplKCRzdGF0ZVJlZmVyZW5jZSwgJGdsb2JhbE9iamVjdCkgOiBqc051bGwoKSI7CiAgICAgfQot
ICAgIAotICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkgJiYgISRj
b2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlLT50eXBlKSBvciAoJGlu
dGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiU1ZHVmlld1NwZWMiIGFuZCAkdHlwZS0+bmFtZSBlcSAi
U1ZHVHJhbnNmb3JtTGlzdCIpKSB7Ci0gICAgICAgICAgICAjIENvbnZlcnQgZnJvbSBhYnN0cmFj
dCBSZWZQdHI8TGlzdFByb3BlcnR5PiB0byByZWFsIHR5cGUsIHNvIHRoZSByaWdodCB0b0pTKCkg
bWV0aG9kIGNhbiBiZSBpbnZva2VkLgotICAgICAgICAgICAgJHZhbHVlID0gInN0YXRpY19jYXN0
PCIgLiBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKSAuICI+KCR2YWx1ZS5nZXQoKSki
OwotICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJTVkdWaWV3U3Bl
YyIpIHsKLSAgICAgICAgICAgICMgQ29udmVydCBmcm9tIGFic3RyYWN0IFNWR1Byb3BlcnR5IHRv
IHJlYWwgdHlwZSwgc28gdGhlIHJpZ2h0IHRvSlMoKSBtZXRob2QgY2FuIGJlIGludm9rZWQuCi0g
ICAgICAgICAgICAkdmFsdWUgPSAic3RhdGljX2Nhc3Q8IiAuIEdldE5hdGl2ZVR5cGUoJGludGVy
ZmFjZSwgJHR5cGUpIC4gIj4oJHZhbHVlKSI7Ci0gICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlwZSkgYW5kIG5vdCAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lID1+IC9MaXN0JC8pIHsKLSAgICAgICAgICAgIG15ICR0ZWFyT2ZmVHlwZSA9ICRj
b2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpOwotICAgICAgICAg
ICAgaWYgKCR0ZWFyT2ZmVHlwZSA9fiAvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi8pIHsK
LSAgICAgICAgICAgICAgICAkdmFsdWUgPSAiJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZShpbXBsLCAk
dmFsdWUpIjsKLSAgICAgICAgICAgIH0gZWxzaWYgKG5vdCAkdGVhck9mZlR5cGUgPX4gL1NWRyhQ
b2ludHxQYXRoU2VnKUxpc3QvKSB7Ci0gICAgICAgICAgICAgICAgJHZhbHVlID0gIiR7dGVhck9m
ZlR5cGV9OjpjcmVhdGUoJHZhbHVlKSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
CiAKICAgICAkdmFsdWUgPSAiQmluZGluZ1NlY3VyaXR5OjpjaGVja1NlY3VyaXR5Rm9yTm9kZSgk
c3RhdGVSZWZlcmVuY2UsICR2YWx1ZSkiIGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDaGVja1NlY3VyaXR5Rm9yTm9kZX07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXNDYWNoZS5oIgot
I2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJTdHJva2VTdHlsZUFwcGxpZXIuaCIKICNpbmNsdWRlIDx3dGYvU3RhY2tT
dGF0cy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBACiAj
aW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKICNpbmNsdWRlICJTVkdSb290SW5saW5lQm94
LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1M
aXN0LmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3Jt
U3RhdGUuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCShyZXZpc2lv
biAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQ
YXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIlNWR1Bh
dGhFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlNW
R1RleHRQYXRoRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1BhdGhEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1BhdGhEYXRhLmNwcAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgorI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgog
I2luY2x1ZGUgIlNWR1BvbHlnb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUG9seWxpbmVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHUmVjdEVsZW1lbnQuaCIKQEAgLTg5LDcgKzkwLDcgQEAgc3Rh
dGljIHZvaWQgdXBkYXRlUGF0aEZyb21QYXRoRWxlbWVudChTVgogCiBzdGF0aWMgdm9pZCB1cGRh
dGVQYXRoRnJvbVBvbHlnb25FbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQsIFBhdGgmIHBhdGgp
CiB7Ci0gICAgU1ZHUG9pbnRMaXN0JiBwb2ludHMgPSBkb3duY2FzdDxTVkdQb2x5Z29uRWxlbWVu
dD4oZWxlbWVudCktPmFuaW1hdGVkUG9pbnRzKCktPnZhbHVlcygpOworICAgIGF1dG8mIHBvaW50
cyA9IGRvd25jYXN0PFNWR1BvbHlnb25FbGVtZW50PihlbGVtZW50KS0+YW5pbWF0ZWRQb2ludHMo
KS0+dmFsdWVzKCk7CiAgICAgaWYgKHBvaW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTA0LDcgKzEwNSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBhdGhGcm9tUG9seWdvbkVs
ZW1lbnQKIAogc3RhdGljIHZvaWQgdXBkYXRlUGF0aEZyb21Qb2x5bGluZUVsZW1lbnQoU1ZHRWxl
bWVudCogZWxlbWVudCwgUGF0aCYgcGF0aCkKIHsKLSAgICBTVkdQb2ludExpc3QmIHBvaW50cyA9
IGRvd25jYXN0PFNWR1BvbHlsaW5lRWxlbWVudD4oZWxlbWVudCktPmFuaW1hdGVkUG9pbnRzKCkt
PnZhbHVlcygpOworICAgIGF1dG8mIHBvaW50cyA9IGRvd25jYXN0PFNWR1BvbHlsaW5lRWxlbWVu
dD4oZWxlbWVudCktPmFuaW1hdGVkUG9pbnRzKCktPnZhbHVlcygpOwogICAgIGlmIChwb2ludHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gMjA4
NzU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUG9seUVsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdSZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Jvb3RJbmxp
bmVCb3guaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91
dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAJKHJldmlzaW9uIDIw
ODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJp
YnV0ZXNCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQg
U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWkKICAgICAgICAgZmlsbENoYXJhY3Rl
ckRhdGFNYXAobV90ZXh0UG9zaXRpb25zW2ldKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHVw
ZGF0ZUNoYXJhY3RlckRhdGEodW5zaWduZWQgaSwgZmxvYXQmIGxhc3RSb3RhdGlvbiwgU1ZHQ2hh
cmFjdGVyRGF0YSYgZGF0YSwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgbGVuZ3RoQ29udGV4dCwg
Y29uc3QgU1ZHTGVuZ3RoTGlzdCogeExpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3QqIHlMaXN0LCBj
b25zdCBTVkdMZW5ndGhMaXN0KiBkeExpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3QqIGR5TGlzdCwg
Y29uc3QgU1ZHTnVtYmVyTGlzdCogcm90YXRlTGlzdCkKK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRh
dGVDaGFyYWN0ZXJEYXRhKHVuc2lnbmVkIGksIGZsb2F0JiBsYXN0Um90YXRpb24sIFNWR0NoYXJh
Y3RlckRhdGEmIGRhdGEsIGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGxlbmd0aENvbnRleHQsIGNv
bnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHhMaXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVz
KiB5TGlzdCwgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHhMaXN0LCBjb25zdCBTVkdMZW5n
dGhMaXN0VmFsdWVzKiBkeUxpc3QsIGNvbnN0IFNWR051bWJlckxpc3RWYWx1ZXMqIHJvdGF0ZUxp
c3QpCiB7CiAgICAgaWYgKHhMaXN0KQogICAgICAgICBkYXRhLnggPSB4TGlzdC0+YXQoaSkudmFs
dWUobGVuZ3RoQ29udGV4dCk7CkBAIC0xNzUsMTEgKzE3NSwxMSBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgdXBkYXRlQ2hhcmFjdGVyRGF0YSh1CiAKIHZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNC
dWlsZGVyOjpmaWxsQ2hhcmFjdGVyRGF0YU1hcChjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9u
KQogewotICAgIGNvbnN0IFNWR0xlbmd0aExpc3QmIHhMaXN0ID0gcG9zaXRpb24uZWxlbWVudC0+
eCgpOwotICAgIGNvbnN0IFNWR0xlbmd0aExpc3QmIHlMaXN0ID0gcG9zaXRpb24uZWxlbWVudC0+
eSgpOwotICAgIGNvbnN0IFNWR0xlbmd0aExpc3QmIGR4TGlzdCA9IHBvc2l0aW9uLmVsZW1lbnQt
PmR4KCk7Ci0gICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCYgZHlMaXN0ID0gcG9zaXRpb24uZWxlbWVu
dC0+ZHkoKTsKLSAgICBjb25zdCBTVkdOdW1iZXJMaXN0JiByb3RhdGVMaXN0ID0gcG9zaXRpb24u
ZWxlbWVudC0+cm90YXRlKCk7CisgICAgY29uc3QgYXV0byYgeExpc3QgPSBwb3NpdGlvbi5lbGVt
ZW50LT54KCk7CisgICAgY29uc3QgYXV0byYgeUxpc3QgPSBwb3NpdGlvbi5lbGVtZW50LT55KCk7
CisgICAgY29uc3QgYXV0byYgZHhMaXN0ID0gcG9zaXRpb24uZWxlbWVudC0+ZHgoKTsKKyAgICBj
b25zdCBhdXRvJiBkeUxpc3QgPSBwb3NpdGlvbi5lbGVtZW50LT5keSgpOworICAgIGNvbnN0IGF1
dG8mIHJvdGF0ZUxpc3QgPSBwb3NpdGlvbi5lbGVtZW50LT5yb3RhdGUoKTsKIAogICAgIHVuc2ln
bmVkIHhMaXN0U2l6ZSA9IHhMaXN0LnNpemUoKTsKICAgICB1bnNpZ25lZCB5TGlzdFNpemUgPSB5
TGlzdC5zaXplKCk7CkBAIC0xOTIsMTEgKzE5MiwxMSBAQCB2b2lkIFNWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzQnVpbGRlcjo6ZmlsCiAgICAgZmxvYXQgbGFzdFJvdGF0aW9uID0gU1ZHVGV4dExheW91
dEF0dHJpYnV0ZXM6OmVtcHR5VmFsdWUoKTsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENv
bnRleHQocG9zaXRpb24uZWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBv
c2l0aW9uLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3QqIHhMaXN0
UHRyID0gaSA8IHhMaXN0U2l6ZSA/ICZ4TGlzdCA6IDA7Ci0gICAgICAgIGNvbnN0IFNWR0xlbmd0
aExpc3QqIHlMaXN0UHRyID0gaSA8IHlMaXN0U2l6ZSA/ICZ5TGlzdCA6IDA7Ci0gICAgICAgIGNv
bnN0IFNWR0xlbmd0aExpc3QqIGR4TGlzdFB0ciA9IGkgPCBkeExpc3RTaXplID8gJmR4TGlzdCA6
IDA7Ci0gICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3QqIGR5TGlzdFB0ciA9IGkgPCBkeUxpc3RT
aXplID8gJmR5TGlzdCA6IDA7Ci0gICAgICAgIGNvbnN0IFNWR051bWJlckxpc3QqIHJvdGF0ZUxp
c3RQdHIgPSBpIDwgcm90YXRlTGlzdFNpemUgPyAmcm90YXRlTGlzdCA6IDA7CisgICAgICAgIGNv
bnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHhMaXN0UHRyID0gaSA8IHhMaXN0U2l6ZSA/ICZ4TGlz
dCA6IDA7CisgICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHlMaXN0UHRyID0gaSA8
IHlMaXN0U2l6ZSA/ICZ5TGlzdCA6IDA7CisgICAgICAgIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1
ZXMqIGR4TGlzdFB0ciA9IGkgPCBkeExpc3RTaXplID8gJmR4TGlzdCA6IDA7CisgICAgICAgIGNv
bnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIGR5TGlzdFB0ciA9IGkgPCBkeUxpc3RTaXplID8gJmR5
TGlzdCA6IDA7CisgICAgICAgIGNvbnN0IFNWR051bWJlckxpc3RWYWx1ZXMqIHJvdGF0ZUxpc3RQ
dHIgPSBpIDwgcm90YXRlTGlzdFNpemUgPyAmcm90YXRlTGlzdCA6IDA7CiAgICAgICAgIGlmICgh
eExpc3RQdHIgJiYgIXlMaXN0UHRyICYmICFkeExpc3RQdHIgJiYgIWR5TGlzdFB0ciAmJiAhcm90
YXRlTGlzdFB0cikKICAgICAgICAgICAgIGJyZWFrOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bGxJbk9uZS5jcHAJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsNyBAQAogI2luY2x1ZGUg
IlNWR0xhbmdTcGFjZS5jcHAiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoQ29udGV4dC5jcHAiCiAjaW5j
bHVkZSAiU1ZHTGVuZ3RoTGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdFZhbHVlcy5j
cHAiCiAjaW5jbHVkZSAiU1ZHTGluZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmNwcCIKQEAgLTEyMiw3
ICsxMjMsNyBAQAogI2luY2x1ZGUgIlNWR01hc2tFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdN
ZXRhZGF0YUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3Bw
IgotI2luY2x1ZGUgIlNWR051bWJlckxpc3QuY3BwIgorI2luY2x1ZGUgIlNWR051bWJlckxpc3RW
YWx1ZXMuY3BwIgogI2luY2x1ZGUgIlNWR1BhaW50LmNwcCIKICNpbmNsdWRlICJTVkdQYXJzZXJV
dGlsaXRpZXMuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhCbGVuZGVyLmNwcCIKQEAgLTEzNCwxMiAr
MTM1LDEzIEBACiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuY3BwIgogI2luY2x1ZGUgIlNWR1Bh
dGhTZWdMaXN0QnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3Bw
IgorI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcCIKICNpbmNsdWRlICJTVkdQYXRo
U3RyaW5nQnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAiCiAj
aW5jbHVkZSAiU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZH
UGF0aFV0aWxpdGllcy5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0dGVybkVsZW1lbnQuY3BwIgotI2lu
Y2x1ZGUgIlNWR1BvaW50TGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFsdWVzLmNw
cCIKICNpbmNsdWRlICJTVkdQb2x5RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9seWdvbkVs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR1BvbHlsaW5lRWxlbWVudC5jcHAiCkBAIC0xNTAsNyAr
MTUyLDcgQEAKICNpbmNsdWRlICJTVkdTY3JpcHRFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdT
ZXRFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdTdG9wRWxlbWVudC5jcHAiCi0jaW5jbHVkZSAi
U1ZHU3RyaW5nTGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAiCiAj
aW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdTd2l0Y2hFbGVtZW50
LmNwcCIKICNpbmNsdWRlICJTVkdTeW1ib2xFbGVtZW50LmNwcCIKQEAgLTE2NCw3ICsxNjYsNyBA
QAogI2luY2x1ZGUgIlNWR1RpdGxlRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3Jt
LmNwcCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAiCi0jaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtTGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAi
CiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5jcHAiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJl
bmNlLmNwcCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmdsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmdsZS5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNWR0FuZ2xlIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVl
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdBbmdsZT4gY3JlYXRlKFNWR0FuaW1hdGVk
UHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdBbmds
ZVZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0Fu
Z2xlVmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkp
OwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmdsZShhbmltYXRlZFByb3BlcnR5
LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KIApAQCAtMTM4LDggKzEzNyw4IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHQW5nbGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0
ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0FuZ2xlVmFsdWUmIHZhbHVlKQot
ICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVlPihhbmltYXRlZFByb3Bl
cnR5LCByb2xlLCB2YWx1ZSkKKyAgICBTVkdBbmdsZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmlt
YXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUp
CisgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KCZhbmltYXRlZFBy
b3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJTVkdQYXRoRGF0YS5oIgogI2lu
Y2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgot
I2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0LmNwcAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTGVuZ3RoTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OlNWR0FuaW1hdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhdXRvIGFuaW1hdGVkVHlwZSA9
IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoTGlzdChzdGQ6Om1ha2VfdW5pcXVlPFNWR0xl
bmd0aExpc3Q+KCkpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVMZW5ndGhMaXN0KHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4oKSk7
CiAgICAgYW5pbWF0ZWRUeXBlLT5sZW5ndGhMaXN0KCkucGFyc2Uoc3RyaW5nLCBtX2xlbmd0aE1v
ZGUpOwogICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CkBAIC04MCw5ICs4MCw5IEBAIHZvaWQg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEEKICAgICAgICAgdG9MZW5ndGhMaXN0
W2ldLnNldFZhbHVlKHRvTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21M
ZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpLCBsZW5ndGhDb250ZXh0KTsKIH0KIAot
c3RhdGljIFNWR0xlbmd0aExpc3QgcGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZyhTVkdBbmltYXRp
b25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0YXRp
YyBTVkdMZW5ndGhMaXN0VmFsdWVzIHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmcoU1ZHQW5pbWF0
aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0g
ICAgU1ZHTGVuZ3RoTGlzdCBsZW5ndGhMaXN0OworICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbGVu
Z3RoTGlzdDsKICAgICBsZW5ndGhMaXN0LnBhcnNlKHN0cmluZywgU1ZHTGVuZ3RoVmFsdWU6Omxl
bmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhbmltYXRpb25FbGVtZW50LT5hdHRy
aWJ1dGVOYW1lKCkpKTsKICAgICByZXR1cm4gbGVuZ3RoTGlzdDsKIH0KQEAgLTk4LDEwICs5OCwx
MCBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjCiAgICAgYXV0byYg
YW5pbWF0ZWRMZW5ndGhMaXN0ID0gYW5pbWF0ZWQtPmxlbmd0aExpc3QoKTsKIAogICAgIC8vIEFw
cGx5IENTUyBpbmhlcml0YW5jZSBydWxlcy4KLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVz
dEZvckluaGVyaXRhbmNlPFNWR0xlbmd0aExpc3Q+KHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmcs
IG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBlKCksIGZyb21MZW5ndGhM
aXN0LCBtX2NvbnRleHRFbGVtZW50KTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZv
ckluaGVyaXRhbmNlPFNWR0xlbmd0aExpc3Q+KHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmcsIG1f
YW5pbWF0aW9uRWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlwZSgpLCB0b0xlbmd0aExpc3QsIG1f
Y29udGV4dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJp
dGFuY2U8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4ocGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZywgbV9h
bmltYXRpb25FbGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSwgZnJvbUxlbmd0aExpc3Qs
IG1fY29udGV4dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5o
ZXJpdGFuY2U8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4ocGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZywg
bV9hbmltYXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBlKCksIHRvTGVuZ3RoTGlzdCwg
bV9jb250ZXh0RWxlbWVudCk7CiAKLSAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0
RnJvbVRvTGlzdFZhbHVlczxTVkdMZW5ndGhMaXN0Pihmcm9tTGVuZ3RoTGlzdCwgdG9MZW5ndGhM
aXN0LCBhbmltYXRlZExlbmd0aExpc3QsIHBlcmNlbnRhZ2UpKQorICAgIGlmICghbV9hbmltYXRp
b25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR0xlbmd0aExpc3RWYWx1ZXM+KGZy
b21MZW5ndGhMaXN0LCB0b0xlbmd0aExpc3QsIGFuaW1hdGVkTGVuZ3RoTGlzdCwgcGVyY2VudGFn
ZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGZyb21MZW5ndGhMaXN0U2l6ZSA9
IGZyb21MZW5ndGhMaXN0LnNpemUoKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjCiAKIGZsb2F0IFNWR0FuaW1hdGVkTGVuZ3RoTGlz
dEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KQogewotICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUg
Zm9yIFNWR0xlbmd0aExpc3QgcmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBmb3IgZXZl
cnkgc2luZ2xlIHZhbHVlLgorICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBu
b3QgcG9zc2libGUgZm9yIFNWR0xlbmd0aExpc3RWYWx1ZXMgcmlnaHQgbm93LiBXZSBuZWVkIHRo
ZSBkaXN0YW5jZSBmb3IgZXZlcnkgc2luZ2xlIHZhbHVlLgogICAgIHJldHVybiAtMTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAkocmV2aXNp
b24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNCArMjIsMTUgQEAKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRv
ci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZjxTVkdMZW5ndGhMaXN0PiBTVkdBbmltYXRlZExlbmd0aExpc3Q7Cit1c2luZyBTVkdB
bmltYXRlZExlbmd0aExpc3QgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVu
Z3RoTGlzdFZhbHVlcz47CiAKIC8vIEhlbHBlciBtYWNyb3MgdG8gZGVjbGFyZS9kZWZpbmUgYSBT
VkdBbmltYXRlZExlbmd0aExpc3Qgb2JqZWN0CiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIX0xJU1QoVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVDTEFSRV9BTklNQVRF
RF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBw
ZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJU
WShTVkdBbmltYXRlZExlbmd0aExpc3QsIFNWR0xlbmd0aExpc3RWYWx1ZXMsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNU
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBc
CiBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRMZW5ndGhMaXN0LCBPd25lclR5cGUs
IERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3Ro
TGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVu
Z3RoTGlzdC5pZGwJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZExlbmd0aExpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw0ICsyOSwzIEBACiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0xlbmd0aExpc3QgYmFzZVZhbDsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgU1ZHTGVuZ3RoTGlzdCBhbmltVmFsOwogfTsKLQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDIwODc1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpT
VkdBbmltYXQKIAogc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiB7Ci0gICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51
bWJlckxpc3Qoc3RkOjptYWtlX3VuaXF1ZTxTVkdOdW1iZXJMaXN0PigpKTsKKyAgICBhdXRvIGFu
aW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyTGlzdChzdGQ6Om1ha2Vf
dW5pcXVlPFNWR051bWJlckxpc3RWYWx1ZXM+KCkpOwogICAgIGFuaW1hdGVkVHlwZS0+bnVtYmVy
TGlzdCgpLnBhcnNlKHN0cmluZyk7CiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KQEAgLTY3
LDggKzY3LDggQEAgdm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6YWRkQQogICAg
IEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWROdW1iZXJMaXN0KTsKICAgICBBU1NFUlQo
ZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCi0gICAgY29uc3QgU1ZHTnVtYmVyTGlzdCYg
ZnJvbU51bWJlckxpc3QgPSBmcm9tLT5udW1iZXJMaXN0KCk7Ci0gICAgU1ZHTnVtYmVyTGlzdCYg
dG9OdW1iZXJMaXN0ID0gdG8tPm51bWJlckxpc3QoKTsKKyAgICBjb25zdCBhdXRvJiBmcm9tTnVt
YmVyTGlzdCA9IGZyb20tPm51bWJlckxpc3QoKTsKKyAgICBhdXRvJiB0b051bWJlckxpc3QgPSB0
by0+bnVtYmVyTGlzdCgpOwogCiAgICAgdW5zaWduZWQgZnJvbU51bWJlckxpc3RTaXplID0gZnJv
bU51bWJlckxpc3Quc2l6ZSgpOwogICAgIGlmICghZnJvbU51bWJlckxpc3RTaXplIHx8IGZyb21O
dW1iZXJMaXN0U2l6ZSAhPSB0b051bWJlckxpc3Quc2l6ZSgpKQpAQCAtODIsMTEgKzgyLDExIEBA
IHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGMKIHsKICAgICBBU1NFUlQo
bV9hbmltYXRpb25FbGVtZW50KTsKIAotICAgIGNvbnN0IFNWR051bWJlckxpc3QmIGZyb21OdW1i
ZXJMaXN0ID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRp
b24gPyBhbmltYXRlZC0+bnVtYmVyTGlzdCgpIDogZnJvbS0+bnVtYmVyTGlzdCgpOwotICAgIGNv
bnN0IFNWR051bWJlckxpc3QmIHRvTnVtYmVyTGlzdCA9IHRvLT5udW1iZXJMaXN0KCk7Ci0gICAg
Y29uc3QgU1ZHTnVtYmVyTGlzdCYgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJMaXN0ID0gdG9BdEVu
ZE9mRHVyYXRpb24tPm51bWJlckxpc3QoKTsKLSAgICBTVkdOdW1iZXJMaXN0JiBhbmltYXRlZE51
bWJlckxpc3QgPSBhbmltYXRlZC0+bnVtYmVyTGlzdCgpOwotICAgIGlmICghbV9hbmltYXRpb25F
bGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR051bWJlckxpc3Q+KGZyb21OdW1iZXJM
aXN0LCB0b051bWJlckxpc3QsIGFuaW1hdGVkTnVtYmVyTGlzdCwgcGVyY2VudGFnZSkpCisgICAg
Y29uc3QgYXV0byYgZnJvbU51bWJlckxpc3QgPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlv
bk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5udW1iZXJMaXN0KCkgOiBmcm9tLT5u
dW1iZXJMaXN0KCk7CisgICAgY29uc3QgYXV0byYgdG9OdW1iZXJMaXN0ID0gdG8tPm51bWJlckxp
c3QoKTsKKyAgICBjb25zdCBhdXRvJiB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlckxpc3QgPSB0b0F0
RW5kT2ZEdXJhdGlvbi0+bnVtYmVyTGlzdCgpOworICAgIGF1dG8mIGFuaW1hdGVkTnVtYmVyTGlz
dCA9IGFuaW1hdGVkLT5udW1iZXJMaXN0KCk7CisgICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQt
PmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHTnVtYmVyTGlzdFZhbHVlcz4oZnJvbU51bWJlckxp
c3QsIHRvTnVtYmVyTGlzdCwgYW5pbWF0ZWROdW1iZXJMaXN0LCBwZXJjZW50YWdlKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgZnJvbU51bWJlckxpc3RTaXplID0gZnJvbU51bWJl
ckxpc3Quc2l6ZSgpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJM
aXN0QW5pbWF0b3I6OmNhbGMKIAogZmxvYXQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6
OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
Ly8gRklYTUU6IERpc3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBwb3NzaWJsZSBmb3IgU1ZHTnVt
YmVyTGlzdCByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIGZvciBldmVyeSBzaW5nbGUg
dmFsdWUuCisgICAgLy8gRklYTUU6IERpc3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBwb3NzaWJs
ZSBmb3IgU1ZHTnVtYmVyTGlzdFZhbHVlcyByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNl
IGZvciBldmVyeSBzaW5nbGUgdmFsdWUuCiAgICAgcmV0dXJuIC0xOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCShyZXZpc2lvbiAyMDg3NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDExICsyNiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5n
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdCA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdOdW1iZXJMaXN0PjsKK3VzaW5nIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCA9IFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdOdW1iZXJMaXN0VmFsdWVzPjsKIAogLy8gSGVscGVyIG1h
Y3JvcyB0byBkZWNsYXJlL2RlZmluZSBhIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBvYmplY3QKICNk
ZWZpbmUgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5KSBcCi1ERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWROdW1i
ZXJMaXN0LCBTVkdOdW1iZXJMaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVD
TEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkTnVtYmVyTGlzdCwgU1ZHTnVt
YmVyTGlzdFZhbHVlcywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBE
RUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmlt
YXRlZE51bWJlckxpc3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2
LDkgQEAgdm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6c3RvcEFuaW1WYQogdm9pZCBTVkdB
bmltYXRlZFBhdGhBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHUGF0aEJ5dGVTdHJlYW0q
IGJ5dGVTdHJlYW0pCiB7CiAgICAgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
ZiogcHJvcGVydHkgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxTVkdBbmltYXRl
ZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihhbmltYXRlZFR5cGVzWzBdLnByb3BlcnRpZXNb
MF0uZ2V0KCkpOwotICAgIGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBiYXNlVmFsdWUgPSBwcm9wZXJ0
eS0+Y3VycmVudEJhc2VWYWx1ZSgpOworICAgIGNvbnN0IGF1dG8mIGJhc2VWYWx1ZSA9IHByb3Bl
cnR5LT5jdXJyZW50QmFzZVZhbHVlKCk7CiAKLSAgICBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJv
bVNWR1BhdGhTZWdMaXN0KGJhc2VWYWx1ZSwgKmJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcp
OworICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoYmFz
ZVZhbHVlLCAqYnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZyk7CiAKICAgICBWZWN0b3I8UmVm
UHRyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+PiByZXN1bHQ7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAkocmV2aXNp
b24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVF
bGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IlNWR1BvaW50LmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUG9p
bnRMaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNyArMzQsNyBA
QCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpTVkdBbmltYXRlCiAKIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNvbnN0
cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgYXV0byBhbmltYXRl
ZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBvaW50TGlzdChzdGQ6Om1ha2VfdW5pcXVl
PFNWR1BvaW50TGlzdD4oKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5
cGU6OmNyZWF0ZVBvaW50TGlzdChzdGQ6Om1ha2VfdW5pcXVlPFNWR1BvaW50TGlzdFZhbHVlcz4o
KSk7CiAgICAgcG9pbnRzTGlzdEZyb21TVkdEYXRhKGFuaW1hdGVkVHlwZS0+cG9pbnRMaXN0KCks
IHN0cmluZyk7CiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KQEAgLTY5LDggKzY5LDggQEAg
dm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjphZGRBbgogICAgIEFTU0VSVChmcm9t
LT50eXBlKCkgPT0gQW5pbWF0ZWRQb2ludHMpOwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0g
dG8tPnR5cGUoKSk7CiAKLSAgICBjb25zdCBTVkdQb2ludExpc3QmIGZyb21Qb2ludExpc3QgPSBm
cm9tLT5wb2ludExpc3QoKTsKLSAgICBTVkdQb2ludExpc3QmIHRvUG9pbnRMaXN0ID0gdG8tPnBv
aW50TGlzdCgpOworICAgIGNvbnN0IGF1dG8mIGZyb21Qb2ludExpc3QgPSBmcm9tLT5wb2ludExp
c3QoKTsKKyAgICBhdXRvJiB0b1BvaW50TGlzdCA9IHRvLT5wb2ludExpc3QoKTsKIAogICAgIHVu
c2lnbmVkIGZyb21Qb2ludExpc3RTaXplID0gZnJvbVBvaW50TGlzdC5zaXplKCk7CiAgICAgaWYg
KCFmcm9tUG9pbnRMaXN0U2l6ZSB8fCBmcm9tUG9pbnRMaXN0U2l6ZSAhPSB0b1BvaW50TGlzdC5z
aXplKCkpCkBAIC04NCwxMSArODQsMTEgQEAgdm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1h
dG9yOjpjYWxjdQogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogCi0gICAgY29u
c3QgU1ZHUG9pbnRMaXN0JiBmcm9tUG9pbnRMaXN0ID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmlt
YXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+cG9pbnRMaXN0KCkgOiBmcm9t
LT5wb2ludExpc3QoKTsKLSAgICBjb25zdCBTVkdQb2ludExpc3QmIHRvUG9pbnRMaXN0ID0gdG8t
PnBvaW50TGlzdCgpOwotICAgIGNvbnN0IFNWR1BvaW50TGlzdCYgdG9BdEVuZE9mRHVyYXRpb25Q
b2ludExpc3QgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+cG9pbnRMaXN0KCk7Ci0gICAgU1ZHUG9pbnRM
aXN0JiBhbmltYXRlZFBvaW50TGlzdCA9IGFuaW1hdGVkLT5wb2ludExpc3QoKTsKLSAgICBpZiAo
IW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdQb2ludExpc3Q+
KGZyb21Qb2ludExpc3QsIHRvUG9pbnRMaXN0LCBhbmltYXRlZFBvaW50TGlzdCwgcGVyY2VudGFn
ZSkpCisgICAgY29uc3QgYXV0byYgZnJvbVBvaW50TGlzdCA9IG1fYW5pbWF0aW9uRWxlbWVudC0+
YW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPnBvaW50TGlzdCgpIDog
ZnJvbS0+cG9pbnRMaXN0KCk7CisgICAgY29uc3QgYXV0byYgdG9Qb2ludExpc3QgPSB0by0+cG9p
bnRMaXN0KCk7CisgICAgY29uc3QgYXV0byYgdG9BdEVuZE9mRHVyYXRpb25Qb2ludExpc3QgPSB0
b0F0RW5kT2ZEdXJhdGlvbi0+cG9pbnRMaXN0KCk7CisgICAgYXV0byYgYW5pbWF0ZWRQb2ludExp
c3QgPSBhbmltYXRlZC0+cG9pbnRMaXN0KCk7CisgICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQt
PmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHUG9pbnRMaXN0VmFsdWVzPihmcm9tUG9pbnRMaXN0
LCB0b1BvaW50TGlzdCwgYW5pbWF0ZWRQb2ludExpc3QsIHBlcmNlbnRhZ2UpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICB1bnNpZ25lZCBmcm9tUG9pbnRMaXN0U2l6ZSA9IGZyb21Qb2ludExpc3Qu
c2l6ZSgpOwpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmlt
YXRvcjo6Y2FsY3UKIAogZmxvYXQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKIHsKLSAgICAvLyBGSVhN
RTogRGlzdGFuY2UgY2FsY3VsYXRpb24gaXMgbm90IHBvc3NpYmxlIGZvciBTVkdQb2ludExpc3Qg
cmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBvZiBmb3IgZXZlcnkgc2luZ2xlIHZhbHVl
LgorICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9y
IFNWR1BvaW50TGlzdFZhbHVlcyByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIG9mIGZv
ciBldmVyeSBzaW5nbGUgdmFsdWUuCiAgICAgcmV0dXJuIC0xOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaAkocmV2aXNpb24gMjA4NzU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFNWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+IFNWR0FuaW1hdGVkUG9pbnRM
aXN0OwordXNpbmcgU1ZHQW5pbWF0ZWRQb2ludExpc3QgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaXN0VmFsdWVzPiA7CiAKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1l
bnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3QuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6U1ZHQW5pCiAKIHN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGF1dG8gYW5pbWF0
ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVUcmFuc2Zvcm1MaXN0KHN0ZDo6bWFrZV91
bmlxdWU8U1ZHVHJhbnNmb3JtTGlzdD4oKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdB
bmltYXRlZFR5cGU6OmNyZWF0ZVRyYW5zZm9ybUxpc3Qoc3RkOjptYWtlX3VuaXF1ZTxTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzPigpKTsKICAgICBhbmltYXRlZFR5cGUtPnRyYW5zZm9ybUxpc3QoKS5w
YXJzZShtX3RyYW5zZm9ybVR5cGVTdHJpbmcgKyBzdHJpbmcgKyAnKScpOwogICAgIEFTU0VSVChh
bmltYXRlZFR5cGUtPnRyYW5zZm9ybUxpc3QoKS5zaXplKCkgPD0gMSk7CiAgICAgcmV0dXJuIGFu
aW1hdGVkVHlwZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFuaW1hdG9yOjpjCiAgICAgYXV0byYgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gYW5pbWF0
ZWQtPnRyYW5zZm9ybUxpc3QoKTsKIAogICAgIC8vIFBhc3MgZmFsc2UgdG8gJ3Jlc2l6ZUFuaW1h
dGVkTGlzdElmTmVlZGVkJyBoZXJlLCBhcyB0aGUgc3BlY2lhbCBwb3N0LW11bHRpcGxpY2F0aW9u
IGJlaGF2aW9yIG9mIDxhbmltYXRlVHJhbnNmb3JtPiBuZWVkcyB0byBiZSByZXNwZWN0ZWQgYmVs
b3cuCi0gICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8
U1ZHVHJhbnNmb3JtTGlzdD4oZnJvbVRyYW5zZm9ybUxpc3QsIHRvVHJhbnNmb3JtTGlzdCwgYW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LCBwZXJjZW50YWdlLCBmYWxzZSkpCisgICAgaWYgKCFtX2FuaW1h
dGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cz4oZnJvbVRyYW5zZm9ybUxpc3QsIHRvVHJhbnNmb3JtTGlzdCwgYW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0LCBwZXJjZW50YWdlLCBmYWxzZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5ldmVy
IHJlc2l6ZSB0aGUgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHRvIHRoZSB0b1RyYW5zZm9ybUxpc3Qg
c2l6ZSwgaW5zdGVhZCBlaXRoZXIgY2xlYXIgdGhlIGxpc3Qgb3IgYXBwZW5kIHRvIGl0LgpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAkocmV2
aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNCArMjEsMTUgQEAKIAogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJv
cGVydHlUZWFyT2ZmIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDsKK3VzaW5nIFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdCA9IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZjsK
IAogLy8gSGVscGVyIG1hY3JvcyB0byBkZWNsYXJlL2RlZmluZSBhIFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdCBvYmplY3QKICNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJP
UEVSVFkoU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcywgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfVFJBTlNGT1JN
X0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFRyYW5zZm9ybUxpc3QsIE93
bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
eXBlLmNwcAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVMZW5ndGhMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdMZW5ndGhMaXN0PiBsZW5ndGhMaXN0
KQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVh
dGVMZW5ndGhMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdMZW5ndGhMaXN0VmFsdWVzPiBsZW5ndGhM
aXN0KQogewogICAgIEFTU0VSVChsZW5ndGhMaXN0KTsKICAgICBhdXRvIGFuaW1hdGVkVHlwZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZExlbmd0aExpc3QpOwpA
QCAtMTYyLDcgKzE2Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0Fu
aW0KICAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3Qoc3RkOjp1bmlxdWVf
cHRyPFNWR051bWJlckxpc3Q+IG51bWJlckxpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3Qoc3RkOjp1bmlxdWVfcHRy
PFNWR051bWJlckxpc3RWYWx1ZXM+IG51bWJlckxpc3QpCiB7CiAgICAgQVNTRVJUKG51bWJlckxp
c3QpOwogICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZFR5cGU+KEFuaW1hdGVkTnVtYmVyTGlzdCk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbQogICAgIHJldHVybiBhbmltYXRlZFR5cGU7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6
Y3JlYXRlUG9pbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdQb2ludExpc3Q+IHBvaW50TGlzdCkK
K3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
UG9pbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdQb2ludExpc3RWYWx1ZXM+IHBvaW50TGlzdCkK
IHsKICAgICBBU1NFUlQocG9pbnRMaXN0KTsKICAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZFBvaW50cyk7CkBAIC0yMTgsNyAr
MjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbQogICAgIHJl
dHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3JtTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZH
VHJhbnNmb3JtTGlzdD4gdHJhbnNmb3JtTGlzdCkKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRl
ZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3JtTGlzdChzdGQ6OnVuaXF1ZV9w
dHI8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4gdHJhbnNmb3JtTGlzdCkKIHsKICAgICBBU1NFUlQo
dHJhbnNmb3JtTGlzdCk7CiAgICAgYXV0byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTMgKzIyLDEz
IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5nbGVWYWx1ZS5oIgog
I2luY2x1ZGUgIlNWR0NvbG9yLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1
ZGUgIlNWR0xlbmd0aExpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgot
I2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKLSNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKKyNp
bmNsdWRlICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFs
dWVzLmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiU1ZHUHJvcGVydHlJbmZvLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgorI2lu
Y2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00NywxNiArNDcsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVJbnRlZ2VyKHN0ZDo6dW5pcXVlX3B0cjxpbnQ+KTsKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlSW50ZWdlck9w
dGlvbmFsSW50ZWdlcihzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpwYWlyPGludCwgaW50Pj4pOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoc3Rk
Ojp1bmlxdWVfcHRyPFNWR0xlbmd0aFZhbHVlPik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUxlbmd0aExpc3Qoc3RkOjp1bmlxdWVfcHRyPFNWR0xl
bmd0aExpc3Q+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y3JlYXRlTGVuZ3RoTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4pOwog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXIo
c3RkOjp1bmlxdWVfcHRyPGZsb2F0Pik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IGNyZWF0ZU51bWJlckxpc3Qoc3RkOjp1bmlxdWVfcHRyPFNWR051bWJlckxp
c3Q+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRl
TnVtYmVyTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHTnVtYmVyTGlzdFZhbHVlcz4pOwogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXJPcHRpb25h
bE51bWJlcihzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+KTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUGF0aChzdGQ6OnVu
aXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUG9pbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdQb2lu
dExpc3Q+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3Jl
YXRlUG9pbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdQb2ludExpc3RWYWx1ZXM+KTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUHJlc2VydmVBc3Bl
Y3RSYXRpbyhzdGQ6OnVuaXF1ZV9wdHI8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPik7CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVJlY3Qoc3Rk
Ojp1bmlxdWVfcHRyPEZsb2F0UmVjdD4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBjcmVhdGVTdHJpbmcoc3RkOjp1bmlxdWVfcHRyPFN0cmluZz4pOwotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVUcmFuc2Zvcm1M
aXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdUcmFuc2Zvcm1MaXN0Pik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVRyYW5zZm9ybUxpc3Qoc3RkOjp1bmlx
dWVfcHRyPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0FuaW1WYWwoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICptX2RhdGEubGVuZ3RoOwogICAgIH0KIAotICAgIGNvbnN0
IFNWR0xlbmd0aExpc3QmIGxlbmd0aExpc3QoKSBjb25zdAorICAgIGNvbnN0IFNWR0xlbmd0aExp
c3RWYWx1ZXMmIGxlbmd0aExpc3QoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBBbmltYXRlZExlbmd0aExpc3QpOwogICAgICAgICByZXR1cm4gKm1fZGF0YS5sZW5ndGhM
aXN0OwpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX2RhdGEu
bnVtYmVyOwogICAgIH0KIAotICAgIGNvbnN0IFNWR051bWJlckxpc3QmIG51bWJlckxpc3QoKSBj
b25zdAorICAgIGNvbnN0IFNWR051bWJlckxpc3RWYWx1ZXMmIG51bWJlckxpc3QoKSBjb25zdAog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlckxpc3QpOwogICAg
ICAgICByZXR1cm4gKm1fZGF0YS5udW1iZXJMaXN0OwpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fZGF0YS5wYXRoOwogICAgIH0KIAotICAgIGNvbnN0IFNWR1Bv
aW50TGlzdCYgcG9pbnRMaXN0KCkgY29uc3QKKyAgICBjb25zdCBTVkdQb2ludExpc3RWYWx1ZXMm
IHBvaW50TGlzdCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1h
dGVkUG9pbnRzKTsKICAgICAgICAgcmV0dXJuICptX2RhdGEucG9pbnRMaXN0OwpAQCAtMTU4LDcg
KzE1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX2RhdGEuc3RyaW5nOwogICAgIH0K
IAotICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3QmIHRyYW5zZm9ybUxpc3QoKSBjb25zdAorICAg
IGNvbnN0IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHRyYW5zZm9ybUxpc3QoKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwogICAg
ICAgICByZXR1cm4gKm1fZGF0YS50cmFuc2Zvcm1MaXN0OwpAQCAtMjA3LDcgKzIwNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICptX2RhdGEubGVuZ3RoOwogICAgIH0KIAotICAgIFNWR0xl
bmd0aExpc3QmIGxlbmd0aExpc3QoKQorICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMmIGxlbmd0aExp
c3QoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZExlbmd0aExpc3Qp
OwogICAgICAgICByZXR1cm4gKm1fZGF0YS5sZW5ndGhMaXN0OwpAQCAtMjE5LDcgKzIxOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX2RhdGEubnVtYmVyOwogICAgIH0KIAotICAgIFNW
R051bWJlckxpc3QmIG51bWJlckxpc3QoKQorICAgIFNWR051bWJlckxpc3RWYWx1ZXMmIG51bWJl
ckxpc3QoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlckxp
c3QpOwogICAgICAgICByZXR1cm4gKm1fZGF0YS5udW1iZXJMaXN0OwpAQCAtMjM3LDcgKzIzNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZGF0YS5wYXRoOwogICAgIH0KIAotICAgIFNW
R1BvaW50TGlzdCYgcG9pbnRMaXN0KCkKKyAgICBTVkdQb2ludExpc3RWYWx1ZXMmIHBvaW50TGlz
dCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUG9pbnRzKTsKICAg
ICAgICAgcmV0dXJuICptX2RhdGEucG9pbnRMaXN0OwpAQCAtMjYxLDcgKzI2MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICptX2RhdGEuc3RyaW5nOwogICAgIH0KIAotICAgIFNWR1RyYW5z
Zm9ybUxpc3QmIHRyYW5zZm9ybUxpc3QoKQorICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHRy
YW5zZm9ybUxpc3QoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFRy
YW5zZm9ybUxpc3QpOwogICAgICAgICByZXR1cm4gKm1fZGF0YS50cmFuc2Zvcm1MaXN0OwpAQCAt
Mjg2LDE2ICsyODYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgaW50KiBpbnRlZ2VyOwogICAgICAg
ICBzdGQ6OnBhaXI8aW50LCBpbnQ+KiBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOwogICAgICAgICBT
VkdMZW5ndGhWYWx1ZSogbGVuZ3RoOwotICAgICAgICBTVkdMZW5ndGhMaXN0KiBsZW5ndGhMaXN0
OworICAgICAgICBTVkdMZW5ndGhMaXN0VmFsdWVzKiBsZW5ndGhMaXN0OwogICAgICAgICBmbG9h
dCogbnVtYmVyOwotICAgICAgICBTVkdOdW1iZXJMaXN0KiBudW1iZXJMaXN0OworICAgICAgICBT
VkdOdW1iZXJMaXN0VmFsdWVzKiBudW1iZXJMaXN0OwogICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQs
IGZsb2F0PiogbnVtYmVyT3B0aW9uYWxOdW1iZXI7CiAgICAgICAgIFNWR1BhdGhCeXRlU3RyZWFt
KiBwYXRoOwogICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUqIHByZXNlcnZlQXNw
ZWN0UmF0aW87Ci0gICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRMaXN0OworICAgICAgICBTVkdQ
b2ludExpc3RWYWx1ZXMqIHBvaW50TGlzdDsKICAgICAgICAgRmxvYXRSZWN0KiByZWN0OwogICAg
ICAgICBTdHJpbmcqIHN0cmluZzsKLSAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCogdHJhbnNmb3Jt
TGlzdDsKKyAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyogdHJhbnNmb3JtTGlzdDsKICAg
ICB9IG1fZGF0YTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTY4NSw0ICs2ODYsMTkgQEAgdm9pZCBT
VkdBbmltYXRpb25FbGVtZW50OjpjaGVja0ludmFsaWRDUwogICAgIG1faGFzSW52YWxpZENTU0F0
dHJpYnV0ZVR5cGUgPSB0YXJnZXQgJiYgaGFzVmFsaWRBdHRyaWJ1dGVOYW1lKCkgJiYgYXR0cmli
dXRlVHlwZSgpID09IEF0dHJpYnV0ZVR5cGU6OkNTUyAmJiAhaXNUYXJnZXRBdHRyaWJ1dGVDU1NQ
cm9wZXJ0eSh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUoKSk7CiB9CiAKK1JlZjxTVkdTdHJpbmdMaXN0
PiBTVkdBbmltYXRpb25FbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVzKCkKK3sKKyAgICByZXR1cm4g
U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlz
dD4gU1ZHQW5pbWF0aW9uRWxlbWVudDo6cmVxdWlyZWRFeHRlbnNpb25zKCkKK3sgCisgICAgcmV0
dXJuIFNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMoKnRoaXMpOworfQorCitSZWY8U1ZHU3Ry
aW5nTGlzdD4gU1ZHQW5pbWF0aW9uRWxlbWVudDo6c3lzdGVtTGFuZ3VhZ2UoKQoreworICAgIHJl
dHVybiBTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHJldmlzaW9uIDIwODc1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0Niw2ICsxNDYsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgYW5pbWF0ZWROdW1iZXIg
PSBudW1iZXI7CiAgICAgfQogCisgICAgLy8gU1ZHVGVzdHMKKyAgICBSZWY8U1ZHU3RyaW5nTGlz
dD4gcmVxdWlyZWRGZWF0dXJlcygpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4
dGVuc2lvbnMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVtTGFuZ3VhZ2UoKTsKKwog
cHJvdGVjdGVkOgogICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKQEAgLTIwOCw5ICsyMTMsOSBAQCBwcml2YXRlOgogICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIC8vIFNWR1Rlc3RzCi0gICAgdm9pZCBzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnModGhpcyk7IH0KLSAgICB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSBvdmVy
cmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CisgICAg
dm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKnRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgp
IGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOyB9CiAK
ICAgICB2b2lkIHNldENhbGNNb2RlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4NzU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAK
ICNpbmNsdWRlICJTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgorI2luY2x1ZGUgIlNWR051bWJl
ckxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODIsNyArODIsNyBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRhYmxl
VmFsdWVzQXR0cikgewotICAgICAgICBTVkdOdW1iZXJMaXN0IG5ld0xpc3Q7CisgICAgICAgIFNW
R051bWJlckxpc3RWYWx1ZXMgbmV3TGlzdDsKICAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSk7
CiAgICAgICAgIGRldGFjaEFuaW1hdGVkVGFibGVWYWx1ZXNMaXN0V3JhcHBlcnMobmV3TGlzdC5z
aXplKCkpOwogICAgICAgICBzZXRUYWJsZVZhbHVlc0Jhc2VWYWx1ZShuZXdMaXN0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZH
U3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIApAQCAtMTIyLDQgKzEyMywxOSBAQCB2b2lkIFNWR0N1cnNvckVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0CiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTChocmVmKCkpKTsKIH0KIAorUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR0N1
cnNvckVsZW1lbnQ6OnJlcXVpcmVkRmVhdHVyZXMoKQoreworICAgIHJldHVybiBTVkdUZXN0czo6
cmVxdWlyZWRGZWF0dXJlcygqdGhpcyk7Cit9CisKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdDdXJz
b3JFbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMoKQoreyAKKyAgICByZXR1cm4gU1ZHVGVzdHM6
OnJlcXVpcmVkRXh0ZW5zaW9ucygqdGhpcyk7Cit9CisKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdD
dXJzb3JFbGVtZW50OjpzeXN0ZW1MYW5ndWFnZSgpCit7CisgICAgcmV0dXJuIFNWR1Rlc3RzOjpz
eXN0ZW1MYW5ndWFnZSgqdGhpcyk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1
cnNvckVsZW1lbnQuaAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlOwogCi1jbGFzcyBTVkdD
dXJzb3JFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UgeworY2xhc3MgU1ZHQ3Vy
c29yRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJsaWMgU1ZHVGVzdHMsIHB1
YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR0N1cnNvckVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApAQCAtNDQsNiArNDEsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkQ2xpZW50KENTU0N1cnNvckltYWdlVmFsdWUmKTsKICAgICB2b2lkIHJl
bW92ZUNsaWVudChDU1NDdXJzb3JJbWFnZVZhbHVlJik7CiAKKyAgICAvLyBTVkdUZXN0cworICAg
IFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEZlYXR1cmVzKCk7CisgICAgUmVmPFNWR1N0cmlu
Z0xpc3Q+IHJlcXVpcmVkRXh0ZW5zaW9ucygpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiBzeXN0
ZW1MYW5ndWFnZSgpOworCiBwcml2YXRlOgogICAgIFNWR0N1cnNvckVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTY1LDkgKzY3LDkgQEAgcHJpdmF0ZToKICAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBTVkdUZXN0cwotICAg
IHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkg
ZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQorICAg
IHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucygqdGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
KSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCp0aGlzKTsgfQog
CiAgICAgSGFzaFNldDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4gbV9jbGllbnRzOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2
aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpCiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnZhbHVlc0F0dHIpIHsKLSAgICAgICAgU1ZHTnVtYmVyTGlzdCBuZXdMaXN0OworICAgICAg
ICBTVkdOdW1iZXJMaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFs
dWUpOwogICAgICAgICBkZXRhY2hBbmltYXRlZFZhbHVlc0xpc3RXcmFwcGVycyhuZXdMaXN0LnNp
emUoKSk7CiAgICAgICAgIHNldFZhbHVlc0Jhc2VWYWx1ZShuZXdMaXN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkocmV2
aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIklu
dFNpemUuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKKyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFy
c2VyVXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEyNCw3ICsxMjUsNyBA
QCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0CiAgICAgfQogCiAgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIpIHsKLSAgICAgICAgU1ZHTnVt
YmVyTGlzdCBuZXdMaXN0OworICAgICAgICBTVkdOdW1iZXJMaXN0VmFsdWVzIG5ld0xpc3Q7CiAg
ICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUpOwogICAgICAgICBkZXRhY2hBbmltYXRlZEtlcm5l
bE1hdHJpeExpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAgIHNldEtlcm5lbE1h
dHJpeEJhc2VWYWx1ZShuZXdMaXN0KTsKQEAgLTI0Nyw3ICsyNDgsNyBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4CiAgICAgLy8gU3BlYyBzYXlzIG9yZGVyIG11c3Qg
YmUgPiAwLiBCYWlsIGlmIGl0IGlzIG5vdC4KICAgICBpZiAob3JkZXJYVmFsdWUgPCAxIHx8IG9y
ZGVyWVZhbHVlIDwgMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgU1ZHTnVtYmVyTGlz
dCYga2VybmVsTWF0cml4ID0gdGhpcy0+a2VybmVsTWF0cml4KCk7CisgICAgU1ZHTnVtYmVyTGlz
dFZhbHVlcyYga2VybmVsTWF0cml4ID0gdGhpcy0+a2VybmVsTWF0cml4KCk7CiAgICAgaW50IGtl
cm5lbE1hdHJpeFNpemUgPSBrZXJuZWxNYXRyaXguc2l6ZSgpOwogICAgIC8vIFRoZSBzcGVjIHNh
eXMgdGhpcyBpcyBhIHJlcXVpcmVtZW50LCBhbmQgc2hvdWxkIGJhaWwgb3V0IGlmIGZhaWxzCiAg
ICAgaWYgKG9yZGVyWFZhbHVlICogb3JkZXJZVmFsdWUgIT0ga2VybmVsTWF0cml4U2l6ZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0
b3BFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgorI2luY2x1ZGUgIlNW
R1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCiAj
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKQEAgLTg0
LDcgKzg0LDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogICAg
IH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpIHsK
LSAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCBuZXdMaXN0OworICAgICAgICBTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUpOwogICAgICAg
ICBkZXRhY2hBbmltYXRlZEdyYWRpZW50VHJhbnNmb3JtTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6
ZSgpKTsKICAgICAgICAgc2V0R3JhZGllbnRUcmFuc2Zvcm1CYXNlVmFsdWUobmV3TGlzdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAkocmV2aXNpb24g
MjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNWR1BhdGhEYXRhLmgiCiAjaW5jbHVkZSAiU1ZHUmVjdC5oIgorI2luY2x1ZGUgIlNW
R1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTIxLDcgKzEyMiw3IEBAIGJvb2wgU1ZHR3JhcGhpY3NFbGVtZW50
Ojppc1N1cHBvcnRlZEF0dHIKIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIFNW
R1RyYW5zZm9ybUxpc3QgbmV3TGlzdDsKKyAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyBu
ZXdMaXN0OwogICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRU
cmFuc2Zvcm1CYXNlVmFsdWUobmV3TGlzdCk7CkBAIC0xODksNCArMTkwLDE5IEBAIHZvaWQgU1ZH
R3JhcGhpY3NFbGVtZW50Ojp0b0NsaXBQYXRoKFBhdGgKICAgICBwYXRoLnRyYW5zZm9ybShhbmlt
YXRlZExvY2FsVHJhbnNmb3JtKCkpOwogfQogCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHR3JhcGhp
Y3NFbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVzKCkKK3sKKyAgICByZXR1cm4gU1ZHVGVzdHM6OnJl
cXVpcmVkRmVhdHVyZXMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHR3JhcGhp
Y3NFbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMoKQoreyAKKyAgICByZXR1cm4gU1ZHVGVzdHM6
OnJlcXVpcmVkRXh0ZW5zaW9ucygqdGhpcyk7Cit9CisKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdH
cmFwaGljc0VsZW1lbnQ6OnN5c3RlbUxhbmd1YWdlKCkKK3sKKyAgICByZXR1cm4gU1ZHVGVzdHM6
OnN5c3RlbUxhbmd1YWdlKCp0aGlzKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFwaGljc0VsZW1lbnQuaAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSwxMSBA
QCBwdWJsaWM6CiAKICAgICBzaXplX3QgYXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gc2l6ZW9mKCp0aGlzKTsgfQogCisgICAgLy8gU1ZHVGVzdHMKKyAgICBS
ZWY8U1ZHU3RyaW5nTGlzdD4gcmVxdWlyZWRGZWF0dXJlcygpOworICAgIFJlZjxTVkdTdHJpbmdM
aXN0PiByZXF1aXJlZEV4dGVuc2lvbnMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVt
TGFuZ3VhZ2UoKTsKKwogcHJvdGVjdGVkOgogICAgIFNWR0dyYXBoaWNzRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApAQCAtNzksOSArODQsOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKIAogICAgIC8vIFNWR1Rlc3RzCi0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhp
cyk7IH0KLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGUg
eyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KLSAgICB2
b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMoKnRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIGZp
bmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCp0aGlzKTsgfQor
ICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5
bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOyB9CiAKICAgICAvLyBVc2VkIGJ5IDxhbmlt
YXRlTW90aW9uPgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxl
bWVudGFsVHJhbnNmb3JtOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAkocmV2aXNpb24gMjA4
NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw5ICs0OCw4IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEMgPSBMZW5n
dGhUeXBlUEMKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxTVkdMZW5ndGg+IGNyZWF0ZShTVkdB
bmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwg
U1ZHTGVuZ3RoVmFsdWUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUo
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJv
bGUsIFNWR0xlbmd0aFZhbHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRl
ZFByb3BlcnR5KTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoKGFuaW1h
dGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQogCkBAIC0xNTUsOCArMTU0LDggQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdMZW5ndGgoU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0aFZh
bHVlJiB2YWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoVmFsdWU+
KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIFNWR0xlbmd0aChTVkdBbmltYXRl
ZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTGVu
Z3RoVmFsdWUmIHZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdMZW5ndGhW
YWx1ZT4oJmFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQogICAgIHsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKHJldmlzaW9uIDIwODc1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgsNTIgKzE4LDMgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCi0KLSNpbmNsdWRl
ICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTVkdMZW5ndGhMaXN0OjpwYXJzZShj
b25zdCBTdHJpbmcmIHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUpCi17Ci0gICAgY2xlYXIoKTsK
LQotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh2YWx1ZSkudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29udmVydGVk
Q2hhcmFjdGVyczsKLSAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgdmFsdWUubGVuZ3RoKCk7
Ci0gICAgd2hpbGUgKHB0ciA8IGVuZCkgewotICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBw
dHI7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKnB0ciAhPSAnLCcgJiYgIWlzU1ZHU3Bh
Y2UoKnB0cikpCi0gICAgICAgICAgICBwdHIrKzsKLSAgICAgICAgaWYgKHB0ciA9PSBzdGFydCkK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aChtb2Rl
KTsKLSAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nKHN0YXJ0LCBwdHIgLSBzdGFydCk7Ci0gICAg
ICAgIGlmICh2YWx1ZVN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmIChsZW5ndGguc2V0VmFsdWVBc1N0cmluZyh2YWx1ZVN0cmluZykuaGFzRXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFwcGVuZChsZW5ndGgpOwotICAgICAg
ICBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCk7Ci0gICAgfQotfQot
Ci1TdHJpbmcgU1ZHTGVuZ3RoTGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChp
ID4gMCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoYXQoaSkudmFsdWVBc1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0
LmgJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDI1ICsyMCwyNyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0xl
bmd0aExpc3RWYWx1ZXMuaCIKKyNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHTGVuZ3RoOwotCi1jbGFzcyBTVkdMZW5n
dGhMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4geworY2xhc3MgU1ZH
TGVuZ3RoTGlzdCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aExpc3RW
YWx1ZXM+IHsKIHB1YmxpYzoKLSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNW
R0xlbmd0aE1vZGUpOwotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhMaXN0PiB7Ci0gICAg
dXNpbmcgTGlzdEl0ZW1UeXBlID0gU1ZHTGVuZ3RoVmFsdWU7Ci0gICAgdXNpbmcgTGlzdEl0ZW1U
ZWFyT2ZmID0gU1ZHTGVuZ3RoOworICAgIHVzaW5nIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZiA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdMZW5ndGhMaXN0VmFsdWVzPjsK
KyAgICB1c2luZyBMaXN0V3JhcHBlckNhY2hlID0gQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
OjpMaXN0V3JhcHBlckNhY2hlOwogCi0gICAgc3RhdGljIFNWR0xlbmd0aExpc3QgaW5pdGlhbFZh
bHVlKCkgeyByZXR1cm4gIHsgfTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3Qg
U1ZHTGVuZ3RoTGlzdCYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KKyAg
ICBzdGF0aWMgUmVmPFNWR0xlbmd0aExpc3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdMZW5ndGhM
aXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoTGlzdChhbmltYXRlZFByb3BlcnR5
LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJzKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNWR0xl
bmd0aExpc3QoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBT
VkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTGVuZ3RoTGlzdFZhbHVlcyYgdmFsdWVzLCBMaXN0V3Jh
cHBlckNhY2hlJiB3cmFwcGVycykKKyAgICAgICAgOiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNW
R0xlbmd0aExpc3RWYWx1ZXM+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBl
cnMpCisgICAgeworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5pZGwJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotaW50ZXJmYWNlIFNWR0xlbmd0aExpc3Qg
eworWworICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCitdIGludGVyZmFjZSBTVkdMZW5ndGhMaXN0
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZkl0ZW1zOwog
CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMDg3MDUpCShmcm9t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcDoyMDg3MDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgorCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgU1ZHTGVuZ3RoTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwg
U1ZHTGVuZ3RoTW9kZSBtb2RlKQoreworICAgIGNsZWFyKCk7CisKKyAgICBhdXRvIHVwY29udmVy
dGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcodmFsdWUpLnVwY29udmVydGVkQ2hhcmFjdGVycygp
OworICAgIGNvbnN0IFVDaGFyKiBwdHIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgY29u
c3QgVUNoYXIqIGVuZCA9IHB0ciArIHZhbHVlLmxlbmd0aCgpOworICAgIHdoaWxlIChwdHIgPCBl
bmQpIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gcHRyOworICAgICAgICB3aGlsZSAo
cHRyIDwgZW5kICYmICpwdHIgIT0gJywnICYmICFpc1NWR1NwYWNlKCpwdHIpKQorICAgICAgICAg
ICAgcHRyKys7CisgICAgICAgIGlmIChwdHIgPT0gc3RhcnQpCisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGgobW9kZSk7CisgICAgICAgIFN0cmluZyB2
YWx1ZVN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpOworICAgICAgICBpZiAodmFsdWVTdHJpbmcu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobGVuZ3RoLnNldFZh
bHVlQXNTdHJpbmcodmFsdWVTdHJpbmcpLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBhcHBlbmQobGVuZ3RoKTsKKyAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQpOworICAgIH0KK30KKworU3RyaW5nIFNWR0xlbmd0aExp
c3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KworICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoaSA+IDApCisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOworCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0KGkpLnZhbHVl
QXNTdHJpbmcoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAko
cmV2aXNpb24gMjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxNCArMTksMTQgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1ZGUgIlNWR0xl
bmd0aExpc3RWYWx1ZXMuaCIKIAogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIFNWR0xlbmd0aExpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0
aE1vZGUgbW9kZSkKK3ZvaWQgU1ZHTGVuZ3RoTGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQogewogICAgIGNsZWFyKCk7CiAKQEAgLTUxLDcg
KzUxLDcgQEAgdm9pZCBTVkdMZW5ndGhMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIAogICAgIH0K
IH0KIAotU3RyaW5nIFNWR0xlbmd0aExpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAorU3RyaW5n
IFNWR0xlbmd0aExpc3RWYWx1ZXM6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExp
c3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
ZW5ndGhMaXN0Lmg6MjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RW
YWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHTGVuZ3RoVmFsdWUuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U1ZHTGVuZ3RoOworCitjbGFzcyBTVkdMZW5ndGhMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxT
VkdMZW5ndGhWYWx1ZT4geworcHVibGljOgorICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2
YWx1ZSwgU1ZHTGVuZ3RoTW9kZSk7CisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3Q+
IHsKKyAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBTVkdMZW5ndGhWYWx1ZTsKKyAgICB1c2luZyBM
aXN0SXRlbVRlYXJPZmYgPSBTVkdMZW5ndGg7CisKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoTGlzdCBp
bml0aWFsVmFsdWUoKSB7IHJldHVybiAgeyB9OyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBTVkdMZW5ndGhMaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmco
KTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxOSAr
MjYsMjEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHTGVuZ3RoOworY2xhc3Mg
U1ZHTGVuZ3RoTGlzdDsKIAotY2xhc3MgU1ZHTGVuZ3RoTGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0
b3I8U1ZHTGVuZ3RoVmFsdWU+IHsKK2NsYXNzIFNWR0xlbmd0aExpc3RWYWx1ZXMgZmluYWwgOiBw
dWJsaWMgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZShj
b25zdCBTdHJpbmcmIHZhbHVlLCBTVkdMZW5ndGhNb2RlKTsKICAgICBTdHJpbmcgdmFsdWVBc1N0
cmluZygpIGNvbnN0OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHTGVuZ3RoTGlzdD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
TGVuZ3RoTGlzdFZhbHVlcz4gewogICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR0xlbmd0aFZh
bHVlOwogICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR0xlbmd0aDsKKyAgICB1c2luZyBM
aXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHTGVuZ3RoTGlzdDsKIAotICAgIHN0YXRpYyBTVkdMZW5n
dGhMaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuICB7IH07IH0KLSAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aExpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVB
c1N0cmluZygpOyB9CisgICAgc3RhdGljIFNWR0xlbmd0aExpc3RWYWx1ZXMgaW5pdGlhbFZhbHVl
KCkgeyByZXR1cm4gIHsgfTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZH
TGVuZ3RoTGlzdFZhbHVlcyYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR1VuaXRU
eXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgorI2luY2x1ZGUgIlNWR1N0
cmluZ0xpc3QuaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKICNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0xNjIsNCArMTYz
LDE5IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxlbWVudDoKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CiAKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdNYXNrRWxlbWVudDo6cmVxdWly
ZWRGZWF0dXJlcygpCit7CisgICAgcmV0dXJuIFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKCp0
aGlzKTsKK30KKworUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR01hc2tFbGVtZW50OjpyZXF1aXJlZEV4
dGVuc2lvbnMoKQoreyAKKyAgICByZXR1cm4gU1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9ucygq
dGhpcyk7Cit9CisKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdNYXNrRWxlbWVudDo6c3lzdGVtTGFu
Z3VhZ2UoKQoreworICAgIHJldHVybiBTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOwor
fQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gMjA4
NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDEyICszMCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNW
R01hc2tFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgeworY2xhc3MgU1ZHTWFza0Vs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCwgcHVibGljIFNWR1Rlc3RzLCBwdWJsaWMg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxT
VkdNYXNrRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
CisgICAgLy8gU1ZHVGVzdHMKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gcmVxdWlyZWRGZWF0dXJl
cygpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4dGVuc2lvbnMoKTsKKyAgICBS
ZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVtTGFuZ3VhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBTVkdN
YXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApAQCAtNjIsOSAr
NjUsOSBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAog
ICAgIC8vIFNWR1Rlc3RzCi0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBm
aW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KLSAg
ICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgZmluYWwgeyBTVkdUZXN0czo6
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KLSAgICB2b2lkIHN5bmNocm9u
aXplU3lzdGVtTGFuZ3VhZ2UoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKHRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBm
aW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKnRoaXMpOyB9Cisg
ICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIGZpbmFsIHsgU1ZHVGVzdHM6
OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSgpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UoKnRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hdHJpeC5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdNYXRyaXggOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2Zm
PFNWR01hdHJpeFZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdNYXRyaXg+IGNy
ZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgU1ZHTWF0cml4VmFsdWUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHTWF0cml4
PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVy
dHlSb2xlIHJvbGUsIFNWR01hdHJpeFZhbHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChhbmltYXRlZFByb3BlcnR5KTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTWF0
cml4KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQogCkBAIC0yNzgsOCAr
Mjc3LDggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFNWR01hdHJpeChTVkdB
bmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwg
U1ZHTWF0cml4VmFsdWUmIHZhbHVlKQotICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdN
YXRyaXhWYWx1ZT4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCisgICAgU1ZHTWF0cml4
KFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSBy
b2xlLCBTVkdNYXRyaXhWYWx1ZSYgdmFsdWUpCisgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2Zm
PFNWR01hdHJpeFZhbHVlPigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAgICAgewog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXIuaAkocmV2aXNpb24gMjA4NzU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICsz
Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHTnVtYmVyIDogcHVibGljIFNW
R1Byb3BlcnR5VGVhck9mZjxmbG9hdD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHTnVt
YmVyPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJv
cGVydHlSb2xlIHJvbGUsIGZsb2F0JiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR051bWJlcj4g
Y3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5
Um9sZSByb2xlLCBmbG9hdCYgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQ
cm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR051bWJlcihhbmltYXRl
ZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KIApAQCAtNzIsOCArNzEsOCBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR051bWJlcihTVkdBbmltYXRlZFByb3BlcnR5
KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgZmxvYXQmIHZhbHVlKQot
ICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxmbG9hdD4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9s
ZSwgdmFsdWUpCisgICAgU1ZHTnVtYmVyKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJv
cGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBmbG9hdCYgdmFsdWUpCisgICAgICAgIDogU1ZH
UHJvcGVydHlUZWFyT2ZmPGZsb2F0PigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAg
ICAgewogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkocmV2
aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuY3BwCShu
b25leGlzdGVudCkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgotCi0jaW5jbHVkZSAi
U1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgU1ZHTnVtYmVyTGlzdDo6cGFyc2UoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBjbGVhcigpOwotCi0gICAgZmxvYXQgbnVtYmVyID0g
MDsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcodmFsdWUpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSB1cGNvbnZlcnRl
ZENoYXJhY3RlcnM7Ci0gICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIHZhbHVlLmxlbmd0aCgp
OwotCi0gICAgLy8gVGhlIHNwZWMgc3RyYW5nZWx5IGRvZXNuJ3QgYWxsb3cgbGVhZGluZyB3aGl0
ZXNwYWNlLiAgV2UgbWlnaHQgY2hvb3NlIHRvIHZpb2xhdGUgdGhhdCBpbnRlbnRpb25hbGx5LiAo
c2VjdGlvbiA0LjEpCi0gICAgd2hpbGUgKHB0ciA8IGVuZCkgewotICAgICAgICBpZiAoIXBhcnNl
TnVtYmVyKHB0ciwgZW5kLCBudW1iZXIpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBh
cHBlbmQobnVtYmVyKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBTVkdOdW1iZXJMaXN0Ojp2YWx1ZUFz
U3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0KLSAgICB1bnNp
Z25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgaWYgKGkgPiAwKQotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihhdChpKSk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotfQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuY3BwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCShyZXZp
c2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMCwyNSArMjAsMjcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
ICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdMaXN0UHJv
cGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdFZhbHVlcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR051bWJlcjsKLQotY2xhc3MgU1ZHTnVtYmVyTGlz
dCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8ZmxvYXQ+IHsKK2NsYXNzIFNWR051bWJlckxpc3QgOiBw
dWJsaWMgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdOdW1iZXJMaXN0VmFsdWVzPiB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKLSAgICBTdHJpbmcgdmFsdWVBc1N0
cmluZygpIGNvbnN0OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHTnVtYmVyTGlzdD4gewotICAgIHN0YXRpYyBTVkdOdW1iZXJMaXN0IGluaXRpYWxWYWx1ZSgp
IHsgcmV0dXJuIFNWR051bWJlckxpc3QoKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
Y29uc3QgU1ZHTnVtYmVyTGlzdCYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7
IH0KKyAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTnVtYmVyTGlzdFZhbHVlcz47CisgICAgdXNpbmcgTGlzdFdy
YXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNo
ZTsKIAotICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IGZsb2F0OwotICAgIHVzaW5nIExpc3RJdGVt
VGVhck9mZiA9IFNWR051bWJlcjsKKyAgICBzdGF0aWMgUmVmPFNWR051bWJlckxpc3Q+IGNyZWF0
ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3Bl
cnR5Um9sZSByb2xlLCBTVkdOdW1iZXJMaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2Fj
aGUmIHdyYXBwZXJzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTnVt
YmVyTGlzdChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJzKSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFNWR051bWJlckxpc3QoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTnVtYmVyTGlz
dFZhbHVlcyYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICAgICAgOiBT
VkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR051bWJlckxpc3RWYWx1ZXM+KGFuaW1hdGVkUHJvcGVy
dHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpCisgICAgeworICAgIH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFs
dWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZh
bHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNCkJKGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR051
bWJlckxpc3QuY3BwOjIwODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0
VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0Lmgi
CisKKyNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTVkdOdW1iZXJM
aXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGNsZWFyKCk7CisKKyAgICBm
bG9hdCBudW1iZXIgPSAwOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5n
Vmlldyh2YWx1ZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIHB0
ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsg
dmFsdWUubGVuZ3RoKCk7CisKKyAgICAvLyBUaGUgc3BlYyBzdHJhbmdlbHkgZG9lc24ndCBhbGxv
dyBsZWFkaW5nIHdoaXRlc3BhY2UuICBXZSBtaWdodCBjaG9vc2UgdG8gdmlvbGF0ZSB0aGF0IGlu
dGVudGlvbmFsbHkuIChzZWN0aW9uIDQuMSkKKyAgICB3aGlsZSAocHRyIDwgZW5kKSB7CisgICAg
ICAgIGlmICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIG51bWJlcikpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGFwcGVuZChudW1iZXIpOworICAgIH0KK30KKworU3RyaW5nIFNWR051bWJl
ckxpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKKworICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoaSA+IDApCisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnICcpOworCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGF0
KGkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuY3BwCShyZXZpc2lv
biAyMDg3MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5LDE0ICsxOSwxNCBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCisjaW5jbHVkZSAiU1ZHTnVtYmVyTGlz
dFZhbHVlcy5oIgogCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
U1ZHTnVtYmVyTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHTnVtYmVy
TGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBjbGVhcigpOwog
CkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgU1ZHTnVtYmVyTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5n
JiAKICAgICB9CiB9CiAKLVN0cmluZyBTVkdOdW1iZXJMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29u
c3QKK1N0cmluZyBTVkdOdW1iZXJMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdOdW1iZXJMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R051bWJlckxpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjA4NzA1KQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTnVtYmVyTGlzdC5oOjIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdO
dW1iZXJMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJh
aXRzLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNWR051bWJlcjsKKworY2xhc3MgU1ZHTnVtYmVyTGlzdCBmaW5hbCA6IHB1YmxpYyBW
ZWN0b3I8ZmxvYXQ+IHsKK3B1YmxpYzoKKyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwor
ICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdOdW1iZXJMaXN0PiB7CisgICAgc3RhdGljIFNWR051bWJl
ckxpc3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHTnVtYmVyTGlzdCgpOyB9CisgICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdOdW1iZXJMaXN0JiB0eXBlKSB7IHJldHVybiB0
eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorCisgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gZmxvYXQ7
CisgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHTnVtYmVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVl
cy5oCShyZXZpc2lvbiAyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlz
dFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxOSArMjYsMjEgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU1ZHTnVtYmVyOworY2xhc3MgU1ZHTnVtYmVyTGlzdDsKIAotY2xh
c3MgU1ZHTnVtYmVyTGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8ZmxvYXQ+IHsKK2NsYXNzIFNW
R051bWJlckxpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPGZsb2F0PiB7CiBwdWJsaWM6
CiAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgdmFsdWVBc1N0cmlu
ZygpIGNvbnN0OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
TnVtYmVyTGlzdD4gewotICAgIHN0YXRpYyBTVkdOdW1iZXJMaXN0IGluaXRpYWxWYWx1ZSgpIHsg
cmV0dXJuIFNWR051bWJlckxpc3QoKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29u
c3QgU1ZHTnVtYmVyTGlzdCYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0K
K3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR051bWJlckxpc3RWYWx1ZXM+
IHsKKyAgICBzdGF0aWMgU1ZHTnVtYmVyTGlzdFZhbHVlcyBpbml0aWFsVmFsdWUoKSB7IHJldHVy
biB7IH07IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR051bWJlckxpc3RW
YWx1ZXMmIGxpc3QpIHsgcmV0dXJuIGxpc3QudmFsdWVBc1N0cmluZygpOyB9CiAKICAgICB1c2lu
ZyBMaXN0SXRlbVR5cGUgPSBmbG9hdDsKICAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdO
dW1iZXI7CisgICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR051bWJlckxpc3Q7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGFyc2VyVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGFyc2VyVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5j
bHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFsdWVzLmgiCiAj
aW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgpAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgcGFyc2VSZWN0
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGbG8KICAgICByZXR1cm4gdmFsaWQ7CiB9CiAKLWJvb2wg
cG9pbnRzTGlzdEZyb21TVkdEYXRhKFNWR1BvaW50TGlzdCYgcG9pbnRzTGlzdCwgY29uc3QgU3Ry
aW5nJiBwb2ludHMpCitib29sIHBvaW50c0xpc3RGcm9tU1ZHRGF0YShTVkdQb2ludExpc3RWYWx1
ZXMmIHBvaW50c0xpc3QsIGNvbnN0IFN0cmluZyYgcG9pbnRzKQogewogICAgIGlmIChwb2ludHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFyc2VyVXRpbGl0aWVzLmgJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFJl
Y3Q7Ci1jbGFzcyBTVkdQb2ludExpc3Q7CitjbGFzcyBTVkdQb2ludExpc3RWYWx1ZXM7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogYm9vbCBwYXJzZVNWR051bWJlcihDaGFy
YWN0ZXJUeXBlKiBwdHIsIHNpemVfdCBsZW5ndGgsIGRvdWJsZSYgbnVtYmVyKTsKQEAgLTgwLDcg
KzgwLDcgQEAgaW5saW5lIGJvb2wgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbQogICAgIHJl
dHVybiBwdHIgPCBlbmQ7CiB9CiAKLWJvb2wgcG9pbnRzTGlzdEZyb21TVkdEYXRhKFNWR1BvaW50
TGlzdCYgcG9pbnRzTGlzdCwgY29uc3QgU3RyaW5nJiBwb2ludHMpOworYm9vbCBwb2ludHNMaXN0
RnJvbVNWR0RhdGEoU1ZHUG9pbnRMaXN0VmFsdWVzJiwgY29uc3QgU3RyaW5nJiBwb2ludHMpOwog
VmVjdG9yPFN0cmluZz4gcGFyc2VEZWxpbWl0ZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBpbnB1dCwg
Y29uc3QgY2hhciBzZXBlcmF0b3IpOwogYm9vbCBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYgaW5wdXQsIFVuaWNvZGVSYW5nZXMmLCBIYXNoU2V0PFN0cmluZz4mIHN0cmlu
Z0xpc3QpOwogYm9vbCBwYXJzZUdseXBoTmFtZShjb25zdCBTdHJpbmcmIGlucHV0LCBIYXNoU2V0
PFN0cmluZz4mIHZhbHVlcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJTVkdQYXRo
U2VnTGluZXRvVmVydGljYWxBYnMuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGluZXRvVmVydGlj
YWxSZWwuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgotI2luY2x1ZGUgIlNWR1BhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ01vdmV0b0Ficy5o
IgogI2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG9SZWwuaCIKICNpbmNsdWRlICJTVkdQYXRoVXRp
bGl0aWVzLmgiCkBAIC0yNTMsOCArMjUyLDggQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZAogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkQXR0cikgewog
ICAgICAgICBpZiAobV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSAmJiAhU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZj4odGhpcywgZFByb3BlcnR5SW5mbygpKS0+aXNBbmltYXRp
bmcoKSkgewotICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpc3QgbmV3TGlzdChQYXRoU2VnVW5hbHRl
cmVkUm9sZSk7Ci0gICAgICAgICAgICBidWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0o
bV9wYXRoQnl0ZVN0cmVhbSwgKnRoaXMsIG5ld0xpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAg
ICAgICAgICAgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMgbmV3TGlzdChQYXRoU2VnVW5hbHRlcmVkUm9s
ZSk7CisgICAgICAgICAgICBidWlsZFNWR1BhdGhTZWdMaXN0VmFsdWVzRnJvbUJ5dGVTdHJlYW0o
bV9wYXRoQnl0ZVN0cmVhbSwgKnRoaXMsIG5ld0xpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAg
ICAgICAgICAgbV9wYXRoU2VnTGlzdC52YWx1ZSA9IG5ld0xpc3Q7CiAgICAgICAgIH0KIApAQCAt
MzE1LDEwICszMTQsOSBAQCBSZWY8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHUGF0aEVsZW1lbnQ6
CiAgICAgICAgIHJldHVybiAqcHJvcGVydHk7CiAKICAgICBpZiAob3duZXJUeXBlLm1fcGF0aFNl
Z0xpc3QudmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBidWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5
dGVTdHJlYW0ob3duZXJUeXBlLm1fcGF0aEJ5dGVTdHJlYW0sIG93bmVyVHlwZSwgb3duZXJUeXBl
Lm1fcGF0aFNlZ0xpc3QudmFsdWUsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAgICBidWlsZFNW
R1BhdGhTZWdMaXN0VmFsdWVzRnJvbUJ5dGVTdHJlYW0ob3duZXJUeXBlLm1fcGF0aEJ5dGVTdHJl
YW0sIG93bmVyVHlwZSwgb3duZXJUeXBlLm1fcGF0aFNlZ0xpc3QudmFsdWUsIFVuYWx0ZXJlZFBh
cnNpbmcpOwogCi0gICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRl
V3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZiwgU1ZHUGF0aFNlZ0xpc3Q+Ci0gICAgICAgICgmb3duZXJUeXBlLCBkUHJvcGVydHlJbmZv
KCksIG93bmVyVHlwZS5tX3BhdGhTZWdMaXN0LnZhbHVlKTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmlt
YXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQYXRoU2VnTGlzdFZhbHVlcz4oJm93
bmVyVHlwZSwgZFByb3BlcnR5SW5mbygpLCBvd25lclR5cGUubV9wYXRoU2VnTGlzdC52YWx1ZSk7
CiB9CiAKIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRChTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCkKQEAgLTMzOSwyNiArMzM3LDI2IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OmFu
aW1hdGVkUHJvcGVydHlXaWwKICAgICBtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplID0g
ZmFsc2U7CiB9CiAKLVJlZlB0cjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gU1ZHUGF0
aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KCkKK1JlZjxTVkdQYXRoU2VnTGlzdD4gU1ZHUGF0aEVsZW1l
bnQ6OnBhdGhTZWdMaXN0KCkKIHsKICAgICBtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXpl
ID0gdHJ1ZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYqPihzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZj4obG9va3VwT3JDcmVhdGVEV3JhcHBlcih0aGlzKSktPmJhc2VWYWwoKS5nZXQo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdM
aXN0UHJvcGVydHlUZWFyT2ZmPihsb29rdXBPckNyZWF0ZURXcmFwcGVyKHRoaXMpKS0+YmFzZVZh
bCgpOwogfQogCi1SZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IFNWR1BhdGhF
bGVtZW50Ojpub3JtYWxpemVkUGF0aFNlZ0xpc3QoKQorUmVmUHRyPFNWR1BhdGhTZWdMaXN0PiBT
VkdQYXRoRWxlbWVudDo6bm9ybWFsaXplZFBhdGhTZWdMaXN0KCkKIHsKICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEyIC0gSW1wbGVtZW50
IG5vcm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1SZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IFNWR1BhdGhFbGVtZW50Ojph
bmltYXRlZFBhdGhTZWdMaXN0KCkKK1JlZjxTVkdQYXRoU2VnTGlzdD4gU1ZHUGF0aEVsZW1lbnQ6
OmFuaW1hdGVkUGF0aFNlZ0xpc3QoKQogewogICAgIG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hy
b25pemUgPSB0cnVlOwogICAgIG1faXNBbmltVmFsT2JzZXJ2ZWQgPSB0cnVlOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZio+KHN0YXRpY19yZWZl
cmVuY2VfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihsb29rdXBP
ckNyZWF0ZURXcmFwcGVyKHRoaXMpKS0+YW5pbVZhbCgpLmdldCgpKTsKKyAgICByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+
KGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodGhpcykpLT5hbmltVmFsKCk7CiB9CiAKLVJlZlB0cjxT
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gU1ZHUGF0aEVsZW1lbnQ6OmFuaW1hdGVkTm9y
bWFsaXplZFBhdGhTZWdMaXN0KCkKK1JlZlB0cjxTVkdQYXRoU2VnTGlzdD4gU1ZHUGF0aEVsZW1l
bnQ6OmFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0KCkKIHsKICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEyIC0gSW1wbGVtZW50IG5v
cm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAgIHJldHVybiBudWxscHRyOwpAQCAtMzgz
LDcgKzM4MSw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZCgKICAg
ICAgICAgICAgIEFTU0VSVCghbV9wYXRoU2VnTGlzdC52YWx1ZS5pc0VtcHR5KCkpOwogICAgICAg
ICAgICAgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0
LnZhbHVlLmxhc3QoKS5jb3B5UmVmKCksIG1fcGF0aEJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNp
bmcpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1G
cm9tU1ZHUGF0aFNlZ0xpc3QobV9wYXRoU2VnTGlzdC52YWx1ZSwgbV9wYXRoQnl0ZVN0cmVhbSwg
VW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAgICBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJv
bVNWR1BhdGhTZWdMaXN0VmFsdWVzKG1fcGF0aFNlZ0xpc3QudmFsdWUsIG1fcGF0aEJ5dGVTdHJl
YW0sIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhdGhTZWdV
bmRlZmluZWRSb2xlOgogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuaAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJT
VkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1BhdGhCeXRlU3RyZWFtLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoU2VnTGlzdFZhbHVlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ5
LDcgKzQ5LDcgQEAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczsKIGNsYXNz
IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw7CiBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY1Ntb290aEFiczsKIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21v
b3RoUmVsOwotY2xhc3MgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY7CitjbGFzcyBTVkdQ
YXRoU2VnTGlzdDsKIGNsYXNzIFNWR1BvaW50OwogCiBjbGFzcyBTVkdQYXRoRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBTVkdHcmFwaGljc0VsZW1lbnQsCkBAIC04MiwxMCArODIsMTAgQEAgcHVibGlj
OgogICAgIFJlZjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4gY3JlYXRlU1ZH
UGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0
aFNlZ1JvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CiAKICAgICAvLyBVc2VkIGluIHRoZSBi
aW5kaW5ncyBvbmx5LgotICAgIFJlZlB0cjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4g
cGF0aFNlZ0xpc3QoKTsKLSAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+
IGFuaW1hdGVkUGF0aFNlZ0xpc3QoKTsKLSAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmY+IG5vcm1hbGl6ZWRQYXRoU2VnTGlzdCgpOwotICAgIFJlZlB0cjxTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZj4gYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QoKTsKKyAg
ICBSZWY8U1ZHUGF0aFNlZ0xpc3Q+IHBhdGhTZWdMaXN0KCk7CisgICAgUmVmPFNWR1BhdGhTZWdM
aXN0PiBhbmltYXRlZFBhdGhTZWdMaXN0KCk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdMaXN0PiBu
b3JtYWxpemVkUGF0aFNlZ0xpc3QoKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IGFuaW1h
dGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0KCk7CiAKICAgICBjb25zdCBTVkdQYXRoQnl0ZVN0cmVh
bSYgcGF0aEJ5dGVTdHJlYW0oKSBjb25zdDsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6
CiAKIHByaXZhdGU6CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0gbV9wYXRoQnl0ZVN0cmVhbTsKLSAg
ICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdQYXRoU2VnTGlz
dD4gbV9wYXRoU2VnTGlzdDsKKyAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQ
cm9wZXJ0eTxTVkdQYXRoU2VnTGlzdFZhbHVlcz4gbV9wYXRoU2VnTGlzdDsKICAgICBXZWFrUHRy
RmFjdG9yeTxTVkdQYXRoRWxlbWVudD4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBib29sIG1faXNB
bmltVmFsT2JzZXJ2ZWQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
Y3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNCBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjMsMjMgKzIwLDExMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCiAKKyNpbmNs
dWRlICJTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1Bh
dGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnV2l0aENvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgU1ZHUGF0aFNlZ0xpc3Q6OnZhbHVlQXNTdHJpbmco
KSBjb25zdAordm9pZCBTVkdQYXRoU2VnTGlzdDo6Y2xlYXJDb250ZXh0QW5kUm9sZXMoKQogewot
ICAgIFN0cmluZyBwYXRoU3RyaW5nOwotICAgIGJ1aWxkU3RyaW5nRnJvbVNWR1BhdGhTZWdMaXN0
KCp0aGlzLCBwYXRoU3RyaW5nLCBVbmFsdGVyZWRQYXJzaW5nKTsKLSAgICByZXR1cm4gcGF0aFN0
cmluZzsKKyAgICBBU1NFUlQobV92YWx1ZXMpOworICAgIGZvciAoYXV0byYgaXRlbSA6ICptX3Zh
bHVlcykgeworICAgICAgICBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihpdGVt
LmdldCgpKS0+c2V0Q29udGV4dEFuZFJvbGUobnVsbHB0ciwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUp
OworICAgIH0KIH0KIAotdm9pZCBTVkdQYXRoU2VnTGlzdDo6Y29tbWl0Q2hhbmdlKFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uIGxpc3RNb2RpZmljYXRpb24pCitF
eGNlcHRpb25Pcjx2b2lkPiBTVkdQYXRoU2VnTGlzdDo6Y2xlYXIoKQogeworICAgIEFTU0VSVCht
X3ZhbHVlcyk7CisgICAgaWYgKG1fdmFsdWVzLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBjbGVhckNvbnRleHRBbmRSb2xlcygpOworICAgIHJldHVybiBCYXNlOjpjbGVh
clZhbHVlcygpOworfQorCitFeGNlcHRpb25PcjxTVkdQYXRoU2VnTGlzdDo6UHRyTGlzdEl0ZW1U
eXBlPiBTVkdQYXRoU2VnTGlzdDo6Z2V0SXRlbSh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICByZXR1
cm4gQmFzZTo6Z2V0SXRlbVZhbHVlcyhpbmRleCk7Cit9CisKK0V4Y2VwdGlvbk9yPFNWR1BhdGhT
ZWdMaXN0OjpQdHJMaXN0SXRlbVR5cGU+IFNWR1BhdGhTZWdMaXN0OjpyZXBsYWNlSXRlbShQdHJM
aXN0SXRlbVR5cGUgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8gTm90IHNwZWNp
ZmllZCwgYnV0IEZGL09wZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBqdXN0IHNhbmUuCisg
ICAgaWYgKCFuZXdJdGVtKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0aW9u
OjpTVkdfV1JPTkdfVFlQRV9FUlIgfTsKKworICAgIGlmIChpbmRleCA8IG1fdmFsdWVzLT5zaXpl
KCkpIHsKKyAgICAgICAgTGlzdEl0ZW1UeXBlIHJlcGxhY2VkSXRlbSA9IG1fdmFsdWVzLT5hdChp
bmRleCk7CisgICAgICAgIEFTU0VSVChyZXBsYWNlZEl0ZW0pOworICAgICAgICBzdGF0aWNfY2Fz
dDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihyZXBsYWNlZEl0ZW0uZ2V0KCkpLT5zZXRDb250ZXh0
QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgfQorCisgICAgcmV0
dXJuIEJhc2U6OnJlcGxhY2VJdGVtVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsKK30KKworRXhjZXB0
aW9uT3I8U1ZHUGF0aFNlZ0xpc3Q6OlB0ckxpc3RJdGVtVHlwZT4gU1ZHUGF0aFNlZ0xpc3Q6OnJl
bW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCit7CisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpyZW1v
dmVJdGVtVmFsdWVzKGluZGV4KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gcmVtb3ZlZEl0ZW0gPSByZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCk7CisgICAgaWYgKHJlbW92ZWRJdGVtKQorICAgICAgICBzdGF0aWNfY2Fz
dDxTVkdQYXRoU2VnV2l0aENvbnRleHQmPigqcmVtb3ZlZEl0ZW0pLnNldENvbnRleHRBbmRSb2xl
KG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZW1v
dmVkSXRlbSk7Cit9CisKK1NWR1BhdGhFbGVtZW50KiBTVkdQYXRoU2VnTGlzdDo6Y29udGV4dEVs
ZW1lbnQoKSBjb25zdAoreworICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gbV9hbmlt
YXRlZFByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgpOwogICAgIEFTU0VSVChjb250ZXh0RWxlbWVu
dCk7Ci0gICAgZG93bmNhc3Q8U1ZHUGF0aEVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KS0+cGF0aFNl
Z0xpc3RDaGFuZ2VkKG1fcm9sZSwgbGlzdE1vZGlmaWNhdGlvbik7CisgICAgcmV0dXJuIGRvd25j
YXN0PFNWR1BhdGhFbGVtZW50Pihjb250ZXh0RWxlbWVudCk7Cit9CisKK2Jvb2wgU1ZHUGF0aFNl
Z0xpc3Q6OnByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiBu
ZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhUb01vZGlmeSkKK3sKKyAgICBTVkdQYXRoU2VnV2l0aENv
bnRleHQqIG5ld0l0ZW1XaXRoQ29udGV4dCA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29u
dGV4dCo+KG5ld0l0ZW0uZ2V0KCkpOworICAgIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBh
bmltYXRlZFByb3BlcnR5T2ZJdGVtID0gbmV3SXRlbVdpdGhDb250ZXh0LT5hbmltYXRlZFByb3Bl
cnR5KCk7CisKKyAgICAvLyBBbHRlciB0aGUgcm9sZSwgYWZ0ZXIgY2FsbGluZyBhbmltYXRlZFBy
b3BlcnR5KCksIGFzIHRoYXQgbWF5IGluZmx1ZW5jZSB0aGUgcmV0dXJuZWQgYW5pbWF0ZWQgcHJv
cGVydHkuCisgICAgbmV3SXRlbVdpdGhDb250ZXh0LT5zZXRDb250ZXh0QW5kUm9sZShjb250ZXh0
RWxlbWVudCgpLCBtX3BhdGhTZWdSb2xlKTsKKworICAgIGlmICghYW5pbWF0ZWRQcm9wZXJ0eU9m
SXRlbSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBuZXdJdGVtIGJlbG9uZ3MgdG8g
YSBTVkdQYXRoRWxlbWVudCwgYnV0IGl0cyBhc3NvY2lhdGVkIFNWR0FuaW1hdGVkUHJvcGVydHkg
aXMgbm90IGFuIGFuaW1hdGVkIGxpc3QgdGVhciBvZmYuCisgICAgLy8gKGZvciBleGFtcGxlOiAi
cGF0aEVsZW1lbnQucGF0aFNlZ0xpc3QuYXBwZW5kSXRlbShwYXRoRWxlbWVudC5jcmVhdGVTVkdQ
YXRoU2VnQ2xvc2VwYXRoKCkpIikKKyAgICBpZiAoIWFuaW1hdGVkUHJvcGVydHlPZkl0ZW0tPmlz
QW5pbWF0ZWRMaXN0VGVhck9mZigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFNw
ZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJvbSBp
dHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3QuCisg
ICAgLy8gJ25ld0l0ZW0nIGlzIGFscmVhZHkgbGl2aW5nIGluIGFub3RoZXIgbGlzdC4gSWYgaXQn
cyBub3Qgb3VyIGxpc3QsIHN5bmNocm9uaXplIHRoZSBvdGhlciBsaXN0cyB3cmFwcGVycyBhZnRl
ciB0aGUgcmVtb3ZhbC4KKyAgICBib29sIGxpdmVzSW5PdGhlckxpc3QgPSBhbmltYXRlZFByb3Bl
cnR5T2ZJdGVtICE9IG1fYW5pbWF0ZWRQcm9wZXJ0eTsKKyAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gcHJvcGVydHlUZWFyT2ZmID0gc3RhdGljX3BvaW50
ZXJfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihhbmltYXRlZFBy
b3BlcnR5T2ZJdGVtKTsKKyAgICBpbnQgaW5kZXhUb1JlbW92ZSA9IHByb3BlcnR5VGVhck9mZi0+
ZmluZEl0ZW0obmV3SXRlbS5nZXQoKSk7CisgICAgQVNTRVJUKGluZGV4VG9SZW1vdmUgIT0gLTEp
OworCisgICAgLy8gRG8gbm90IHJlbW92ZSBuZXdJdGVtIGlmIGFscmVhZHkgaW4gdGhpcyBsaXN0
IGF0IHRoZSB0YXJnZXQgaW5kZXguCisgICAgaWYgKCFsaXZlc0luT3RoZXJMaXN0ICYmIGluZGV4
VG9Nb2RpZnkgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4VG9SZW1vdmUpID09ICppbmRl
eFRvTW9kaWZ5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwcm9wZXJ0eVRlYXJPZmYt
PnJlbW92ZUl0ZW1Gcm9tTGlzdChpbmRleFRvUmVtb3ZlLCBsaXZlc0luT3RoZXJMaXN0KTsKKwor
ICAgIGlmICghaW5kZXhUb01vZGlmeSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJ
ZiB0aGUgaXRlbSBsaXZlZCBpbiBvdXIgbGlzdCwgYWRqdXN0IHRoZSBpbnNlcnRpb24gaW5kZXgu
CisgICAgaWYgKCFsaXZlc0luT3RoZXJMaXN0KSB7CisgICAgICAgIHVuc2lnbmVkJiBpbmRleCA9
ICppbmRleFRvTW9kaWZ5OworICAgICAgICAvLyBTcGVjOiBJZiB0aGUgaXRlbSBpcyBhbHJlYWR5
IGluIHRoaXMgbGlzdCwgbm90ZSB0aGF0IHRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byAocmVwbGFj
ZXxpbnNlcnQgYmVmb3JlKSBpcyBiZWZvcmUgdGhlIHJlbW92YWwgb2YgdGhlIGl0ZW0uCisgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhUb1JlbW92ZSkgPCBpbmRleCkKKyAg
ICAgICAgICAgIC0taW5kZXg7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksNDAgKzE5
LDE0MyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eS5oIgot
I2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KyNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJT
VkdQYXRoU2VnTGlzdFZhbHVlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNW
R0VsZW1lbnQ7CitjbGFzcyBTVkdQYXRoRWxlbWVudDsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ci1jbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7Ci0KLWNsYXNzIFNWR1BhdGhTZWdMaXN0IDogcHVi
bGljIFZlY3RvcjxSZWZQdHI8U1ZHUGF0aFNlZz4+IHsKK2NsYXNzIFNWR1BhdGhTZWdMaXN0IGZp
bmFsIDogcHVibGljIFNWR0xpc3RQcm9wZXJ0eTxTVkdQYXRoU2VnTGlzdFZhbHVlcz4gewogcHVi
bGljOgotICAgIGV4cGxpY2l0IFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhTZWdSb2xlIHJvbGUpCi0g
ICAgICAgIDogbV9yb2xlKHJvbGUpCisgICAgdXNpbmcgQmFzZSA9IFNWR0xpc3RQcm9wZXJ0eTxT
VkdQYXRoU2VnTGlzdFZhbHVlcz47CisgICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0VmFsdWVz
PjsKKyAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQYXRoU2Vn
TGlzdFZhbHVlcz46Okxpc3RJdGVtVHlwZTsKKyAgICB1c2luZyBQdHJMaXN0SXRlbVR5cGUgPSBS
ZWZQdHI8U1ZHUGF0aFNlZz47CisKKyAgICBzdGF0aWMgUmVmPFNWR1BhdGhTZWdMaXN0PiBjcmVh
dGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9w
ZXJ0eVJvbGUgcm9sZSwgU1ZHUGF0aFNlZ1JvbGUgcGF0aFNlZ1JvbGUsIFNWR1BhdGhTZWdMaXN0
VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGF0aFNlZ0xpc3QoYW5pbWF0ZWRQcm9wZXJ0eSwg
cm9sZSwgcGF0aFNlZ1JvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgUmVmPFNWR1BhdGhTZWdMaXN0PiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZH
UGF0aFNlZ0xpc3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUs
IHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisKKyAgICBpbnQgZmluZEl0ZW0oY29uc3QgTGlz
dEl0ZW1UeXBlJiBpdGVtKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsK
KworICAgICAgICB1bnNpZ25lZCBzaXplID0gbV92YWx1ZXMtPnNpemUoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpdGVtID09
IG1fdmFsdWVzLT5hdChpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUl0ZW1Gcm9tTGlz
dChzaXplX3QgaXRlbUluZGV4LCBib29sIHNob3VsZFN5bmNocm9uaXplV3JhcHBlcnMpCiAgICAg
eworICAgICAgICBBU1NFUlQobV92YWx1ZXMpOworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpdGVtSW5kZXggPCBtX3ZhbHVlcy0+c2l6ZSgpKTsKKworICAgICAgICBt
X3ZhbHVlcy0+cmVtb3ZlKGl0ZW1JbmRleCk7CisKKyAgICAgICAgaWYgKHNob3VsZFN5bmNocm9u
aXplV3JhcHBlcnMpCisgICAgICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICAv
LyBTVkdMaXN0IEFQSQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCk7CisKKyAgICBFeGNl
cHRpb25PcjxQdHJMaXN0SXRlbVR5cGU+IGluaXRpYWxpemUoUHRyTGlzdEl0ZW1UeXBlIG5ld0l0
ZW0pCisgICAgeworICAgICAgICAvLyBOb3Qgc3BlY2lmaWVkLCBidXQgRkYvT3BlcmEgZG8gaXQg
dGhpcyB3YXksIGFuZCBpdCdzIGp1c3Qgc2FuZS4KKyAgICAgICAgaWYgKCFuZXdJdGVtKQorICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNWR0V4Y2VwdGlvbjo6U1ZHX1dST05HX1RZUEVf
RVJSIH07CisKKyAgICAgICAgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKKyAgICAgICAgcmV0dXJu
IEJhc2U6OmluaXRpYWxpemVWYWx1ZXMobmV3SXRlbSk7CisgICAgfQorCisgICAgRXhjZXB0aW9u
T3I8UHRyTGlzdEl0ZW1UeXBlPiBnZXRJdGVtKHVuc2lnbmVkIGluZGV4KTsKKworICAgIEV4Y2Vw
dGlvbk9yPFB0ckxpc3RJdGVtVHlwZT4gaW5zZXJ0SXRlbUJlZm9yZShQdHJMaXN0SXRlbVR5cGUg
bmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICAvLyBOb3Qgc3BlY2lmaWVk
LCBidXQgRkYvT3BlcmEgZG8gaXQgdGhpcyB3YXksIGFuZCBpdCdzIGp1c3Qgc2FuZS4KKyAgICAg
ICAgaWYgKCFuZXdJdGVtKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNWR0V4Y2Vw
dGlvbjo6U1ZHX1dST05HX1RZUEVfRVJSIH07CisKKyAgICAgICAgcmV0dXJuIEJhc2U6Omluc2Vy
dEl0ZW1CZWZvcmVWYWx1ZXMobmV3SXRlbSwgaW5kZXgpOwogICAgIH0KIAotICAgIFN0cmluZyB2
YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UHRyTGlzdEl0ZW1UeXBlPiBy
ZXBsYWNlSXRlbShQdHJMaXN0SXRlbVR5cGUsIHVuc2lnbmVkIGluZGV4KTsKIAotICAgIC8vIE9u
bHkgdXNlZCBieSBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi4KLSAgICB2b2lkIGNvbW1p
dENoYW5nZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgTGlzdE1vZGlmaWNhdGlvbik7Cisg
ICAgRXhjZXB0aW9uT3I8UHRyTGlzdEl0ZW1UeXBlPiByZW1vdmVJdGVtKHVuc2lnbmVkIGluZGV4
KTsKKworICAgIEV4Y2VwdGlvbk9yPFB0ckxpc3RJdGVtVHlwZT4gYXBwZW5kSXRlbShQdHJMaXN0
SXRlbVR5cGUgbmV3SXRlbSkKKyAgICB7CisgICAgICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1dCBG
Ri9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgorICAgICAgICBpZiAo
IW5ld0l0ZW0pCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0aW9uOjpT
VkdfV1JPTkdfVFlQRV9FUlIgfTsKKworICAgICAgICByZXR1cm4gQmFzZTo6YXBwZW5kSXRlbVZh
bHVlcyhuZXdJdGVtKTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHUGF0aFNlZ1JvbGUgbV9y
b2xlOwotfTsKKyAgICBTVkdQYXRoU2VnTGlzdChBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQYXRoU2VnUm9sZSBw
YXRoU2VnUm9sZSwgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNo
ZSYgd3JhcHBlcnMpCisgICAgICAgIDogU1ZHTGlzdFByb3BlcnR5PFNWR1BhdGhTZWdMaXN0VmFs
dWVzPihyb2xlLCB2YWx1ZXMsICZ3cmFwcGVycykKKyAgICAgICAgLCBtX2FuaW1hdGVkUHJvcGVy
dHkoJmFuaW1hdGVkUHJvcGVydHkpCisgICAgICAgICwgbV9wYXRoU2VnUm9sZShwYXRoU2VnUm9s
ZSkKKyAgICB7CisgICAgfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdQYXRoU2VnTGlzdD4gewotICAgIHN0YXRpYyBTVkdQYXRoU2VnTGlzdCBpbml0aWFsVmFsdWUo
KSB7IHJldHVybiBTVkdQYXRoU2VnTGlzdChQYXRoU2VnVW5kZWZpbmVkUm9sZSk7IH0KKyAgICB2
aXJ0dWFsIH5TVkdQYXRoU2VnTGlzdCgpCisgICAgeworICAgICAgICBpZiAobV9hbmltYXRlZFBy
b3BlcnR5KQorICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5LT5wcm9wZXJ0eVdpbGxCZURl
bGV0ZWQoKnRoaXMpOworICAgIH0KKworICAgIFNWR1BhdGhFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCgpIGNvbnN0OwogCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gUmVmUHRyPFNWR1BhdGhTZWc+
OwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxSZWZQdHI8
U1ZHUGF0aFNlZz4+OworICAgIHZvaWQgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKKworICAgIHVz
aW5nIEJhc2U6Om1fcm9sZTsKKworICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICBpZiAobV9yb2xlID09IEFuaW1WYWxSb2xlKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHkgJiYgbV9hbmltYXRlZFBy
b3BlcnR5LT5pc1JlYWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkgZmluYWwKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7CisgICAgICAgIG1fdmFsdWVzLT5jb21taXRD
aGFuZ2UoKm1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y29udGV4dEVsZW1lbnQoKSwgTGlzdE1vZGlmaWNh
dGlvblVua25vd24pOworICAgIH0KKworICAgIHZvaWQgY29tbWl0Q2hhbmdlKExpc3RNb2RpZmlj
YXRpb24gbGlzdE1vZGlmaWNhdGlvbikgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Zh
bHVlcyk7CisgICAgICAgIG1fdmFsdWVzLT5jb21taXRDaGFuZ2UoKm1fYW5pbWF0ZWRQcm9wZXJ0
eS0+Y29udGV4dEVsZW1lbnQoKSwgbGlzdE1vZGlmaWNhdGlvbik7CisgICAgfQorCisgICAgYm9v
bCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVZhbHVlKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRl
bSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkpIGZpbmFsOworICAgIGJvb2wgcHJvY2Vzc0luY29t
aW5nTGlzdEl0ZW1XcmFwcGVyKFJlZjxMaXN0SXRlbVRlYXJPZmY+JiwgdW5zaWduZWQqKSBmaW5h
bAorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8QW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmPiBtX2FuaW1hdGVkUHJvcGVydHk7CisgICAgU1ZHUGF0aFNlZ1JvbGUgbV9wYXRoU2Vn
Um9sZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsMTMgKzQyLDEzIEBACiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpbmV0b1JlbC5oIgog
I2luY2x1ZGUgIlNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicy5oIgogI2luY2x1ZGUgIlNWR1Bh
dGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCisj
aW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92
ZXRvQWJzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
KFNWR1BhdGhFbGVtZW50JiBwYXRoRWxlbWVudCwgU1ZHUGF0aFNlZ0xpc3QmIHBhdGhTZWdMaXN0
LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpTVkdQYXRoU2Vn
TGlzdEJ1aWxkZXIoU1ZHUGF0aEVsZW1lbnQmIHBhdGhFbGVtZW50LCBTVkdQYXRoU2VnTGlzdFZh
bHVlcyYgcGF0aFNlZ0xpc3QsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiAgICAgOiBtX3BhdGhFbGVt
ZW50KHBhdGhFbGVtZW50KQogICAgICwgbV9wYXRoU2VnTGlzdChwYXRoU2VnTGlzdCkKICAgICAs
IG1fcGF0aFNlZ1JvbGUocm9sZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Z0xpc3RCdWlsZGVyLmgJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
CiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR1BhdGhDb25zdW1lci5oIgot
I2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RWYWx1
ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFNW
R1BhdGhFbGVtZW50OwogCiBjbGFzcyBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIgZmluYWwgOiBwdWJs
aWMgU1ZHUGF0aENvbnN1bWVyIHsKIHB1YmxpYzoKLSAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIo
U1ZHUGF0aEVsZW1lbnQmLCBTVkdQYXRoU2VnTGlzdCYsIFNWR1BhdGhTZWdSb2xlKTsKKyAgICBT
VkdQYXRoU2VnTGlzdEJ1aWxkZXIoU1ZHUGF0aEVsZW1lbnQmLCBTVkdQYXRoU2VnTGlzdFZhbHVl
cyYsIFNWR1BhdGhTZWdSb2xlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluY3JlbWVudFBhdGhT
ZWdtZW50Q291bnQoKSBmaW5hbCB7IH0KQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3
ZWVwRmxhZywgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgZmluYWw7CiAK
ICAgICBTVkdQYXRoRWxlbWVudCYgbV9wYXRoRWxlbWVudDsKLSAgICBTVkdQYXRoU2VnTGlzdCYg
bV9wYXRoU2VnTGlzdDsKKyAgICBTVkdQYXRoU2VnTGlzdFZhbHVlcyYgbV9wYXRoU2VnTGlzdDsK
ICAgICBTVkdQYXRoU2VnUm9sZSBtX3BhdGhTZWdSb2xlIHsgUGF0aFNlZ1VuZGVmaW5lZFJvbGUg
fTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNl
LmNwcAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhTZWdMaXN0U291cmNlOjpTVkdQYXRoU2VnTGlzdFNvdXJj
ZShjb25zdCBTVkdQYXRoU2VnTGlzdCYgcGF0aFNlZ0xpc3QpCitTVkdQYXRoU2VnTGlzdFNvdXJj
ZTo6U1ZHUGF0aFNlZ0xpc3RTb3VyY2UoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIHBhdGhT
ZWdMaXN0KQogICAgIDogbV9wYXRoU2VnTGlzdChwYXRoU2VnTGlzdCkKIHsKICAgICBtX2l0ZW1D
dXJyZW50ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJj
ZS5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3RTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKLSNpbmNsdWRlICJTVkdQYXRo
U2VnTGlzdC5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAi
U1ZHUGF0aFNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMjksNyArMjks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1BhdGhTZWdMaXN0U291cmNlIGZp
bmFsIDogcHVibGljIFNWR1BhdGhTb3VyY2UgewogcHVibGljOgotICAgIGV4cGxpY2l0IFNWR1Bh
dGhTZWdMaXN0U291cmNlKGNvbnN0IFNWR1BhdGhTZWdMaXN0Jik7CisgICAgZXhwbGljaXQgU1ZH
UGF0aFNlZ0xpc3RTb3VyY2UoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmKTsKIAogcHJpdmF0
ZToKICAgICBib29sIGhhc01vcmVEYXRhKCkgY29uc3QgZmluYWw7CkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KEZs
b2F0UG9pbnQmKSBmaW5hbDsKICAgICBib29sIHBhcnNlQXJjVG9TZWdtZW50KGZsb2F0JiwgZmxv
YXQmLCBmbG9hdCYsIGJvb2wmLCBib29sJiwgRmxvYXRQb2ludCYpIGZpbmFsOwogCi0gICAgY29u
c3QgU1ZHUGF0aFNlZ0xpc3QmIG1fcGF0aFNlZ0xpc3Q7CisgICAgY29uc3QgU1ZHUGF0aFNlZ0xp
c3RWYWx1ZXMmIG1fcGF0aFNlZ0xpc3Q7CiAgICAgUmVmUHRyPFNWR1BhdGhTZWc+IG1fc2VnbWVu
dDsKICAgICBpbnQgbV9pdGVtQ3VycmVudDsKICAgICBpbnQgbV9pdGVtRW5kOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMDg3
MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHA6MjA4NzA0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCisK
KyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCisjaW5j
bHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmlu
ZyBTVkdQYXRoU2VnTGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nIHBh
dGhTdHJpbmc7CisgICAgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoKnRoaXMsIHBhdGhT
dHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgIHJldHVybiBwYXRoU3RyaW5nOworfQorCit2
b2lkIFNWR1BhdGhTZWdMaXN0Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQsIExpc3RNb2RpZmljYXRpb24gbGlzdE1vZGlmaWNhdGlvbikKK3sKKyAgICBBU1NFUlQoY29u
dGV4dEVsZW1lbnQpOworICAgIGRvd25jYXN0PFNWR1BhdGhFbGVtZW50Pihjb250ZXh0RWxlbWVu
dCktPnBhdGhTZWdMaXN0Q2hhbmdlZChtX3JvbGUsIGxpc3RNb2RpZmljYXRpb24pOworfQorCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAJKHJl
dmlzaW9uIDIwODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKKyNpbmNsdWRlICJTVkdQYXRo
U2VnTGlzdFZhbHVlcy5oIgogCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQ
YXRoRWxlbWVudC5oIgpAQCAtMjksMTcgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU3RyaW5nIFNWR1BhdGhTZWdMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK1N0cmluZyBT
VkdQYXRoU2VnTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5n
IHBhdGhTdHJpbmc7Ci0gICAgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoKnRoaXMsIHBh
dGhTdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgIGJ1aWxkU3RyaW5nRnJvbVNWR1BhdGhT
ZWdMaXN0VmFsdWVzKCp0aGlzLCBwYXRoU3RyaW5nLCBVbmFsdGVyZWRQYXJzaW5nKTsKICAgICBy
ZXR1cm4gcGF0aFN0cmluZzsKIH0KIAotdm9pZCBTVkdQYXRoU2VnTGlzdDo6Y29tbWl0Q2hhbmdl
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uIGxpc3RNb2RpZmlj
YXRpb24pCit2b2lkIFNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjb21taXRDaGFuZ2UoU1ZHRWxlbWVu
dCYgY29udGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24gbGlzdE1vZGlmaWNhdGlvbikKIHsK
LSAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgIGRvd25jYXN0PFNWR1BhdGhFbGVtZW50
Pihjb250ZXh0RWxlbWVudCktPnBhdGhTZWdMaXN0Q2hhbmdlZChtX3JvbGUsIGxpc3RNb2RpZmlj
YXRpb24pOworICAgIGRvd25jYXN0PFNWR1BhdGhFbGVtZW50Pihjb250ZXh0RWxlbWVudCkucGF0
aFNlZ0xpc3RDaGFuZ2VkKG1fcm9sZSwgbGlzdE1vZGlmaWNhdGlvbik7CiB9CiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3
MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oOjIwODcwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwg
PGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdMaXN0UHJvcGVy
dHkuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFp
dHMuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHRWxlbWVudDsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gCitjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CisKK2NsYXNzIFNW
R1BhdGhTZWdMaXN0IDogcHVibGljIFZlY3RvcjxSZWZQdHI8U1ZHUGF0aFNlZz4+IHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBTVkdQYXRoU2VnTGlzdChTVkdQYXRoU2VnUm9sZSByb2xlKQorICAg
ICAgICA6IG1fcm9sZShyb2xlKQorICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcgdmFsdWVBc1N0
cmluZygpIGNvbnN0OworCisgICAgLy8gT25seSB1c2VkIGJ5IFNWR1BhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmLgorICAgIHZvaWQgY29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBMaXN0TW9kaWZpY2F0aW9uKTsKKworcHJpdmF0ZToKKyAgICBTVkdQYXRoU2VnUm9sZSBt
X3JvbGU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQYXRo
U2VnTGlzdD4geworICAgIHN0YXRpYyBTVkdQYXRoU2VnTGlzdCBpbml0aWFsVmFsdWUoKSB7IHJl
dHVybiBTVkdQYXRoU2VnTGlzdChQYXRoU2VnVW5kZWZpbmVkUm9sZSk7IH0KKworICAgIHVzaW5n
IExpc3RJdGVtVHlwZSA9IFJlZlB0cjxTVkdQYXRoU2VnPjsKKyAgICB1c2luZyBMaXN0SXRlbVRl
YXJPZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8UmVmUHRyPFNWR1BhdGhTZWc+PjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ0xpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMzEgKzI4LDMyIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdQYXRoU2Vn
TGlzdDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gCiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7
CiAKLWNsYXNzIFNWR1BhdGhTZWdMaXN0IDogcHVibGljIFZlY3RvcjxSZWZQdHI8U1ZHUGF0aFNl
Zz4+IHsKK2NsYXNzIFNWR1BhdGhTZWdMaXN0VmFsdWVzIDogcHVibGljIFZlY3RvcjxSZWZQdHI8
U1ZHUGF0aFNlZz4+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTVkdQYXRoU2VnTGlzdChTVkdQ
YXRoU2VnUm9sZSByb2xlKQorICAgIGV4cGxpY2l0IFNWR1BhdGhTZWdMaXN0VmFsdWVzKFNWR1Bh
dGhTZWdSb2xlIHJvbGUpCiAgICAgICAgIDogbV9yb2xlKHJvbGUpCiAgICAgewogICAgIH0KIAog
ICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAKLSAgICAvLyBPbmx5IHVzZWQgYnkg
U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuCi0gICAgdm9pZCBjb21taXRDaGFuZ2UoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24pOworICAgIHZvaWQgY29t
bWl0Q2hhbmdlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uKTsK
IAogcHJpdmF0ZToKICAgICBTVkdQYXRoU2VnUm9sZSBtX3JvbGU7CiB9OwogCi10ZW1wbGF0ZTw+
IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQYXRoU2VnTGlzdD4gewotICAgIHN0YXRpYyBT
VkdQYXRoU2VnTGlzdCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdQYXRoU2VnTGlzdChQYXRo
U2VnVW5kZWZpbmVkUm9sZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1BhdGhTZWdMaXN0VmFsdWVzPiB7CisgICAgc3RhdGljIFNWR1BhdGhTZWdMaXN0VmFsdWVz
IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1BhdGhTZWdMaXN0VmFsdWVzKFBhdGhTZWdVbmRl
ZmluZWRSb2xlKTsgfQogCiAgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gUmVmUHRyPFNWR1BhdGhT
ZWc+OwogICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxSZWZQ
dHI8U1ZHUGF0aFNlZz4+OworICAgIHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdQYXRo
U2VnTGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyAr
NDksNyBAQCBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBkCiAgICAgcmV0
dXJuIFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CiB9CiAKLWJvb2wgYnVp
bGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlz
dCYgbGlzdCwgU1ZHUGF0aEJ5dGVTdHJlYW0mIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNp
bmdNb2RlKQorYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0VmFs
dWVzKGNvbnN0IFNWR1BhdGhTZWdMaXN0VmFsdWVzJiBsaXN0LCBTVkdQYXRoQnl0ZVN0cmVhbSYg
cmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiB7CiAgICAgcmVzdWx0LmNsZWFy
KCk7CiAgICAgaWYgKGxpc3QuaXNFbXB0eSgpKQpAQCAtNjQsNyArNjQsNyBAQCBib29sIGFwcGVu
ZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBub3JtYWxpemVk
IHBhdGggc2VnbWVudCBsaXN0cyEKICAgICBBU1NFUlQocGFyc2luZ01vZGUgPT0gVW5hbHRlcmVk
UGFyc2luZyk7CiAKLSAgICBTVkdQYXRoU2VnTGlzdCBhcHBlbmRlZEl0ZW1MaXN0KFBhdGhTZWdV
bmFsdGVyZWRSb2xlKTsKKyAgICBTVkdQYXRoU2VnTGlzdFZhbHVlcyBhcHBlbmRlZEl0ZW1MaXN0
KFBhdGhTZWdVbmFsdGVyZWRSb2xlKTsKICAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChXVEZN
b3ZlKHBhdGhTZWcpKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtIGFwcGVuZGVkQnl0ZVN0cmVh
bTsKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShjb25zdCBT
VkdQYQogICAgIHJldHVybiBTVkdQYXRoUGFyc2VyOjpwYXJzZShzb3VyY2UsIGJ1aWxkZXIpOwog
fQogCi1ib29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRo
Qnl0ZVN0cmVhbSYgc3RyZWFtLCBTVkdQYXRoRWxlbWVudCYgZWxlbWVudCwgU1ZHUGF0aFNlZ0xp
c3QmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQorYm9vbCBidWlsZFNWR1Bh
dGhTZWdMaXN0VmFsdWVzRnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHN0
cmVhbSwgU1ZHUGF0aEVsZW1lbnQmIGVsZW1lbnQsIFNWR1BhdGhTZWdMaXN0VmFsdWVzJiByZXN1
bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKIHsKICAgICBpZiAoc3RyZWFtLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBidWls
ZFN0cmluZ0Zyb21CeXRlU3RyZWFtKGNvbnN0IFNWRwogICAgIHJldHVybiBTVkdQYXRoUGFyc2Vy
OjpwYXJzZVRvU3RyaW5nKHNvdXJjZSwgcmVzdWx0LCBwYXJzaW5nTW9kZSk7CiB9CiAKLWJvb2wg
YnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIGxpc3Qs
IFN0cmluZyYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCitib29sIGJ1aWxk
U3RyaW5nRnJvbVNWR1BhdGhTZWdMaXN0VmFsdWVzKGNvbnN0IFNWR1BhdGhTZWdMaXN0VmFsdWVz
JiBsaXN0LCBTdHJpbmcmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQogewog
ICAgIHJlc3VsdCA9IFN0cmluZygpOwogICAgIGlmIChsaXN0LmlzRW1wdHkoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAkocmV2aXNpb24gMjA4NzU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MjMgKzMwLDIzIEBAIGNsYXNzIFBhdGg7CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbTsKIGNsYXNz
IFNWR1BhdGhFbGVtZW50OwogY2xhc3MgU1ZHUGF0aFNlZzsKLWNsYXNzIFNWR1BhdGhTZWdMaXN0
OworY2xhc3MgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXM7CiAKIC8vIFN0cmluZy9TVkdQYXRoQnl0ZVN0
cmVhbSAtPiBQYXRoCiBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgUGF0
aCYpOwogYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVh
bSYsIFBhdGgmKTsKIAotLy8gU1ZHUGF0aFNlZ0xpc3QvU3RyaW5nIC0+IFNWR1BhdGhCeXRlU3Ry
ZWFtCi1ib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3Qg
U1ZHUGF0aFNlZ0xpc3QmLCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBQYXRoUGFyc2luZ01v
ZGUpOworLy8gU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMvU3RyaW5nIC0+IFNWR1BhdGhCeXRlU3RyZWFt
Citib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoY29u
c3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmLCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBQYXRo
UGFyc2luZ01vZGUpOwogYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2Vn
KFJlZlB0cjxTVkdQYXRoU2VnPiYmLCBTVkdQYXRoQnl0ZVN0cmVhbSYsIFBhdGhQYXJzaW5nTW9k
ZSk7CiBib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYs
IFNWR1BhdGhCeXRlU3RyZWFtJiwgUGF0aFBhcnNpbmdNb2RlKTsKIAotLy8gU1ZHUGF0aEJ5dGVT
dHJlYW0vU1ZHUGF0aFNlZ0xpc3QgLT4gU3RyaW5nCisvLyBTVkdQYXRoQnl0ZVN0cmVhbS9TVkdQ
YXRoU2VnTGlzdFZhbHVlcyAtPiBTdHJpbmcKIGJvb2wgYnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVh
bShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYsIFN0cmluZyYsIFBhdGhQYXJzaW5nTW9kZSk7Ci1i
b29sIGJ1aWxkU3RyaW5nRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdMaXN0Jiwg
U3RyaW5nJiwgUGF0aFBhcnNpbmdNb2RlKTsKK2Jvb2wgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNl
Z0xpc3RWYWx1ZXMoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmLCBTdHJpbmcmLCBQYXRoUGFy
c2luZ01vZGUpOwogCi0vLyBTVkdQYXRoQnl0ZVN0cmVhbSAtPiBTVkdQYXRoU2VnTGlzdAotYm9v
bCBidWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJl
YW0mLCBTVkdQYXRoRWxlbWVudCYsIFNWR1BhdGhTZWdMaXN0JiwgUGF0aFBhcnNpbmdNb2RlKTsK
Ky8vIFNWR1BhdGhCeXRlU3RyZWFtIC0+IFNWR1BhdGhTZWdMaXN0VmFsdWVzCitib29sIGJ1aWxk
U1ZHUGF0aFNlZ0xpc3RWYWx1ZXNGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVh
bSYsIFNWR1BhdGhFbGVtZW50JiwgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmLCBQYXRoUGFyc2luZ01v
ZGUpOwogCiBib29sIGNhbkJsZW5kU1ZHUGF0aEJ5dGVTdHJlYW1zKGNvbnN0IFNWR1BhdGhCeXRl
U3RyZWFtJiBmcm9tLCBjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgdG8pOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQuaCIKKyNpbmNsdWRl
ICJTVkdTdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgogI2luY2x1
ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTEy
Myw3ICsxMjQsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5U
cmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIFNWR1RyYW5zZm9ybUxpc3QgbmV3TGlzdDsKKyAgICAg
ICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyBuZXdMaXN0OwogICAgICAgICBuZXdMaXN0LnBhcnNl
KHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRQYXR0ZXJuVHJhbnNmb3JtTGlzdFdyYXBw
ZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0UGF0dGVyblRyYW5zZm9ybUJhc2VWYWx1
ZShuZXdMaXN0KTsKQEAgLTIzMCw0ICsyMzEsMTkgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1BhdHRl
cm5FbGVtZW50Ojpsb2NhbAogICAgIHJldHVybiBtYXRyaXg7CiB9CiAKK1JlZjxTVkdTdHJpbmdM
aXN0PiBTVkdQYXR0ZXJuRWxlbWVudDo6cmVxdWlyZWRGZWF0dXJlcygpCit7CisgICAgcmV0dXJu
IFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKCp0aGlzKTsKK30KKworUmVmPFNWR1N0cmluZ0xp
c3Q+IFNWR1BhdHRlcm5FbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMoKQoreyAKKyAgICByZXR1
cm4gU1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9ucygqdGhpcyk7Cit9CisKK1JlZjxTVkdTdHJp
bmdMaXN0PiBTVkdQYXR0ZXJuRWxlbWVudDo6c3lzdGVtTGFuZ3VhZ2UoKQoreworICAgIHJldHVy
biBTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOworfQorCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEx
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBhdHRlcm5BdHRyaWJ1dGVz
OwogIAotY2xhc3MgU1ZHUGF0dGVybkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmll
d0JveCB7CitjbGFzcyBTVkdQYXR0ZXJuRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50
LCBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLCBwdWJsaWMgU1ZHVGVzdHMsIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNWR1BhdHRlcm5FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTUwLDYgKzQ2LDExIEBAIHB1YmxpYzoKIAogICAgIEFm
ZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6
OkNUTVNjb3BlKSBjb25zdCBmaW5hbDsKIAorICAgIC8vIFNWR1Rlc3RzCisgICAgUmVmPFNWR1N0
cmluZ0xpc3Q+IHJlcXVpcmVkRmVhdHVyZXMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gcmVx
dWlyZWRFeHRlbnNpb25zKCk7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHN5c3RlbUxhbmd1YWdl
KCk7CisKIHByaXZhdGU6CiAgICAgU1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAgICAgCkBAIC04MCw5ICs4MSw5IEBAIHByaXZhdGU6CiAgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgLy8gU1ZHVGVzdHMKLSAgICB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQotICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5z
aW9ucyh0aGlzKTsgfQotICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIGZpbmFs
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KKyAgICB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcygqdGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMoKnRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgZmlu
YWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgqdGhpcyk7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2lu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5oCShyZXZpc2lv
biAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsOSArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1BvaW50
IDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxTVkdQb2ludD4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVk
UHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFBvaW50JiB2YWx1ZSkKKyAgICBz
dGF0aWMgUmVmPFNWR1BvaW50PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQ
cm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UG9pbnQmIHZhbHVlKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTVkdQb2ludChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0K
IApAQCAtMTAxLDggKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
U1ZHUG9pbnQoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVy
dHlSb2xlIHJvbGUsIEZsb2F0UG9pbnQmIHZhbHVlKQotICAgICAgICA6IFNWR1Byb3BlcnR5VGVh
ck9mZjxGbG9hdFBvaW50PihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKKyAgICBTVkdQ
b2ludChTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCisgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2Zm
PEZsb2F0UG9pbnQ+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKKyAgICB7CisgICAg
fQorCisgICAgU1ZHUG9pbnQoU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UG9pbnQmIHZhbHVl
KQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PihudWxscHRyLCByb2xl
LCB2YWx1ZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9p
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwJKHJl
dmlzaW9uIDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDYgKzE5LDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCiAgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KICAqLworCiBbCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KIF0g
aW50ZXJmYWNlIFNWR1BvaW50IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3Bw
CShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmNw
cAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgotCi0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0cmluZyBTVkdQb2ludExpc3Q6OnZhbHVl
QXNTdHJpbmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAgIHVu
c2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOyAvLyBGSVhNRTogU2hvdWxkbid0IHdlIHVzZSBjb21tYXMgdG8gc2VwZXJhdGU/
Ci0KLSAgICAgICAgY29uc3QgYXV0byYgcG9pbnQgPSBhdChpKTsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmROdW1iZXIocG9pbnQueCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocG9pbnQueSgpKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgJKHJldmlzaW9uIDIwODc1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjAsMjQgKzIwLDI4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUg
IlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdQb2ludC5oIgorI2luY2x1
ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNWR1BvaW50OwotCi1jbGFzcyBTVkdQb2ludExpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPEZs
b2F0UG9pbnQ+IHsKK2NsYXNzIFNWR1BvaW50TGlzdCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHlU
ZWFyT2ZmPFNWR1BvaW50TGlzdFZhbHVlcz4gewogcHVibGljOgotICAgIFN0cmluZyB2YWx1ZUFz
U3RyaW5nKCkgY29uc3Q7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdQb2ludExpc3Q+IHsKLSAgICBzdGF0aWMgU1ZHUG9pbnRMaXN0IGluaXRpYWxWYWx1ZSgp
IHsgcmV0dXJuIFNWR1BvaW50TGlzdCgpOyB9CisgICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdFZh
bHVlcz47CisgICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKIAotICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IEZs
b2F0UG9pbnQ7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUG9pbnQ7CisgICAgc3Rh
dGljIFJlZjxTVkdQb2ludExpc3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQb2ludExpc3RWYWx1
ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQb2ludExpc3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwg
dmFsdWVzLCB3cmFwcGVycykpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTVkdQb2ludExpc3Qo
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0
eVJvbGUgcm9sZSwgU1ZHUG9pbnRMaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUm
IHdyYXBwZXJzKQorICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0
VmFsdWVzPihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJzKQorICAgIHsK
KyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAkocmV2aXNpb24gMjA4NzA1KQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmNwcDoyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTVkdQb2ludExpc3QuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitTdHJpbmcgU1ZHUG9pbnRMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKGkg
PiAwKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsgLy8gRklYTUU6IFNob3VsZG4n
dCB3ZSB1c2UgY29tbWFzIHRvIHNlcGVyYXRlPworCisgICAgICAgIGNvbnN0IGF1dG8mIHBvaW50
ID0gYXQoaSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHBvaW50LngoKSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHBv
aW50LnkoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAJKHJldmlz
aW9uIDIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxNCArMTksMTQgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0
VmFsdWVzLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5n
IFNWR1BvaW50TGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0CitTdHJpbmcgU1ZHUG9pbnRMaXN0
VmFsdWVzOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmgJKHJldmlz
aW9uIDIwODcwNSkJKGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5oOjIwODcw
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRz
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNWR1BvaW50OworCitjbGFzcyBTVkdQb2ludExpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9y
PEZsb2F0UG9pbnQ+IHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUG9pbnRMaXN0
PiB7CisgICAgc3RhdGljIFNWR1BvaW50TGlzdCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdQ
b2ludExpc3QoKTsgfQorCisgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gRmxvYXRQb2ludDsKKyAg
ICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdQb2ludDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmgJKHJl
dmlzaW9uIDIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcgKzI3LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNWR1BvaW50OworY2xhc3MgU1ZHUG9pbnRMaXN0OwogCi1jbGFzcyBTVkdQb2lu
dExpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPEZsb2F0UG9pbnQ+IHsKK2NsYXNzIFNWR1BvaW50
TGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8RmxvYXRQb2ludD4gewogcHVibGljOgog
ICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVj
dCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQb2ludExpc3Q+IHsKLSAgICBzdGF0aWMgU1ZHUG9pbnRM
aXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1BvaW50TGlzdCgpOyB9Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQb2ludExpc3RWYWx1ZXM+IHsKKyAgICBzdGF0
aWMgU1ZHUG9pbnRMaXN0VmFsdWVzIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQogCiAg
ICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gRmxvYXRQb2ludDsKICAgICB1c2luZyBMaXN0SXRlbVRl
YXJPZmYgPSBTVkdQb2ludDsKKyAgICB1c2luZyBMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHUG9p
bnRMaXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJTVkdQb2ludC5oIgorI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDcgKzY1LDcgQEAgU1ZHUG9seUVsZW1lbnQ6OlNWR1Bv
bHlFbGVtZW50KGNvbnN0IFF1YQogdm9pZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cikgewotICAgICAgICBTVkdQb2lu
dExpc3QgbmV3TGlzdDsKKyAgICAgICAgU1ZHUG9pbnRMaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAg
ICAgIGlmICghcG9pbnRzTGlzdEZyb21TVkdEYXRhKG5ld0xpc3QsIHZhbHVlKSkKICAgICAgICAg
ICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJQcm9ibGVt
IHBhcnNpbmcgcG9pbnRzPVwiIiArIHZhbHVlICsgIlwiIik7CiAKQEAgLTExNCwyMCArMTE1LDE5
IEBAIFJlZjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdQb2x5RWxlbWVudDoKIHsKICAgICBBU1NF
UlQoY29udGV4dEVsZW1lbnQpOwogICAgIFNWR1BvbHlFbGVtZW50JiBvd25lclR5cGUgPSBkb3du
Y2FzdDxTVkdQb2x5RWxlbWVudD4oKmNvbnRleHRFbGVtZW50KTsKLSAgICByZXR1cm4gU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BvbHlFbGVtZW50LCBTVkdB
bmltYXRlZFBvaW50TGlzdCwgU1ZHUG9pbnRMaXN0PgotICAgICAgICAoJm93bmVyVHlwZSwgcG9p
bnRzUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS5tX3BvaW50cy52YWx1ZSk7CisgICAgcmV0dXJu
IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdQb2x5RWxlbWVu
dCwgU1ZHQW5pbWF0ZWRQb2ludExpc3QsIFNWR1BvaW50TGlzdFZhbHVlcz4oJm93bmVyVHlwZSwg
cG9pbnRzUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS5tX3BvaW50cy52YWx1ZSk7CiB9CiAKLVJl
ZlB0cjxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4+IFNWR1BvbHlFbGVtZW50
Ojpwb2ludHMoKQorUmVmPFNWR1BvaW50TGlzdD4gU1ZHUG9seUVsZW1lbnQ6OnBvaW50cygpCiB7
CiAgICAgbV9wb2ludHMuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qPihzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGxvb2t1cE9yQ3JlYXRlUG9pbnRzV3Jh
cHBlcih0aGlzKSktPmJhc2VWYWwoKS5nZXQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxTVkdBbmltYXRlZFBvaW50TGlzdD4obG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVy
KHRoaXMpKS0+YmFzZVZhbCgpOwogfQogCi1SZWZQdHI8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdQb2ludExpc3Q+PiBTVkdQb2x5RWxlbWVudDo6YW5pbWF0ZWRQb2ludHMoKQorUmVmPFNWR1Bv
aW50TGlzdD4gU1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKCkKIHsKICAgICBtX3BvaW50
cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19yZWZlcmVuY2VfY2FzdDxT
VkdBbmltYXRlZFBvaW50TGlzdD4obG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKHRoaXMpKS0+
YW5pbVZhbCgpLmdldCgpKTsKKyAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0Fu
aW1hdGVkUG9pbnRMaXN0Pihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5hbmlt
VmFsKCk7CiB9CiAKIHNpemVfdCBTVkdQb2x5RWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlDb3N0
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCShyZXZpc2lvbiAy
MDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsMTYgKzI0LDE2IEBACiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dyYXBoaWNzRWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRM
aXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUG9seUVsZW1l
bnQgOiBwdWJsaWMgU1ZHR3JhcGhpY3NFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCB7CiBwdWJsaWM6Ci0gICAgUmVmUHRyPFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8
U1ZHUG9pbnRMaXN0Pj4gcG9pbnRzKCk7Ci0gICAgUmVmUHRyPFNWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmY8U1ZHUG9pbnRMaXN0Pj4gYW5pbWF0ZWRQb2ludHMoKTsKKyAgICBSZWY8U1ZHUG9pbnRMaXN0
PiBwb2ludHMoKTsKKyAgICBSZWY8U1ZHUG9pbnRMaXN0PiBhbmltYXRlZFBvaW50cygpOwogCi0g
ICAgU1ZHUG9pbnRMaXN0JiBwb2ludExpc3QoKSBjb25zdCB7IHJldHVybiBtX3BvaW50cy52YWx1
ZTsgfQorICAgIFNWR1BvaW50TGlzdFZhbHVlcyYgcG9pbnRMaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9wb2ludHMudmFsdWU7IH0KIAogICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHBv
aW50c1Byb3BlcnR5SW5mbygpOwogCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiBwcm90ZWN0ZWQ6Ci0gICAgbXV0YWJsZSBT
VkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsK
KyAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdQb2ludExp
c3RWYWx1ZXM+IG1fcG9pbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiAy
MDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKwogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0zMiw5ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRl
YXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSog
YW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZSYgdmFsdWUpCisgICAgc3RhdGljIFJlZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVy
dHlSb2xlIHJvbGUsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgdmFsdWUpCiAgICAgewot
ICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFs
dWUpKTsKICAgICB9CiAKQEAgLTkyLDggKzkyLDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1h
dGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUmIHZhbHVlKQotICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWU+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8oU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwg
U1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgdmFsdWUp
CisgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZT4oJmFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQogICAgIHsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlJl
bmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNWR1N0b3BFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5o
IgogI2luY2x1ZGUgIlNWR1VuaXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0LmgJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdSZWN0IDogcHVibGljIFNWR1Byb3BlcnR5
VGVhck9mZjxGbG9hdFJlY3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR1JlY3Q+IGNy
ZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgRmxvYXRSZWN0JiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR1JlY3Q+IGNyZWF0
ZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUg
cm9sZSwgRmxvYXRSZWN0JiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFBy
b3BlcnR5KTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUmVjdChhbmltYXRlZFBy
b3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KIApAQCAtMTE0LDggKzExMyw4IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHUmVjdChTVkdBbmltYXRlZFByb3BlcnR5KiBh
bmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRSZWN0JiB2YWx1ZSkK
LSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRSZWN0PihhbmltYXRlZFByb3BlcnR5
LCByb2xlLCB2YWx1ZSkKKyAgICBTVkdSZWN0KFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVk
UHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFJlY3QmIHZhbHVlKQorICAgICAg
ICA6IFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFJlY3Q+KCZhbmltYXRlZFByb3BlcnR5LCByb2xl
LCB2YWx1ZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Ry
aW5nTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xp
c3QuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5n
TGlzdC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCi0K
LSNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXZvaWQgU1ZHU3RyaW5nTGlzdDo6Y29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KQotewotICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgY29udGV4dEVs
ZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7Ci0gICAgY29udGV4dEVsZW1lbnQtPnN2
Z0F0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVOYW1lKTsKLX0KLQotdm9pZCBTVkdTdHJpbmdM
aXN0OjpyZXNldChjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBwYXJzZShzdHJpbmcsICcg
Jyk7Ci0KLSAgICAvLyBBZGQgZW1wdHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5LgotICAgIGlm
IChpc0VtcHR5KCkpCi0gICAgICAgIGFwcGVuZChlbXB0eVN0cmluZygpKTsKLX0KLQotdm9pZCBT
VkdTdHJpbmdMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikK
LXsKLSAgICAvLyBUT0RPIDogbW9yZSBlcnJvciBjaGVja2luZy9yZXBvcnRpbmcKLSAgICBjbGVh
cigpOwotCi0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGRhdGEp
LnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSB1cGNvbnZl
cnRlZENoYXJhY3RlcnM7Ci0gICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIGRhdGEubGVuZ3Ro
KCk7Ci0gICAgd2hpbGUgKHB0ciA8IGVuZCkgewotICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQg
PSBwdHI7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKnB0ciAhPSBkZWxpbWl0ZXIgJiYg
IWlzU1ZHU3BhY2UoKnB0cikpCi0gICAgICAgICAgICBwdHIrKzsKLSAgICAgICAgaWYgKHB0ciA9
PSBzdGFydCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBhcHBlbmQoU3RyaW5nKHN0YXJ0
LCBwdHIgLSBzdGFydCkpOwotICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltaXRl
cihwdHIsIGVuZCwgZGVsaW1pdGVyKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBTVkdTdHJpbmdMaXN0
Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0K
LSAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGkgPiAwKQotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChhdChpKSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotfQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuY3BwCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCShy
ZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDU4ICsxLDUxIEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgotI2luY2x1ZGUgIlNWR1By
b3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU1ZHRWxlbWVudDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1j
bGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7Ci0KLWNsYXNzIFNWR1N0cmluZ0xpc3QgZmluYWwgOiBw
dWJsaWMgVmVjdG9yPFN0cmluZz4geworY2xhc3MgU1ZHU3RyaW5nTGlzdCBmaW5hbCA6IHB1Ymxp
YyBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1N0cmluZ0xpc3RWYWx1ZXM+IHsKIHB1
YmxpYzoKLSAgICBTVkdTdHJpbmdMaXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpCi0gICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCisgICAgdXNpbmcg
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmPFNWR1N0cmluZ0xpc3RWYWx1ZXM+OworICAgIHVzaW5nIExpc3RXcmFwcGVyQ2FjaGUgPSBB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6Okxpc3RXcmFwcGVyQ2FjaGU7CisKKyAgICBzdGF0
aWMgUmVmPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwg
U1ZHU3RyaW5nTGlzdFZhbHVlcyYgdmFsdWVzKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHU3RyaW5nTGlzdChjb250ZXh0RWxlbWVudCwgdmFsdWVzKSk7CiAgICAgfQog
Ci0gICAgdm9pZCByZXNldChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0
cmluZyYsIFVDaGFyIGRlbGltaXRlciA9ICcsJyk7Ci0KLSAgICAvLyBPbmx5IHVzZWQgYnkgU1ZH
U3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi4KLSAgICB2b2lkIGNvbW1pdENoYW5nZShTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCk7Ci0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0
OwotCiBwcml2YXRlOgotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRlTmFtZTsK
LX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0cmluZ0xpc3Q+
IHsKLSAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBTdHJpbmc7Ci0gICAgdXNpbmcgTGlzdEl0ZW1U
ZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2ZmPFN0cmluZz47CisgICAgU1ZHU3RyaW5nTGlzdChT
VkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgU1ZHU3RyaW5nTGlzdFZhbHVlcyYgdmFsdWVzKQor
ICAgICAgICA6IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdFZhbHVl
cz4oY29udGV4dEVsZW1lbnQsIHZhbHVlcykKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFs
dWVzLmNwcAkocmV2aXNpb24gMjA4NzA0KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Ry
aW5nTGlzdC5jcHA6MjA4NzA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RW
YWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIK
KworI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCBTVkdTdHJpbmdMaXN0Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQpCit7CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBjb250ZXh0
RWxlbWVudC0+aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBjb250ZXh0RWxlbWVudC0+
c3ZnQXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0ZU5hbWUpOworfQorCit2b2lkIFNWR1N0cmlu
Z0xpc3Q6OnJlc2V0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHBhcnNlKHN0cmluZywg
JyAnKTsKKworICAgIC8vIEFkZCBlbXB0eSBzdHJpbmcsIGlmIGxpc3QgaXMgZW1wdHkuCisgICAg
aWYgKGlzRW1wdHkoKSkKKyAgICAgICAgYXBwZW5kKGVtcHR5U3RyaW5nKCkpOworfQorCit2b2lk
IFNWR1N0cmluZ0xpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVy
KQoreworICAgIC8vIFRPRE8gOiBtb3JlIGVycm9yIGNoZWNraW5nL3JlcG9ydGluZworICAgIGNs
ZWFyKCk7CisKKyAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcoZGF0
YSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29u
dmVydGVkQ2hhcmFjdGVyczsKKyAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgZGF0YS5sZW5n
dGgoKTsKKyAgICB3aGlsZSAocHRyIDwgZW5kKSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBzdGFy
dCA9IHB0cjsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRyICE9IGRlbGltaXRlciAm
JiAhaXNTVkdTcGFjZSgqcHRyKSkKKyAgICAgICAgICAgIHB0cisrOworICAgICAgICBpZiAocHRy
ID09IHN0YXJ0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGFwcGVuZChTdHJpbmcoc3Rh
cnQsIHB0ciAtIHN0YXJ0KSk7CisgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVsaW1p
dGVyKHB0ciwgZW5kLCBkZWxpbWl0ZXIpOworICAgIH0KK30KKworU3RyaW5nIFNWR1N0cmluZ0xp
c3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KworICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoaSA+IDApCisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOworCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0KGkpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMDg3MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5LDcgKzE5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIK
IAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKQEAgLTI3LDE0ICsyNywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgU1ZH
U3RyaW5nTGlzdDo6Y29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQordm9p
ZCBTVkdTdHJpbmdMaXN0VmFsdWVzOjpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVs
ZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBjb250ZXh0RWxlbWVu
dC0+aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICBjb250ZXh0RWxlbWVudC0+c3ZnQXR0
cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0ZU5hbWUpOworICAgIGNvbnRleHRFbGVtZW50LmludmFs
aWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgY29udGV4dEVsZW1lbnQuc3ZnQXR0cmlidXRlQ2hh
bmdlZChtX2F0dHJpYnV0ZU5hbWUpOwogfQogCi12b2lkIFNWR1N0cmluZ0xpc3Q6OnJlc2V0KGNv
bnN0IFN0cmluZyYgc3RyaW5nKQordm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVzOjpyZXNldChjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBwYXJzZShzdHJpbmcsICcgJyk7CiAKQEAgLTQzLDcg
KzQyLDcgQEAgdm9pZCBTVkdTdHJpbmdMaXN0OjpyZXNldChjb25zdCBTdHJpbmcmIAogICAgICAg
ICBhcHBlbmQoZW1wdHlTdHJpbmcoKSk7CiB9CiAKLXZvaWQgU1ZHU3RyaW5nTGlzdDo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCit2b2lkIFNWR1N0cmluZ0xpc3RW
YWx1ZXM6OnBhcnNlKGNvbnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyKQogewogICAg
IC8vIFRPRE8gOiBtb3JlIGVycm9yIGNoZWNraW5nL3JlcG9ydGluZwogICAgIGNsZWFyKCk7CkBA
IC02Miw3ICs2MSw3IEBAIHZvaWQgU1ZHU3RyaW5nTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiAK
ICAgICB9CiB9CiAKLVN0cmluZyBTVkdTdHJpbmdMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QK
K1N0cmluZyBTVkdTdHJpbmdMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHJpbmdMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
cmluZ0xpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjA4NzA0KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3RyaW5nTGlzdC5oOjIwODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJp
bmdMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlF1YWxpZmllZE5h
bWUuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdFbGVtZW50OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiAKK2NsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKKworY2xhc3MgU1ZH
U3RyaW5nTGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U3RyaW5nPiB7CitwdWJsaWM6CisgICAg
U1ZHU3RyaW5nTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgICAg
ICA6IG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIHJlc2V0KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiwg
VUNoYXIgZGVsaW1pdGVyID0gJywnKTsKKworICAgIC8vIE9ubHkgdXNlZCBieSBTVkdTdHJpbmdM
aXN0UHJvcGVydHlUZWFyT2ZmLgorICAgIHZvaWQgY29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KTsKKworICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9hdHRyaWJ1dGVOYW1lOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3RyaW5nTGlzdD4geworICAg
IHVzaW5nIExpc3RJdGVtVHlwZSA9IFN0cmluZzsKKyAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYg
PSBTVkdQcm9wZXJ0eVRlYXJPZmY8U3RyaW5nPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuaAkocmV2aXNp
b24gMjA4NzA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdTdHJpbmdMaXN0OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiAKIGNsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKIAotY2xhc3MgU1ZHU3RyaW5nTGlz
dCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U3RyaW5nPiB7CitjbGFzcyBTVkdTdHJpbmdMaXN0VmFs
dWVzIGZpbmFsIDogcHVibGljIFZlY3RvcjxTdHJpbmc+IHsKIHB1YmxpYzoKLSAgICBTVkdTdHJp
bmdMaXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgU1ZHU3RyaW5n
TGlzdFZhbHVlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgICAgICA6
IG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQogICAgIHsKICAgICB9CkBAIC00MSw4ICs0
Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
cGFyc2UoY29uc3QgU3RyaW5nJiwgVUNoYXIgZGVsaW1pdGVyID0gJywnKTsKIAotICAgIC8vIE9u
bHkgdXNlZCBieSBTVkdTdHJpbmdMaXN0UHJvcGVydHlUZWFyT2ZmLgotICAgIHZvaWQgY29tbWl0
Q2hhbmdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKKyAgICAvLyBPbmx5IHVzZWQgYnkg
U1ZHU3RyaW5nTGlzdC4KKyAgICB2b2lkIGNvbW1pdENoYW5nZShTVkdFbGVtZW50JiBjb250ZXh0
RWxlbWVudCk7CiAKICAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwogCkBAIC01MCw5
ICs1MSwxMCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRl
TmFtZTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0cmlu
Z0xpc3Q+IHsKK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0cmluZ0xp
c3RWYWx1ZXM+IHsKICAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBTdHJpbmc7CiAgICAgdXNpbmcg
TGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2ZmPFN0cmluZz47CisgICAgdXNpbmcg
TGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR1N0cmluZ0xpc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAJKHJldmlzaW9uIDIwODc1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
NCw0NSArMjA0LDQ0IEBAIHZvaWQgU1ZHVGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGEK
ICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChzeXN0ZW1MYW5ndWFnZUF0dHIpOwogfQogCi12
b2lkIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZUF0dHJpYnV0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+JiBw
cm9wZXJ0eSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKK3ZvaWQgU1ZHVGVz
dHM6OnN5bmNocm9uaXplQXR0cmlidXRlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBTVkdT
eW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdFZhbHVlcz4mIHByb3Bl
cnR5LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAgIEFTU0VSVChj
b250ZXh0RWxlbWVudCk7CiAgICAgaWYgKCFwcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fcmVxdWlyZWRGZWF0dXJlcy5zeW5jaHJvbml6ZShjb250ZXh0
RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgcHJvcGVydHkudmFsdWUudmFsdWVBc1N0cmluZygpKTsK
KyAgICBtX3JlcXVpcmVkRmVhdHVyZXMuc3luY2hyb25pemUoJmNvbnRleHRFbGVtZW50LCBhdHRy
aWJ1dGVOYW1lLCBwcm9wZXJ0eS52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwogfQogCi12b2lkIFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpCit2b2lkIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxl
bWVudCYgY29udGV4dEVsZW1lbnQpCiB7CiAgICAgc3luY2hyb25pemVBdHRyaWJ1dGUoY29udGV4
dEVsZW1lbnQsIG1fcmVxdWlyZWRGZWF0dXJlcywgcmVxdWlyZWRGZWF0dXJlc0F0dHIpOwogfQog
Ci12b2lkIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCkKK3ZvaWQgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KQogewogICAgIHN5bmNocm9uaXplQXR0
cmlidXRlKGNvbnRleHRFbGVtZW50LCBtX3JlcXVpcmVkRXh0ZW5zaW9ucywgcmVxdWlyZWRFeHRl
bnNpb25zQXR0cik7CiB9CiAKLXZvaWQgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCit2b2lkIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KQogewogICAgIHN5bmNo
cm9uaXplQXR0cmlidXRlKGNvbnRleHRFbGVtZW50LCBtX3N5c3RlbUxhbmd1YWdlLCBzeXN0ZW1M
YW5ndWFnZUF0dHIpOwogfQogCi1TVkdTdHJpbmdMaXN0JiBTVkdUZXN0czo6cmVxdWlyZWRGZWF0
dXJlcygpCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoU1ZH
RWxlbWVudCYgY29udGV4dEVsZW1lbnQpCiB7CiAgICAgbV9yZXF1aXJlZEZlYXR1cmVzLnNob3Vs
ZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gbV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVl
OworICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUoY29udGV4dEVsZW1lbnQsIG1fcmVx
dWlyZWRGZWF0dXJlcy52YWx1ZSk7CiB9CiAKLVNWR1N0cmluZ0xpc3QmIFNWR1Rlc3RzOjpyZXF1
aXJlZEV4dGVuc2lvbnMoKQorUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1Rlc3RzOjpyZXF1aXJlZEV4
dGVuc2lvbnMoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpCiB7CiAgICAgbV9yZXF1aXJlZEV4
dGVuc2lvbnMuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOyAgICAKLSAgICByZXR1cm4gbV9yZXF1
aXJlZEV4dGVuc2lvbnMudmFsdWU7CisgICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShj
b250ZXh0RWxlbWVudCwgbV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUpOwogfQogCi1TVkdTdHJp
bmdMaXN0JiBTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKQorUmVmPFNWR1N0cmluZ0xpc3Q+IFNW
R1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCkKIHsKICAg
ICBtX3N5c3RlbUxhbmd1YWdlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4g
bV9zeXN0ZW1MYW5ndWFnZS52YWx1ZTsKKyAgICByZXR1cm4gU1ZHU3RyaW5nTGlzdDo6Y3JlYXRl
KGNvbnRleHRFbGVtZW50LCBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlKTsKIH0KIAogYm9vbCBTVkdU
ZXN0czo6aGFzRmVhdHVyZUZvckxlZ2FjeUJpbmRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3Rz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgJKHJldmlzaW9u
IDIwODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxOCArMjEsMTUgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRQcm9wZXJ0eU1hY3Jvcy5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKKyNpbmNsdWRl
ICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U1ZHRWxlbWVudDsKK2NsYXNzIFNWR1N0cmluZ0xpc3Q7CiAKIGNsYXNzIFNWR1Rlc3RzIHsKIHB1
YmxpYzoKLSAgICBTVkdTdHJpbmdMaXN0JiByZXF1aXJlZEZlYXR1cmVzKCk7Ci0gICAgU1ZHU3Ry
aW5nTGlzdCYgcmVxdWlyZWRFeHRlbnNpb25zKCk7Ci0gICAgU1ZHU3RyaW5nTGlzdCYgc3lzdGVt
TGFuZ3VhZ2UoKTsKLQogICAgIHN0YXRpYyBib29sIGhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
KTsKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIApAQCAtNTAsMTYgKzQ3LDIwIEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICBTVkdUZXN0cygpOwogCi0gICAgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwotICAgIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwot
ICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCk7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVu
dCYpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxlbWVu
dCYpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiBzeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50Jik7
CisKKyAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50Jik7Cisg
ICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50Jik7CisgICAg
dm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQmKTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIHN5bmNocm9uaXplQXR0cmlidXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4mLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKKyAgICB2b2lkIHN5bmNocm9uaXplQXR0
cmlidXRlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBTVkdTeW5jaHJvbml6YWJsZUFuaW1h
dGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdFZhbHVlcz4mLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKTsKIAotICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxT
VkdTdHJpbmdMaXN0PiBtX3JlcXVpcmVkRmVhdHVyZXM7Ci0gICAgU1ZHU3luY2hyb25pemFibGVB
bmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1fcmVxdWlyZWRFeHRlbnNpb25zOwotICAg
IFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJpbmdMaXN0PiBtX3N5c3Rl
bUxhbmd1YWdlOworICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJp
bmdMaXN0VmFsdWVzPiBtX3JlcXVpcmVkRmVhdHVyZXM7CisgICAgU1ZHU3luY2hyb25pemFibGVB
bmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3RWYWx1ZXM+IG1fcmVxdWlyZWRFeHRlbnNpb25z
OworICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJpbmdMaXN0VmFs
dWVzPiBtX3N5c3RlbUxhbmd1YWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGVzdHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAg
ICAgTm9JbnRlcmZhY2VPYmplY3QsCiAgICAgU3VwcHJlc3NUb0pTT2JqZWN0LAogXSBpbnRlcmZh
Y2UgU1ZHVGVzdHMgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHJlcXVp
cmVkRmVhdHVyZXM7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3QgcmVxdWly
ZWRFeHRlbnNpb25zOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHN5c3Rl
bUxhbmd1YWdlOworICAgIFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdM
aXN0IHJlcXVpcmVkRmVhdHVyZXM7CisgICAgW05ld09iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRl
IFNWR1N0cmluZ0xpc3QgcmVxdWlyZWRFeHRlbnNpb25zOworICAgIFtOZXdPYmplY3RdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHN5c3RlbUxhbmd1YWdlOwogCiAgICAgLy8gRklY
TUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25n
LgogICAgIGJvb2xlYW4gaGFzRXh0ZW5zaW9uKG9wdGlvbmFsIERPTVN0cmluZyBleHRlbnNpb24g
PSAidW5kZWZpbmVkIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDkgKzI2LDkgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR1RleHQuaCIKICNpbmNsdWRlICJTVkdBbHRHbHlwaEVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJTVkdMZW5ndGhMaXN0LmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgorI2luY2x1ZGUg
IlNWR051bWJlckxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdUUmVmRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR1RTcGFuRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50LmgiCkBA
IC02MCw3ICs2MCw3IEBAIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGkK
IHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgU1ZHTGVuZ3RoTGlzdCBuZXdMaXN0
OworICAgICAgICBTVkdMZW5ndGhMaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3Qu
cGFyc2UodmFsdWUsIExlbmd0aE1vZGVXaWR0aCk7CiAgICAgICAgIGRldGFjaEFuaW1hdGVkWExp
c3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAgIHNldFhCYXNlVmFsdWUobmV3TGlz
dCk7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFy
c2VBdHQKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAg
ICAgU1ZHTGVuZ3RoTGlzdCBuZXdMaXN0OworICAgICAgICBTVkdMZW5ndGhMaXN0VmFsdWVzIG5l
d0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUsIExlbmd0aE1vZGVIZWlnaHQpOwog
ICAgICAgICBkZXRhY2hBbmltYXRlZFlMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAg
ICAgICBzZXRZQmFzZVZhbHVlKG5ld0xpc3QpOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlQXR0CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OmR4QXR0cikgewotICAgICAgICBTVkdMZW5ndGhMaXN0IG5ld0xpc3Q7CisgICAg
ICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbmV3TGlzdDsKICAgICAgICAgbmV3TGlzdC5wYXJzZSh2
YWx1ZSwgTGVuZ3RoTW9kZVdpZHRoKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWREeExpc3RXcmFw
cGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAgIHNldER4QmFzZVZhbHVlKG5ld0xpc3QpOwpA
QCAtODQsNyArODQsNyBAQCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlQXR0
CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBT
VkdMZW5ndGhMaXN0IG5ld0xpc3Q7CisgICAgICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbmV3TGlz
dDsKICAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSwgTGVuZ3RoTW9kZUhlaWdodCk7CiAgICAg
ICAgIGRldGFjaEFuaW1hdGVkRHlMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAg
ICBzZXREeUJhc2VWYWx1ZShuZXdMaXN0KTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0dAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjpyb3RhdGVBdHRyKSB7Ci0gICAgICAgIFNWR051bWJlckxpc3QgbmV3TGlzdDsKKyAg
ICAgICAgU1ZHTnVtYmVyTGlzdFZhbHVlcyBuZXdMaXN0OwogICAgICAgICBuZXdMaXN0LnBhcnNl
KHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRSb3RhdGVMaXN0V3JhcHBlcnMobmV3TGlz
dC5zaXplKCkpOwogICAgICAgICBzZXRSb3RhdGVCYXNlVmFsdWUobmV3TGlzdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdUcmFuc2Zvcm0gOiBwdWJsaWMgU1ZHUHJv
cGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybVZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3Bl
cnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3JtVmFsdWUmIHZhbHVlKQorICAg
IHN0YXRpYyBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5p
bWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybVZhbHVlJiB2
YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnR5KTsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVHJhbnNmb3JtKGFuaW1hdGVkUHJvcGVydHksIHJvbGUs
IHZhbHVlKSk7CiAgICAgfQogCkBAIC0xMzYsOCArMTM1LDggQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBTVkdUcmFuc2Zvcm0oU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQ
cm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybVZhbHVlJiB2YWx1ZSkK
LSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtVmFsdWU+KGFuaW1hdGVk
UHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIFNWR1RyYW5zZm9ybShTVkdBbmltYXRlZFByb3Bl
cnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3Jt
VmFsdWUmIHZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1W
YWx1ZT4oJmFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQogICAgIHsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAJKHJldmlzaW9uIDIwODc1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5z
Zm9ybS5oIgotI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zv
cm1hYmxlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVJlZjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0
ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4JiBtYXRyaXgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgobWF0cml4
KTsKLX0KLQotUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y29uc29saWRhdGUo
KQotewotICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7Ci0gICAgaWYgKCFjb25jYXRlbmF0ZSht
YXRyaXgpKQotICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtOjpjcmVhdGUoKTsKLQotICAgIFNW
R1RyYW5zZm9ybVZhbHVlIHRyYW5zZm9ybShtYXRyaXgpOwotICAgIGNsZWFyKCk7Ci0gICAgYXBw
ZW5kKHRyYW5zZm9ybSk7Ci0gICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKHRyYW5zZm9y
bSk7Ci19Ci0KLWJvb2wgU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0ZW5hdGUoQWZmaW5lVHJhbnNm
b3JtJiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsK
LSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHJlc3VsdCAqPSBhdChpKS5tYXRyaXgo
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgU1ZHVHJhbnNmb3JtTGlzdDo6dmFs
dWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIHVu
c2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0KGkpLnZhbHVlQXNTdHJpbmco
KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotdm9pZCBT
VkdUcmFuc2Zvcm1MaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIHRyYW5zZm9ybSkKLXsKLSAgICBh
dXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcodHJhbnNmb3JtKS51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogc3RhcnQgPSB1cGNvbnZlcnRlZENo
YXJhY3RlcnM7Ci0gICAgaWYgKCFTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJp
YnV0ZSgqdGhpcywgc3RhcnQsIHN0YXJ0ICsgdHJhbnNmb3JtLmxlbmd0aCgpKSkKLSAgICAgICAg
Y2xlYXIoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5o
CShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyOSArMjAsNTggQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5o
IgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNWR1RyYW5zZm9ybUxpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR1RyYW5zZm9y
bVZhbHVlLCAxPiB7CitjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0IGZpbmFsIDogcHVibGljIFNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4gewogcHVibGljOgotICAg
IFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4
JikgY29uc3Q7Ci0gICAgUmVmPFNWR1RyYW5zZm9ybT4gY29uc29saWRhdGUoKTsKKyAgICB1c2lu
ZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmY8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz47CisgICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNo
ZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKIAotICAg
IGJvb2wgY29uY2F0ZW5hdGUoQWZmaW5lVHJhbnNmb3JtJiByZXN1bHQpIGNvbnN0OwotIAotICAg
IFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Ci0gICAgdm9pZCBwYXJzZShjb25zdCBTdHJp
bmcmKTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5z
Zm9ybUxpc3Q+IHsKLSAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtTGlzdCBpbml0aWFsVmFsdWUoKSB7
IHJldHVybiB7IH07IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1RyYW5z
Zm9ybUxpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Ci0KLSAgICB1
c2luZyBMaXN0SXRlbVR5cGUgPSBTVkdUcmFuc2Zvcm1WYWx1ZTsKLSAgICB1c2luZyBMaXN0SXRl
bVRlYXJPZmYgPSBTVkdUcmFuc2Zvcm07CisgICAgc3RhdGljIFJlZjxTVkdUcmFuc2Zvcm1MaXN0
PiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBT
VkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYgdmFsdWVzLCBMaXN0
V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR1RyYW5zZm9ybUxpc3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFw
cGVycykpOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPFJlZjxTVkdUcmFuc2Zvcm0+PiBjcmVh
dGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCYgbWF0cml4KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVzLT5jcmVhdGVTVkdU
cmFuc2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8UmVm
UHRyPFNWR1RyYW5zZm9ybT4+IGNvbnNvbGlkYXRlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3ZhbHVlcyk7CisgICAgICAgIEFTU0VSVChtX3dyYXBwZXJzKTsKKworICAgICAgICBhdXRvIHJl
c3VsdCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAg
IEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIEFTU0VSVCht
X3ZhbHVlcy0+c2l6ZSgpID09IG1fd3JhcHBlcnMtPnNpemUoKSk7CisKKyAgICAgICAgLy8gU3Bl
YzogSWYgdGhlIGxpc3Qgd2FzIGVtcHR5LCB0aGVuIGEgdmFsdWUgb2YgbnVsbCBpcyByZXR1cm5l
ZC4KKyAgICAgICAgaWYgKG1fdmFsdWVzLT5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICBkZXRhY2hMaXN0V3JhcHBlcnMoMCk7CisgICAgICAgIAorICAg
ICAgICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiB3cmFwcGVyID0gbV92YWx1ZXMtPmNvbnNvbGlkYXRl
KCk7CisgICAgICAgIG1fd3JhcHBlcnMtPmFwcGVuZCh3cmFwcGVyLmdldCgpKTsKKworICAgICAg
ICBBU1NFUlQobV92YWx1ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLT5zaXplKCkpOworICAgICAg
ICByZXR1cm4gV1RGTW92ZSh3cmFwcGVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU1ZHVHJh
bnNmb3JtTGlzdChBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHks
IFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiB2YWx1ZXMsIExp
c3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQorICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmY8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVz
LCB3cmFwcGVycykKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcAko
cmV2aXNpb24gMjA4NzA1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlz
dC5jcHA6MjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKKworI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKKyNp
bmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxTVkdUcmFuc2Zvcm0+IFNWR1Ry
YW5zZm9ybUxpc3Q6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4JiBtYXRy
aXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9y
bUZyb21NYXRyaXgobWF0cml4KTsKK30KKworUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3Jt
TGlzdDo6Y29uc29saWRhdGUoKQoreworICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CisgICAg
aWYgKCFjb25jYXRlbmF0ZShtYXRyaXgpKQorICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtOjpj
cmVhdGUoKTsKKworICAgIFNWR1RyYW5zZm9ybVZhbHVlIHRyYW5zZm9ybShtYXRyaXgpOworICAg
IGNsZWFyKCk7CisgICAgYXBwZW5kKHRyYW5zZm9ybSk7CisgICAgcmV0dXJuIFNWR1RyYW5zZm9y
bTo6Y3JlYXRlKHRyYW5zZm9ybSk7Cit9CisKK2Jvb2wgU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0
ZW5hdGUoQWZmaW5lVHJhbnNmb3JtJiByZXN1bHQpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgc2l6
ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3Vs
dCAqPSBhdChpKS5tYXRyaXgoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgU1ZH
VHJhbnNmb3JtTGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoaSA+IDApCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0
KGkpLnZhbHVlQXNTdHJpbmcoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKK30KKwordm9pZCBTVkdUcmFuc2Zvcm1MaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIHRy
YW5zZm9ybSkKK3sKKyAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXco
dHJhbnNmb3JtKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogc3Rh
cnQgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgaWYgKCFTVkdUcmFuc2Zvcm1hYmxlOjpw
YXJzZVRyYW5zZm9ybUF0dHJpYnV0ZSgqdGhpcywgc3RhcnQsIHN0YXJ0ICsgdHJhbnNmb3JtLmxl
bmd0aCgpKSkKKyAgICAgICAgY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcAko
cmV2aXNpb24gMjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RW
YWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKKyNpbmNsdWRlICJT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
ICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8U1ZHVHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVh
dGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCYgbWF0cml4KSBjb25zdAorUmVmPFNW
R1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJv
bU1hdHJpeChTVkdNYXRyaXgmIG1hdHJpeCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHU1ZHRWxl
bWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChtYXRyaXgpOwogfQogCi1SZWY8U1ZH
VHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25zb2xpZGF0ZSgpCitSZWY8U1ZHVHJhbnNm
b3JtPiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpjb25zb2xpZGF0ZSgpCiB7CiAgICAgQWZmaW5l
VHJhbnNmb3JtIG1hdHJpeDsKICAgICBpZiAoIWNvbmNhdGVuYXRlKG1hdHJpeCkpCkBAIC00NSw3
ICs0NSw3IEBAIFJlZjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNvbnMKICAgICBy
ZXR1cm4gU1ZHVHJhbnNmb3JtOjpjcmVhdGUodHJhbnNmb3JtKTsKIH0KIAotYm9vbCBTVkdUcmFu
c2Zvcm1MaXN0Ojpjb25jYXRlbmF0ZShBZmZpbmVUcmFuc2Zvcm0mIHJlc3VsdCkgY29uc3QKK2Jv
b2wgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6Y29uY2F0ZW5hdGUoQWZmaW5lVHJhbnNmb3JtJiBy
ZXN1bHQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBp
ZiAoIXNpemUpCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0
ZW5hdGUoQWZmaW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFNWR1RyYW5zZm9ybUxp
c3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAorU3RyaW5nIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6
OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAg
ICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwpAQCAtNzEsNyArNzEsNyBAQCBTdHJpbmcg
U1ZHVHJhbnNmb3JtTGlzdDo6dmFsdWVBc1N0cmluZygpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAotdm9pZCBTVkdUcmFuc2Zvcm1MaXN0OjpwYXJzZShjb25zdCBTdHJpbmcm
IHRyYW5zZm9ybSkKK3ZvaWQgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3Ry
aW5nJiB0cmFuc2Zvcm0pCiB7CiAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJp
bmdWaWV3KHRyYW5zZm9ybSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgY29uc3QgVUNo
YXIqIHN0YXJ0ID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDUpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6MjA4NzA1KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZH
UHJvcGVydHlUcmFpdHMuaCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHVHJhbnNmb3Jt
TGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U1ZHVHJhbnNmb3JtVmFsdWUsIDE+IHsKK3B1Ymxp
YzoKKyAgICBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNW
R01hdHJpeCYpIGNvbnN0OworICAgIFJlZjxTVkdUcmFuc2Zvcm0+IGNvbnNvbGlkYXRlKCk7CisK
KyAgICBib29sIGNvbmNhdGVuYXRlKEFmZmluZVRyYW5zZm9ybSYgcmVzdWx0KSBjb25zdDsKKyAK
KyAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OworICAgIHZvaWQgcGFyc2UoY29uc3Qg
U3RyaW5nJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdU
cmFuc2Zvcm1MaXN0PiB7CisgICAgc3RhdGljIFNWR1RyYW5zZm9ybUxpc3QgaW5pdGlhbFZhbHVl
KCkgeyByZXR1cm4geyB9OyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdU
cmFuc2Zvcm1MaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorCisg
ICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU1ZHVHJhbnNmb3JtVmFsdWU7CisgICAgdXNpbmcgTGlz
dEl0ZW1UZWFyT2ZmID0gU1ZHVHJhbnNmb3JtOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oCShy
ZXZpc2lvbiAyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNWR1RyYW5zZm9ybUxpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNW
R1RyYW5zZm9ybVZhbHVlLCAxPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgU1ZHTGlz
dFByb3BlcnR5VGVhck9mZjsKKworY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKKworY2xhc3MgU1ZH
VHJhbnNmb3JtTGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U1ZHVHJhbnNmb3JtVmFs
dWUsIDE+IHsKIHB1YmxpYzoKICAgICBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGVTVkdUcmFuc2Zv
cm1Gcm9tTWF0cml4KFNWR01hdHJpeCYpIGNvbnN0OwogICAgIFJlZjxTVkdUcmFuc2Zvcm0+IGNv
bnNvbGlkYXRlKCk7CkBAIC0zNywxMiArNDIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcGFyc2Uo
Y29uc3QgU3RyaW5nJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdUcmFuc2Zvcm1MaXN0PiB7Ci0gICAgc3RhdGljIFNWR1RyYW5zZm9ybUxpc3QgaW5pdGlh
bFZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBTVkdUcmFuc2Zvcm1MaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsg
fQordGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcz4geworICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIGluaXRpYWxWYWx1ZSgp
IHsgcmV0dXJuIHsgfTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHVHJh
bnNmb3JtTGlzdFZhbHVlcyYgbGlzdCkgeyByZXR1cm4gbGlzdC52YWx1ZUFzU3RyaW5nKCk7IH0K
IAogICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR1RyYW5zZm9ybVZhbHVlOwogICAgIHVzaW5n
IExpc3RJdGVtVGVhck9mZiA9IFNWR1RyYW5zZm9ybTsKKyAgICB1c2luZyBMaXN0UHJvcGVydHlU
ZWFyT2ZmID0gU1ZHVHJhbnNmb3JtTGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAJKHJldmlzaW9uIDIw
ODc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2luY2x1
ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xODEsNyArMTgxLDcgQEAgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5
cGUgU1ZHVAogICAgIHJldHVybiB0eXBlOwogfQogCi1ib29sIFNWR1RyYW5zZm9ybWFibGU6OnBh
cnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3QmIGxpc3QsIGNvbnN0IFVDaGFy
KiYgY3VyclRyYW5zZm9ybSwgY29uc3QgVUNoYXIqIGVuZCwgVHJhbnNmb3JtUGFyc2luZ01vZGUg
bW9kZSkKK2Jvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZH
VHJhbnNmb3JtTGlzdFZhbHVlcyYgbGlzdCwgY29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBj
b25zdCBVQ2hhciogZW5kLCBUcmFuc2Zvcm1QYXJzaW5nTW9kZSBtb2RlKQogewogICAgIGlmICht
b2RlID09IENsZWFyTGlzdCkKICAgICAgICAgbGlzdC5jbGVhcigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07Ci1j
bGFzcyBTVkdUcmFuc2Zvcm1MaXN0OworY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczsKIAog
Y2xhc3MgU1ZHVHJhbnNmb3JtYWJsZSA6IHB1YmxpYyBTVkdMb2NhdGFibGUgewogcHVibGljOgpA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zvcm1hYmxl
KCk7CiAKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zv
cm1MaXN0JiwgY29uc3QgVUNoYXIqJiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQsIFRyYW5zZm9ybVBh
cnNpbmdNb2RlIG1vZGUgPSBDbGVhckxpc3QpOworICAgIHN0YXRpYyBib29sIHBhcnNlVHJhbnNm
b3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmLCBjb25zdCBVQ2hhciomIHB0ciwg
Y29uc3QgVUNoYXIqIGVuZCwgVHJhbnNmb3JtUGFyc2luZ01vZGUgbW9kZSA9IENsZWFyTGlzdCk7
CiAgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6
U1ZHVHJhbnNmb3JtVHlwZSwgY29uc3QgVUNoYXIqJiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQsIFNW
R1RyYW5zZm9ybVZhbHVlJik7CiAgICAgc3RhdGljIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFu
c2Zvcm1UeXBlIHBhcnNlVHJhbnNmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2
ICsyMiw3IEBACiAjaW5jbHVkZSAiU1ZHVmlld0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTUxLDEwICs1MiwxNSBAQCBSZWY8U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50
OjpjcmVhCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVmlld0VsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKIH0KIAorUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1ZpZXdFbGVtZW50Ojp2aWV3
VGFyZ2V0KCkKK3sKKyAgICByZXR1cm4gU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKCp0aGlzLCBtX3Zp
ZXdUYXJnZXQpOworfQorCiB2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0cikKLSAgICAgICAgdmlld1Rhcmdl
dCgpLnJlc2V0KHZhbHVlKTsKKyAgICAgICAgbV92aWV3VGFyZ2V0LnJlc2V0KHZhbHVlKTsKIAog
ICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKICAgICBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmlidXRlKHRoaXMsIG5hbWUsIHZh
bHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCShyZXZpc2lvbiAyMDg3
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMjIgKzI2LDIxIEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdC
b3guaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlz
dFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTVkdWaWV3RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmll
d0JveCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1pvb21BbmRQYW4g
eworY2xhc3MgU1ZHU3RyaW5nTGlzdDsKKworY2xhc3MgU1ZHVmlld0VsZW1lbnQgZmluYWwgOiBw
dWJsaWMgU1ZHRWxlbWVudCwgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIHB1
YmxpYyBTVkdGaXRUb1ZpZXdCb3gsIHB1YmxpYyBTVkdab29tQW5kUGFuIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFNWR1ZpZXdFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKICAgICB1c2luZyBTVkdFbGVtZW50OjpyZWY7CiAgICAgdXNpbmcgU1ZH
RWxlbWVudDo6ZGVyZWY7CiAKLSAgICBTVkdTdHJpbmdMaXN0JiB2aWV3VGFyZ2V0KCkgeyByZXR1
cm4gbV92aWV3VGFyZ2V0OyB9CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHZpZXdUYXJnZXQoKTsK
ICAgICBTVkdab29tQW5kUGFuVHlwZSB6b29tQW5kUGFuKCkgY29uc3QgeyByZXR1cm4gbV96b29t
QW5kUGFuOyB9CiAgICAgdm9pZCBzZXRab29tQW5kUGFuKHVuc2lnbmVkIHNob3J0IHpvb21BbmRQ
YW4pIHsgbV96b29tQW5kUGFuID0gU1ZHWm9vbUFuZFBhbjo6cGFyc2VGcm9tTnVtYmVyKHpvb21B
bmRQYW4pOyB9CiAKQEAgLTYwLDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBFTkRfREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBTVkdab29tQW5kUGFuVHlwZSBtX3pvb21BbmRQYW47
Ci0gICAgU1ZHU3RyaW5nTGlzdCBtX3ZpZXdUYXJnZXQ7CisgICAgU1ZHU3RyaW5nTGlzdFZhbHVl
cyBtX3ZpZXdUYXJnZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5pZGwJKHJldmlzaW9uIDIwODc1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcg
KzI0LDcgQEAKICAqLwogCiBpbnRlcmZhY2UgU1ZHVmlld0VsZW1lbnQgOiBTVkdFbGVtZW50IHsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCB2aWV3VGFyZ2V0OworICAgIFtO
ZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHZpZXdUYXJnZXQ7CiB9
OwogCiBTVkdWaWV3RWxlbWVudCBpbXBsZW1lbnRzIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHJldmlzaW9uIDIwODc1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlNW
R1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTEwNyw3ICsxMDgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTVkdW
aWV3U3BlYzo6c2V0Wm9vbUFuCiAKIFN0cmluZyBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtU3RyaW5n
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlz
dD46OnRvU3RyaW5nKG1fdHJhbnNmb3JtKTsKKyAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz46OnRvU3RyaW5nKG1fdHJhbnNmb3JtKTsKIH0KIAogU3Ry
aW5nIFNWR1ZpZXdTcGVjOjp2aWV3Qm94U3RyaW5nKCkgY29uc3QKQEAgLTEzMCwxMiArMTMxLDEy
IEBAIFNWR0VsZW1lbnQqIFNWR1ZpZXdTcGVjOjp2aWV3VGFyZ2V0KCkgY28KICAgICByZXR1cm4g
ZG93bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCk7CiB9CiAKLVJlZlB0cjxTVkdUcmFuc2Zvcm1M
aXN0UHJvcGVydHlUZWFyT2ZmPiBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtKCkKK1JlZlB0cjxTVkdU
cmFuc2Zvcm1MaXN0PiBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtKCkKIHsKICAgICBpZiAoIW1fY29u
dGV4dEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIFJldHVybiB0aGUg
YW5pbVZhbCBoZXJlLCBhcyBpdHMgcmVhZG9ubHkgYnkgZGVmYXVsdCAtIHdoaWNoIGlzIGV4YWN0
bHkgd2hhdCB3ZSB3YW50IGhlcmUuCi0gICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZH
VHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZj4oc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdD4obG9va3VwT3JDcmVhdGVUcmFuc2Zvcm1XcmFwcGVyKHRoaXMp
KS0+YW5pbVZhbCgpKTsKKyAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdD4obG9va3VwT3JDcmVhdGVUcmFuc2Zvcm1XcmFwcGVyKHRoaXMpKS0+
YW5pbVZhbCgpOwogfQogCiBSZWZQdHI8U1ZHQW5pbWF0ZWRSZWN0PiBTVkdWaWV3U3BlYzo6dmll
d0JveEFuaW1hdGVkKCkKQEAgLTE3MCwxNSArMTcxLDE1IEBAIFJlZjxTVkdBbmltYXRlZFByb3Bl
cnR5PiBTVkdWaWV3U3BlYzo6bG8KIHsKICAgICBBU1NFUlQob3duZXJUeXBlKTsKICAgICBBU1NF
UlQob3duZXJUeXBlLT5tX2NvbnRleHRFbGVtZW50KTsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0VsZW1lbnQsIFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdCwgU1ZHVHJhbnNmb3JtTGlzdD4ob3duZXJUeXBlLT5tX2NvbnRleHRFbGVtZW50
LCB0cmFuc2Zvcm1Qcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3RyYW5zZm9ybSk7CisgICAg
cmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdFbGVt
ZW50LCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KG93
bmVyVHlwZS0+bV9jb250ZXh0RWxlbWVudCwgdHJhbnNmb3JtUHJvcGVydHlJbmZvKCksIG93bmVy
VHlwZS0+bV90cmFuc2Zvcm0pOwogfQogCiB2b2lkIFNWR1ZpZXdTcGVjOjpyZXNldCgpCiB7CiAg
ICAgbV96b29tQW5kUGFuID0gU1ZHWm9vbUFuZFBhbk1hZ25pZnk7CiAgICAgbV90cmFuc2Zvcm0u
Y2xlYXIoKTsKLSAgICBtX3ZpZXdCb3ggPSBGbG9hdFJlY3QoKTsKLSAgICBtX3ByZXNlcnZlQXNw
ZWN0UmF0aW8gPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUoKTsKKyAgICBtX3ZpZXdCb3gg
PSB7IH07CisgICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvID0geyB9OwogICAgIG1fdmlld1Rhcmdl
dFN0cmluZyA9IGVtcHR5U3RyaW5nKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3U3BlYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3Bl
Yy5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTMgKzIyLDEzIEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRSZWN0LmgiCiAj
aW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5o
IgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdab29t
QW5kUGFuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsKLWNs
YXNzIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY7CitjbGFzcyBTVkdUcmFuc2Zvcm1M
aXN0OwogCiBjbGFzcyBTVkdWaWV3U3BlYyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR1Zp
ZXdTcGVjPiwgcHVibGljIFNWR1pvb21BbmRQYW4sIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3ggewog
cHVibGljOgpAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldENvbnRleHRF
bGVtZW50KCkgeyBtX2NvbnRleHRFbGVtZW50ID0gbnVsbHB0cjsgfQogCiAgICAgLy8gQ3VzdG9t
IG5vbi1hbmltYXRlZCAndHJhbnNmb3JtJyBwcm9wZXJ0eS4KLSAgICBSZWZQdHI8U1ZHVHJhbnNm
b3JtTGlzdFByb3BlcnR5VGVhck9mZj4gdHJhbnNmb3JtKCk7Ci0gICAgU1ZHVHJhbnNmb3JtTGlz
dCB0cmFuc2Zvcm1CYXNlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAg
IFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiB0cmFuc2Zvcm0oKTsKKyAgICBTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzIHRyYW5zZm9ybUJhc2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3Jt
OyB9CiAKICAgICAvLyBDdXN0b20gYW5pbWF0ZWQgJ3ZpZXdCb3gnIHByb3BlcnR5LgogICAgIFJl
ZlB0cjxTVkdBbmltYXRlZFJlY3Q+IHZpZXdCb3hBbmltYXRlZCgpOwpAQCAtODQsNyArODQsNyBA
QCBwcml2YXRlOgogCiAgICAgU1ZHRWxlbWVudCogbV9jb250ZXh0RWxlbWVudDsKICAgICBTVkda
b29tQW5kUGFuVHlwZSBtX3pvb21BbmRQYW4geyBTVkdab29tQW5kUGFuTWFnbmlmeSB9OwotICAg
IFNWR1RyYW5zZm9ybUxpc3QgbV90cmFuc2Zvcm07CisgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cyBtX3RyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgbV92aWV3Qm94OwogICAgIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CiAgICAgU3RyaW5nIG1fdmll
d1RhcmdldFN0cmluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lv
biAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjcgKzM2LDMzIEBAIHB1
YmxpYzoKICAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRy
YWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVRlYXJPZmY7CiAgICAgdXNpbmcgTGlzdFdyYXBw
ZXJDYWNoZSA9IFZlY3RvcjxSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPj47CiAgICAgdXNpbmcgTGlz
dFByb3BlcnR5ID0gU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT47Ci0gICAgdXNpbmcgTGlz
dFByb3BlcnR5VGVhck9mZiA9IFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPjsK
KyAgICB1c2luZyBMaXN0UHJvcGVydHlUZWFyT2ZmID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFp
dHM8UHJvcGVydHlUeXBlPjo6TGlzdFByb3BlcnR5VGVhck9mZjsKICAgICB1c2luZyBDb250ZW50
VHlwZSA9IFByb3BlcnR5VHlwZTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPExpc3RQcm9wZXJ0eT4g
YmFzZVZhbCgpCisgICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8
UHJvcGVydHlUeXBlPj4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRl
ZFByb3BlcnR5VHlwZSwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCisgICAgeworICAgICAgICBBU1NF
UlQoY29udGV4dEVsZW1lbnQpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPihjb250ZXh0RWxlbWVudCwgYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykpOworICAgIH0KKworICAg
IHZpcnR1YWwgUmVmPExpc3RQcm9wZXJ0eVRlYXJPZmY+IGJhc2VWYWwoKQogICAgIHsKICAgICAg
ICAgaWYgKG1fYmFzZVZhbCkKLSAgICAgICAgICAgIHJldHVybiBtX2Jhc2VWYWw7CisgICAgICAg
ICAgICByZXR1cm4gKm1fYmFzZVZhbDsKIAotICAgICAgICBhdXRvIHByb3BlcnR5ID0gTGlzdFBy
b3BlcnR5VGVhck9mZjo6Y3JlYXRlKHRoaXMsIEJhc2VWYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFw
cGVycyk7CisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBMaXN0UHJvcGVydHlUZWFyT2ZmOjpjcmVh
dGUoKnRoaXMsIEJhc2VWYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7CiAgICAgICAgIG1f
YmFzZVZhbCA9IHByb3BlcnR5LnB0cigpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShwcm9wZXJ0
eSk7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0
cjxMaXN0UHJvcGVydHk+IGFuaW1WYWwoKQorICAgIHZpcnR1YWwgUmVmPExpc3RQcm9wZXJ0eVRl
YXJPZmY+IGFuaW1WYWwoKQogICAgIHsKICAgICAgICAgaWYgKG1fYW5pbVZhbCkKLSAgICAgICAg
ICAgIHJldHVybiBtX2FuaW1WYWw7CisgICAgICAgICAgICByZXR1cm4gKm1fYW5pbVZhbDsKIAot
ICAgICAgICBhdXRvIHByb3BlcnR5ID0gTGlzdFByb3BlcnR5VGVhck9mZjo6Y3JlYXRlKHRoaXMs
IEFuaW1WYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7CisgICAgICAgIGF1dG8gcHJvcGVy
dHkgPSBMaXN0UHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUoKnRoaXMsIEFuaW1WYWxSb2xlLCBtX3Zh
bHVlcywgbV93cmFwcGVycyk7CiAgICAgICAgIG1fYW5pbVZhbCA9IHByb3BlcnR5LnB0cigpOwot
ICAgICAgICByZXR1cm4gV1RGTW92ZShwcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBwcm9wZXJ0
eTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0eTsgfQpAQCAtNzIsMTUgKzc4LDEzIEBAIHB1YmxpYzoK
ICAgICBpbnQgZmluZEl0ZW0oU1ZHUHJvcGVydHkqIHByb3BlcnR5KQogICAgIHsKICAgICAgICAg
Ly8gVGhpcyBzaG91bGQgZXZlciBiZSBjYWxsZWQgZm9yIG91ciBiYXNlVmFsLCBhcyBhbmltVmFs
IGNhbid0IG1vZGlmeSB0aGUgbGlzdC4KLSAgICAgICAgLy8gSXQncyBzYWZlIHRvIGNhc3QgdG8g
TGlzdFByb3BlcnR5VGVhck9mZiBoZXJlIGFzIGFsbCBjbGFzc2VzIGluaGVyaXRpbmcgZnJvbSB1
cyBzdXBwbHkgdGhlaXIgb3duIHJlbW92ZUl0ZW1Gcm9tTGlzdCgpIG1ldGhvZC4KLSAgICAgICAg
cmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8TGlzdFByb3BlcnR5VGVhck9mZj4oYmFzZVZhbCgp
KS0+ZmluZEl0ZW0oc3RhdGljX2Nhc3Q8TGlzdEl0ZW1UZWFyT2ZmKj4ocHJvcGVydHkpKTsKKyAg
ICAgICAgcmV0dXJuIGJhc2VWYWwoKS0+ZmluZEl0ZW0oc3RhdGljX2Nhc3Q8TGlzdEl0ZW1UZWFy
T2ZmKj4ocHJvcGVydHkpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZUl0ZW1Gcm9tTGlzdChz
aXplX3QgaXRlbUluZGV4LCBib29sIHNob3VsZFN5bmNocm9uaXplV3JhcHBlcnMpCiAgICAgewog
ICAgICAgICAvLyBUaGlzIHNob3VsZCBldmVyIGJlIGNhbGxlZCBmb3Igb3VyIGJhc2VWYWwsIGFz
IGFuaW1WYWwgY2FuJ3QgbW9kaWZ5IHRoZSBsaXN0LgotICAgICAgICAvLyBJdCdzIHNhZmUgdG8g
Y2FzdCB0byBMaXN0UHJvcGVydHlUZWFyT2ZmIGhlcmUgYXMgYWxsIGNsYXNzZXMgaW5oZXJpdGlu
ZyBmcm9tIHVzIHN1cHBseSB0aGVpciBvd24gcmVtb3ZlSXRlbUZyb21MaXN0KCkgbWV0aG9kLgot
ICAgICAgICBzdGF0aWNfcG9pbnRlcl9jYXN0PExpc3RQcm9wZXJ0eVRlYXJPZmY+KGJhc2VWYWwo
KSktPnJlbW92ZUl0ZW1Gcm9tTGlzdChpdGVtSW5kZXgsIHNob3VsZFN5bmNocm9uaXplV3JhcHBl
cnMpOworICAgICAgICBiYXNlVmFsKCktPnJlbW92ZUl0ZW1Gcm9tTGlzdChpdGVtSW5kZXgsIHNo
b3VsZFN5bmNocm9uaXplV3JhcHBlcnMpOwogICAgIH0KIAogICAgIHZvaWQgZGV0YWNoTGlzdFdy
YXBwZXJzKHVuc2lnbmVkIG5ld0xpc3RTaXplKQpAQCAtMTM4LDkgKzE0Miw5IEBAIHB1YmxpYzoK
IAogICAgICAgICAvLyBFdmVudHVhbGx5IHRoZSB3cmFwcGVyIGxpc3QgbmVlZHMgc3luY2hyb25p
emF0aW9uIGJlY2F1c2UgYW55IFNWR0FuaW1hdGVMZW5ndGhMaXN0OjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKCkgY2FsbCBtYXkKICAgICAgICAgLy8gbXV0YXRlIHRoZSBsZW5ndGggb2Ygb3VyIHZh
bHVlcygpIGxpc3QsIGFuZCB0aHVzIHRoZSB3cmFwcGVyKCkgY2FjaGUgbmVlZHMgc3luY2hyb25p
emF0aW9uLCB0byBoYXZlIHRoZSBzYW1lIHNpemUuCi0gICAgICAgIC8vIEFsc28gZXhpc3Rpbmcg
d3JhcHBlcnMgd2hpY2ggcG9pbnQgZGlyZWN0bHkgYXQgZWxlbWVudHMgaW4gdGhlIGV4aXN0aW5n
IFNWR0xlbmd0aExpc3QgaGF2ZSB0byBiZSBkZXRhY2hlZCAoc28gYSBjb3B5CisgICAgICAgIC8v
IEFsc28gZXhpc3Rpbmcgd3JhcHBlcnMgd2hpY2ggcG9pbnQgZGlyZWN0bHkgYXQgZWxlbWVudHMg
aW4gdGhlIGV4aXN0aW5nIFNWR0xlbmd0aExpc3RWYWx1ZXMgaGF2ZSB0byBiZSBkZXRhY2hlZCAo
c28gYSBjb3B5CiAgICAgICAgIC8vIG9mIHRoZW0gaXMgY3JlYXRlZCwgc28gZXhpc3RpbmcgYW5p
bVZhbCB2YXJpYWJsZXMgaW4gSlMgYXJlIGtlcHQtYWxpdmUpLiBJZiB3ZSdkIGRldGFjaCB0aGVt
IGxhdGVyIHRoZSB1bmRlcmx5aW5nCi0gICAgICAgIC8vIFNWR0xlbmd0aExpc3Qgd2FzIGFscmVh
ZHkgbXV0YXRlZCwgYW5kIG91ciBsaXN0IGl0ZW0gd3JhcHBlciB0ZWFyIG9mZnMgd291bGQgcG9p
bnQgbm93aGVyZS4gQXNzZXJ0aW9ucyB3b3VsZCBmaXJlLgorICAgICAgICAvLyBTVkdMZW5ndGhM
aXN0VmFsdWVzIHdhcyBhbHJlYWR5IG11dGF0ZWQsIGFuZCBvdXIgbGlzdCBpdGVtIHdyYXBwZXIg
dGVhciBvZmZzIHdvdWxkIHBvaW50IG5vd2hlcmUuIEFzc2VydGlvbnMgd291bGQgZmlyZS4KICAg
ICAgICAgbV9hbmltYXRlZFByb3BlcnR5LT5kZXRhY2hMaXN0V3JhcHBlcnMobV9hbmltYXRlZFBy
b3BlcnR5LT52YWx1ZXMoKS5zaXplKCkpOwogCiAgICAgICAgIEFTU0VSVChtX2FuaW1hdGVkUHJv
cGVydHktPnZhbHVlcygpLnNpemUoKSA9PSBtX2FuaW1hdGVkUHJvcGVydHktPndyYXBwZXJzKCku
c2l6ZSgpKTsKQEAgLTE1OSwxMiArMTYzLDYgQEAgcHVibGljOgogICAgICAgICBzeW5jaHJvbml6
ZVdyYXBwZXJzSWZOZWVkZWQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+PiBjcmVhdGUoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVk
UHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+
KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgdmFs
dWVzKSk7Ci0gICAgfQotCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSwg
UHJvcGVydHlUeXBlJiB2YWx1ZXMpCiAgICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb250
ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpCkBAIC0xODIs
OCArMTgwLDggQEAgcHJvdGVjdGVkOgogICAgIC8vIENhY2hlIHRoZSByYXcgcG9pbnRlciBidXQg
cmV0dXJuIGEgUmVmUHRyPD4uIFRoaXMgd2lsbCBicmVhayB0aGUgY3ljbGljIHJlZmVyZW5jZQog
ICAgIC8vIGJldHdlZW4gU1ZHTGlzdFByb3BlcnR5VGVhck9mZiBhbmQgU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmIG9uY2UgdGhlIHByb3BlcnR5CiAgICAgLy8gcG9pbnRlciBpcyBub3Qg
bmVlZGVkLgotICAgIExpc3RQcm9wZXJ0eSogbV9iYXNlVmFsIHsgbnVsbHB0ciB9OwotICAgIExp
c3RQcm9wZXJ0eSogbV9hbmltVmFsIHsgbnVsbHB0ciB9OworICAgIExpc3RQcm9wZXJ0eVRlYXJP
ZmYqIG1fYmFzZVZhbCB7IG51bGxwdHIgfTsKKyAgICBMaXN0UHJvcGVydHlUZWFyT2ZmKiBtX2Fu
aW1WYWwgeyBudWxscHRyIH07CiAKICAgICBSZWZQdHI8TGlzdFByb3BlcnR5PiBtX2FuaW1hdGVk
UHJvcGVydHk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaAkocmV2aXNpb24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw2OSArMjMsNjggQEAKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogI2luY2x1
ZGUgIlNWR1BhdGhFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKLSNpbmNs
dWRlICJTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR1BhdGhV
dGlsaXRpZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdBbmltYXRlZFBh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZjxTVkdQYXRoU2VnTGlzdD4geworY2xhc3MgU1ZHQW5pbWF0ZWRQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZiBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUGF0aFNlZ0xpc3RWYWx1ZXM+IHsKIHB1YmxpYzoKLSAgICBSZWZQdHI8TGlz
dFByb3BlcnR5PiBiYXNlVmFsKCkgZmluYWwKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRM
aXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0VmFsdWVzPjsKKworICAgIHN0YXRpYyBS
ZWY8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gY3JlYXRlKFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBB
bmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMmIHZhbHVlcykKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlU
eXBlLCB2YWx1ZXMpKTsKKyAgICB9CisKKyAgICBSZWY8TGlzdFByb3BlcnR5VGVhck9mZj4gYmFz
ZVZhbCgpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9iYXNlVmFsKQotICAgICAgICAgICAg
cmV0dXJuIG1fYmFzZVZhbDsKKyAgICAgICAgICAgIHJldHVybiAqbV9iYXNlVmFsOwogCi0gICAg
ICAgIGF1dG8gcHJvcGVydHkgPSBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjo6Y3JlYXRl
KHRoaXMsIEJhc2VWYWxSb2xlLCBQYXRoU2VnVW5hbHRlcmVkUm9sZSwgbV92YWx1ZXMsIG1fd3Jh
cHBlcnMpOworICAgICAgICBhdXRvIHByb3BlcnR5ID0gU1ZHUGF0aFNlZ0xpc3Q6OmNyZWF0ZSgq
dGhpcywgQmFzZVZhbFJvbGUsIFBhdGhTZWdVbmFsdGVyZWRSb2xlLCBtX3ZhbHVlcywgbV93cmFw
cGVycyk7CiAgICAgICAgIG1fYmFzZVZhbCA9IHByb3BlcnR5LnB0cigpOwotICAgICAgICByZXR1
cm4gV1RGTW92ZShwcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eTsKICAgICB9CiAK
LSAgICBSZWZQdHI8TGlzdFByb3BlcnR5PiBhbmltVmFsKCkgZmluYWwKKyAgICBSZWY8TGlzdFBy
b3BlcnR5VGVhck9mZj4gYW5pbVZhbCgpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9hbmlt
VmFsKQotICAgICAgICAgICAgcmV0dXJuIG1fYW5pbVZhbDsKKyAgICAgICAgICAgIHJldHVybiAq
bV9hbmltVmFsOwogCi0gICAgICAgIGF1dG8gcHJvcGVydHkgPSBTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZjo6Y3JlYXRlKHRoaXMsIEFuaW1WYWxSb2xlLCBQYXRoU2VnVW5hbHRlcmVkUm9s
ZSwgbV92YWx1ZXMsIG1fd3JhcHBlcnMpOworICAgICAgICBhdXRvIHByb3BlcnR5ID0gU1ZHUGF0
aFNlZ0xpc3Q6OmNyZWF0ZSgqdGhpcywgQW5pbVZhbFJvbGUsIFBhdGhTZWdVbmFsdGVyZWRSb2xl
LCBtX3ZhbHVlcywgbV93cmFwcGVycyk7CiAgICAgICAgIG1fYW5pbVZhbCA9IHByb3BlcnR5LnB0
cigpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShwcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBw
cm9wZXJ0eTsKICAgICB9CiAKICAgICBpbnQgZmluZEl0ZW0oY29uc3QgUmVmUHRyPFNWR1BhdGhT
ZWc+JiBzZWdtZW50KQogICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgZXZlciBiZSBjYWxs
ZWQgZm9yIG91ciBiYXNlVmFsLCBhcyBhbmltVmFsIGNhbid0IG1vZGlmeSB0aGUgbGlzdC4KLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKj4o
YmFzZVZhbCgpLmdldCgpKS0+ZmluZEl0ZW0oc2VnbWVudCk7CisgICAgICAgIHJldHVybiBiYXNl
VmFsKCktPmZpbmRJdGVtKHNlZ21lbnQpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlSXRlbUZy
b21MaXN0KHNpemVfdCBpdGVtSW5kZXgsIGJvb2wgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycykK
ICAgICB7Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIGV2ZXIgYmUgY2FsbGVkIGZvciBvdXIgYmFz
ZVZhbCwgYXMgYW5pbVZhbCBjYW4ndCBtb2RpZnkgdGhlIGxpc3QuCi0gICAgICAgIHN0YXRpY19j
YXN0PFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKj4oYmFzZVZhbCgpLmdldCgpKS0+cmVt
b3ZlSXRlbUZyb21MaXN0KGl0ZW1JbmRleCwgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycyk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmPiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlU
eXBlLCBTVkdQYXRoU2VnTGlzdCYgdmFsdWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRl
eHRFbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykpOworICAgICAgICBiYXNlVmFsKCktPnJlbW92ZUl0
ZW1Gcm9tTGlzdChpdGVtSW5kZXgsIHNob3VsZFN5bmNocm9uaXplV3JhcHBlcnMpOwogICAgIH0K
IAotICAgIHVzaW5nIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQYXRoU2VnTGlz
dD46OmFuaW1hdGlvblN0YXJ0ZWQ7Ci0gICAgdm9pZCBhbmltYXRpb25TdGFydGVkKFNWR1BhdGhC
eXRlU3RyZWFtKiBieXRlU3RyZWFtLCBjb25zdCBTVkdQYXRoU2VnTGlzdCogYmFzZVZhbHVlKQor
ICAgIHVzaW5nIEJhc2U6OmFuaW1hdGlvblN0YXJ0ZWQ7CisgICAgdm9pZCBhbmltYXRpb25TdGFy
dGVkKFNWR1BhdGhCeXRlU3RyZWFtKiBieXRlU3RyZWFtLCBjb25zdCBTVkdQYXRoU2VnTGlzdFZh
bHVlcyogYmFzZVZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJ5dGVTdHJlYW0pOwogICAg
ICAgICBBU1NFUlQoYmFzZVZhbHVlKTsKICAgICAgICAgQVNTRVJUKCFtX2FuaW1hdGVkUGF0aEJ5
dGVTdHJlYW0pOwogICAgICAgICBtX2FuaW1hdGVkUGF0aEJ5dGVTdHJlYW0gPSBieXRlU3RyZWFt
OwogCi0gICAgICAgIC8vIFBhc3Mgc2hvdWxkT3duVmFsdWVzPXRydWUsIGFzIHRoZSBTVkdQYXRo
U2VnTGlzdCBsaWZldGltZSBpcyBzb2xlbHkgbWFuYWdlZCBieSBpdHMgdGVhciBvZmYgY2xhc3Mu
Ci0gICAgICAgIFNWR1BhdGhTZWdMaXN0KiBjb3B5ID0gbmV3IFNWR1BhdGhTZWdMaXN0KCpiYXNl
VmFsdWUpOwotICAgICAgICBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUGF0aFNl
Z0xpc3Q+OjphbmltYXRpb25TdGFydGVkKGNvcHksIHRydWUpOworICAgICAgICAvLyBQYXNzIHNo
b3VsZE93blZhbHVlcz10cnVlLCBhcyB0aGUgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMgbGlmZXRpbWUg
aXMgc29sZWx5IG1hbmFnZWQgYnkgaXRzIHRlYXIgb2ZmIGNsYXNzLgorICAgICAgICBhdXRvKiBj
b3B5ID0gbmV3IFNWR1BhdGhTZWdMaXN0VmFsdWVzKCpiYXNlVmFsdWUpOworICAgICAgICBCYXNl
OjphbmltYXRpb25TdGFydGVkKGNvcHksIHRydWUpOwogICAgIH0KIAogICAgIHZvaWQgYW5pbWF0
aW9uRW5kZWQoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYW5pbWF0ZWRQYXRoQnl0ZVN0cmVh
bSk7CiAgICAgICAgIG1fYW5pbWF0ZWRQYXRoQnl0ZVN0cmVhbSA9IG51bGxwdHI7Ci0gICAgICAg
IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQYXRoU2VnTGlzdD46OmFuaW1hdGlv
bkVuZGVkKCk7CisgICAgICAgIEJhc2U6OmFuaW1hdGlvbkVuZGVkKCk7CiAgICAgfQogCiAgICAg
dm9pZCBhbmltVmFsRGlkQ2hhbmdlKCkKQEAgLTk2LDE5ICs5NSwxOSBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIElmIHRoZSBhbmltVmFsIGlzIG9ic2VydmVkIGZyb20gSlMsIHdlIGhhdmUgdG8gdXBk
YXRlIGl0IG9uIGVhY2ggYW5pbWF0aW9uIHN0ZXAuCiAgICAgICAgIC8vIFRoaXMgaXMgYW4gZXhw
ZW5zaXZlIG9wZXJhdGlvbiBhbmQgb25seSBkb25lLCBpZiBzb21lb25lIGFjdHVhbGx5IG9ic2Vy
dmVzIHRoZSBhbmltYXRlZFBhdGhTZWdMaXN0KCkgd2hpbGUgYW4gYW5pbWF0aW9uIGlzIHJ1bm5p
bmcuCiAgICAgICAgIGlmIChwYXRoRWxlbWVudC0+aXNBbmltVmFsT2JzZXJ2ZWQoKSkgewotICAg
ICAgICAgICAgU1ZHUGF0aFNlZ0xpc3QmIGFuaW1hdGVkTGlzdCA9IGN1cnJlbnRBbmltYXRlZFZh
bHVlKCk7CisgICAgICAgICAgICBhdXRvJiBhbmltYXRlZExpc3QgPSBjdXJyZW50QW5pbWF0ZWRW
YWx1ZSgpOwogICAgICAgICAgICAgYW5pbWF0ZWRMaXN0LmNsZWFyKCk7Ci0gICAgICAgICAgICBi
dWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0oKm1fYW5pbWF0ZWRQYXRoQnl0ZVN0cmVh
bSwgKnBhdGhFbGVtZW50LCBhbmltYXRlZExpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAg
ICAgICAgYnVpbGRTVkdQYXRoU2VnTGlzdFZhbHVlc0Zyb21CeXRlU3RyZWFtKCptX2FuaW1hdGVk
UGF0aEJ5dGVTdHJlYW0sICpwYXRoRWxlbWVudCwgYW5pbWF0ZWRMaXN0LCBVbmFsdGVyZWRQYXJz
aW5nKTsKICAgICAgICAgfQogCi0gICAgICAgIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZjxTVkdQYXRoU2VnTGlzdD46OmFuaW1WYWxEaWRDaGFuZ2UoKTsKKyAgICAgICAgQmFzZTo6YW5p
bVZhbERpZENoYW5nZSgpOwogICAgIH0KIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBhbmltYXRl
ZFBhdGhCeXRlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRlZFBhdGhCeXRlU3RyZWFt
OyB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
ZihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFNWR1Bh
dGhTZWdMaXN0JiB2YWx1ZXMpCi0gICAgICAgIDogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmPFNWR1BhdGhTZWdMaXN0Pihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykKKyAgICBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlw
ZSwgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIHZhbHVlcykKKyAgICAgICAgOiBCYXNlKGNvbnRleHRF
bGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgdmFsdWVzKQogICAg
ICAgICAsIG1fYW5pbWF0ZWRQYXRoQnl0ZVN0cmVhbShudWxscHRyKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHRFbGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNp
b24gMjA4NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjQgKzMyLDMwIEBAIHB1Ymxp
YzoKICAgICB1c2luZyBQcm9wZXJ0eVR5cGUgPSB0eXBlbmFtZSBQcm9wZXJ0eVRlYXJPZmY6OlBy
b3BlcnR5VHlwZTsKICAgICB1c2luZyBDb250ZW50VHlwZSA9IFByb3BlcnR5VHlwZTsKIAotICAg
IFJlZlB0cjxQcm9wZXJ0eVRlYXJPZmY+IGJhc2VWYWwoKQorICAgIHN0YXRpYyBSZWY8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUZWFyT2ZmPj4gY3JlYXRlKFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmlt
YXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgUHJvcGVydHlUeXBlJiBwcm9w
ZXJ0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VGVh
ck9mZj4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBl
LCBwcm9wZXJ0eSkpOworICAgIH0KKworICAgIFJlZjxQcm9wZXJ0eVRlYXJPZmY+IGJhc2VWYWwo
KQogICAgIHsKICAgICAgICAgaWYgKG1fYmFzZVZhbCkKLSAgICAgICAgICAgIHJldHVybiBtX2Jh
c2VWYWw7CisgICAgICAgICAgICByZXR1cm4gKm1fYmFzZVZhbDsKIAotICAgICAgICBhdXRvIHBy
b3BlcnR5ID0gUHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUodGhpcywgQmFzZVZhbFJvbGUsIG1fcHJv
cGVydHkpOworICAgICAgICBhdXRvIHByb3BlcnR5ID0gUHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUo
KnRoaXMsIEJhc2VWYWxSb2xlLCBtX3Byb3BlcnR5KTsKICAgICAgICAgbV9iYXNlVmFsID0gcHJv
cGVydHkucHRyKCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnR5KTsKKyAgICAgICAg
cmV0dXJuIHByb3BlcnR5OwogICAgIH0KIAotICAgIFJlZlB0cjxQcm9wZXJ0eVRlYXJPZmY+IGFu
aW1WYWwoKQorICAgIFJlZjxQcm9wZXJ0eVRlYXJPZmY+IGFuaW1WYWwoKQogICAgIHsKICAgICAg
ICAgaWYgKG1fYW5pbVZhbCkKLSAgICAgICAgICAgIHJldHVybiBtX2FuaW1WYWw7CisgICAgICAg
ICAgICByZXR1cm4gKm1fYW5pbVZhbDsKIAotICAgICAgICBhdXRvIHByb3BlcnR5ID0gUHJvcGVy
dHlUZWFyT2ZmOjpjcmVhdGUodGhpcywgQW5pbVZhbFJvbGUsIG1fcHJvcGVydHkpOworICAgICAg
ICBhdXRvIHByb3BlcnR5ID0gUHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUoKnRoaXMsIEFuaW1WYWxS
b2xlLCBtX3Byb3BlcnR5KTsKICAgICAgICAgbV9hbmltVmFsID0gcHJvcGVydHkucHRyKCk7Ci0g
ICAgICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5
OwogICAgIH0KIAogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2FuaW1hdGVkUHJvcGVydHk7IH0KQEAgLTYyLDEyICs2OCw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fYW5pbVZhbCA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdBbmlt
YXRlZFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVRlYXJPZmY+PiBjcmVhdGUoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1h
dGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHByb3Bl
cnR5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUZWFy
T2ZmPihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUs
IHByb3BlcnR5KSk7Ci0gICAgfQotCiAgICAgUHJvcGVydHlUeXBlJiBjdXJyZW50QW5pbWF0ZWRW
YWx1ZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNBbmltYXRpbmcoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0
eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gMjA4NzU0
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0UHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDQxICsyMSw0MCBAQAog
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5jbHVkZSAi
U1ZHVHJhbnNmb3JtTGlzdC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRl
YXJPZmYuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3Q+IHsKK2NsYXNzIFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdFByb3BlcnR5VGVhck9mZiBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4gewogcHVibGljOgotICAgIFJlZlB0
cjxMaXN0UHJvcGVydHk+IGJhc2VWYWwoKSBmaW5hbAorICAgIHN0YXRpYyBSZWY8U1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmPiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJv
cGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiB2
YWx1ZXMpCisgICAgeworICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJP
ZmYoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCB2
YWx1ZXMpKTsKKyAgICB9CisKKyAgICBSZWY8TGlzdFByb3BlcnR5VGVhck9mZj4gYmFzZVZhbCgp
IGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9iYXNlVmFsKQotICAgICAgICAgICAgcmV0dXJu
IG1fYmFzZVZhbDsKKyAgICAgICAgICAgIHJldHVybiAqbV9iYXNlVmFsOwogCi0gICAgICAgIGF1
dG8gcHJvcGVydHkgPSBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUodGhp
cywgQmFzZVZhbFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJzKTsKKyAgICAgICAgYXV0byBwcm9w
ZXJ0eSA9IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZSgqdGhpcywgQmFzZVZhbFJvbGUsIG1fdmFs
dWVzLCBtX3dyYXBwZXJzKTsKICAgICAgICAgbV9iYXNlVmFsID0gcHJvcGVydHkucHRyKCk7Ci0g
ICAgICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5
OwogICAgIH0KIAotICAgIFJlZlB0cjxMaXN0UHJvcGVydHk+IGFuaW1WYWwoKSBmaW5hbAorICAg
IFJlZjxMaXN0UHJvcGVydHlUZWFyT2ZmPiBhbmltVmFsKCkgZmluYWwKICAgICB7CiAgICAgICAg
IGlmIChtX2FuaW1WYWwpCi0gICAgICAgICAgICByZXR1cm4gbV9hbmltVmFsOworICAgICAgICAg
ICAgcmV0dXJuICptX2FuaW1WYWw7CiAKLSAgICAgICAgYXV0byBwcm9wZXJ0eSA9IFNWR1RyYW5z
Zm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSh0aGlzLCBBbmltVmFsUm9sZSwgbV92YWx1
ZXMsIG1fd3JhcHBlcnMpOworICAgICAgICBhdXRvIHByb3BlcnR5ID0gU1ZHVHJhbnNmb3JtTGlz
dDo6Y3JlYXRlKCp0aGlzLCBBbmltVmFsUm9sZSwgbV92YWx1ZXMsIG1fd3JhcHBlcnMpOwogICAg
ICAgICBtX2FuaW1WYWwgPSBwcm9wZXJ0eS5wdHIoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUo
cHJvcGVydHkpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0UHJvcGVydHlUZWFyT2ZmPiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFu
aW1hdGVkUHJvcGVydHlUeXBlLCBTVkdUcmFuc2Zvcm1MaXN0JiB2YWx1ZXMpCi0gICAgewotICAg
ICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYoY29udGV4dEVsZW1lbnQs
IGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCB2YWx1ZXMpKTsKKyAgICAgICAg
cmV0dXJuIHByb3BlcnR5OwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1h
dGVkUHJvcGVydHlUeXBlLCBTVkdUcmFuc2Zvcm1MaXN0JiB2YWx1ZXMpCi0gICAgICAgIDogU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3Q+KGNvbnRleHRFbGVt
ZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgdmFsdWVzKQorICAgIFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZihTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHZh
bHVlcykKKyAgICAgICAgOiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcz4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJv
cGVydHlUeXBlLCB2YWx1ZXMpCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkocmV2aXNpb24gMjA4NzU0
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBM
aXN0SXRlbVR5cGUgeyBtX3ZhbHVlcy0+YXQoaW5kZXgpIH07CiAgICAgfQogCi0gICAgRXhjZXB0
aW9uT3I8UmVmPExpc3RJdGVtVGVhck9mZj4+IGdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyhBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkTGlzdCwgdW5zaWduZWQgaW5kZXgpCisg
ICAgRXhjZXB0aW9uT3I8UmVmPExpc3RJdGVtVGVhck9mZj4+IGdldEl0ZW1WYWx1ZXNBbmRXcmFw
cGVycyhBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkTGlzdCwgdW5zaWduZWQg
aW5kZXgpCiAgICAgewogICAgICAgICBBU1NFUlQobV93cmFwcGVycyk7CiAKQEAgLTM3Nyw3ICsz
NzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG9sZEl0ZW0pOwogICAgIH0K
IAotICAgIEV4Y2VwdGlvbk9yPFJlZjxMaXN0SXRlbVRlYXJPZmY+PiByZW1vdmVJdGVtVmFsdWVz
QW5kV3JhcHBlcnMoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBhbmltYXRlZExpc3QsIHVu
c2lnbmVkIGluZGV4KQorICAgIEV4Y2VwdGlvbk9yPFJlZjxMaXN0SXRlbVRlYXJPZmY+PiByZW1v
dmVJdGVtVmFsdWVzQW5kV3JhcHBlcnMoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmlt
YXRlZExpc3QsIHVuc2lnbmVkIGluZGV4KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fd3JhcHBl
cnMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDkgKzM5LDggQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2U6Om1fdmFsdWVzOwog
ICAgIHVzaW5nIEJhc2U6Om1fd3JhcHBlcnM7CiAKLSAgICBzdGF0aWMgUmVmPFNlbGY+IGNyZWF0
ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3Bl
cnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3Jh
cHBlcnMpCisgICAgc3RhdGljIFJlZjxTZWxmPiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgUHJvcGVydHlU
eXBlJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
ZWxmKGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKICAgICB9CiAK
QEAgLTExMyw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZH
TGlzdFByb3BlcnR5VGVhck9mZihBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVk
UHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcywgTGlz
dFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgU1ZHTGlzdFByb3BlcnR5VGVhck9mZihBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9s
ZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMp
CiAgICAgICAgIDogU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4ocm9sZSwgdmFsdWVzLCAm
d3JhcHBlcnMpCiAgICAgICAgICwgbV9hbmltYXRlZFByb3BlcnR5KGFuaW1hdGVkUHJvcGVydHkp
CiAgICAgewpAQCAtMTIxLDE1ICsxMjAsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB+
U1ZHTGlzdFByb3BlcnR5VGVhck9mZigpCiAgICAgewotICAgICAgICBpZiAobV9hbmltYXRlZFBy
b3BlcnR5KQotICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5LT5wcm9wZXJ0eVdpbGxCZURl
bGV0ZWQoKnRoaXMpOworICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPnByb3BlcnR5V2lsbEJl
RGVsZXRlZCgqdGhpcyk7CiAgICAgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX3JvbGUgPT0gQW5pbVZhbFJvbGUpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eSAmJiBtX2Fu
aW1hdGVkUHJvcGVydHktPmlzUmVhZE9ubHkoKSkKKyAgICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9w
ZXJ0eS0+aXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0xNDYsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICAgICAgTGlzdEl0ZW1UZWFyT2ZmKiBpdGVtID0gbV93cmFwcGVycy0+YXQoaSkuZ2V0KCk7CiAg
ICAgICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBpdGVtLT5zZXRBbmltYXRlZFByb3BlcnR5KG1fYW5pbWF0ZWRQcm9wZXJ0eS5nZXQoKSk7
CisgICAgICAgICAgICBpdGVtLT5zZXRBbmltYXRlZFByb3BlcnR5KG1fYW5pbWF0ZWRQcm9wZXJ0
eS5wdHIoKSk7CiAgICAgICAgICAgICBpdGVtLT5zZXRWYWx1ZShtX3ZhbHVlcy0+YXQoaSkpOwog
ICAgICAgICB9CiAKQEAgLTE4Miw3ICsxODAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgLy8g
U3BlYzogSWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgaXQgaXMgcmVtb3ZlZCBmcm9t
IGl0cyBwcmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMgbGlzdC4K
ICAgICAgICAgLy8gJ25ld0l0ZW0nIGlzIGFscmVhZHkgbGl2aW5nIGluIGFub3RoZXIgbGlzdC4g
SWYgaXQncyBub3Qgb3VyIGxpc3QsIHN5bmNocm9uaXplIHRoZSBvdGhlciBsaXN0cyB3cmFwcGVy
cyBhZnRlciB0aGUgcmVtb3ZhbC4KLSAgICAgICAgYm9vbCBsaXZlc0luT3RoZXJMaXN0ID0gYW5p
bWF0ZWRQcm9wZXJ0eU9mSXRlbSAhPSBtX2FuaW1hdGVkUHJvcGVydHk7CisgICAgICAgIGJvb2wg
bGl2ZXNJbk90aGVyTGlzdCA9IGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0gIT0gbV9hbmltYXRlZFBy
b3BlcnR5LnB0cigpOwogICAgICAgICBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIHByb3Bl
cnR5VGVhck9mZiA9IHN0YXRpY19jYXN0PEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZio+KGFu
aW1hdGVkUHJvcGVydHlPZkl0ZW0pOwogICAgICAgICBpbnQgaW5kZXhUb1JlbW92ZSA9IHByb3Bl
cnR5VGVhck9mZi0+ZmluZEl0ZW0obmV3SXRlbS5wdHIoKSk7CiAgICAgICAgIEFTU0VSVChpbmRl
eFRvUmVtb3ZlICE9IC0xKTsKQEAgLTIwOSw3ICsyMDcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAv
LyBCYWNrIHBvaW50ZXIgdG8gdGhlIGFuaW1hdGVkIHByb3BlcnR5IHRoYXQgY3JlYXRlZCB1cwog
ICAgIC8vIEZvciBleGFtcGxlICh0ZXh0LnguYmFzZVZhbCk6IG1fYW5pbWF0ZWRQcm9wZXJ0eSBw
b2ludHMgdG8gdGhlICd4JyBTVkdBbmltYXRlZExlbmd0aExpc3Qgb2JqZWN0Ci0gICAgUmVmUHRy
PEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZj4gbV9hbmltYXRlZFByb3BlcnR5OworICAgIFJl
ZjxBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY+IG1fYW5pbWF0ZWRQcm9wZXJ0eTsKIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAJKHJldmlzaW9uIDIwODc1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEyOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCIKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCIKLSNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50
LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ1dpdGhDb250ZXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdm9pZCBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjo6Y2xlYXJDb250ZXh0
QW5kUm9sZXMoKQotewotICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgZm9yIChhdXRvJiBpdGVt
IDogKm1fdmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4
dCo+KGl0ZW0uZ2V0KCkpLT5zZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZp
bmVkUm9sZSk7Ci0gICAgfQotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZjo6Y2xlYXIoKQotewotICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgaWYg
KG1fdmFsdWVzLT5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBjbGVhckNv
bnRleHRBbmRSb2xlcygpOwotICAgIHJldHVybiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zjo6QmFzZTo6Y2xlYXJWYWx1ZXMoKTsKLX0KLQotRXhjZXB0aW9uT3I8U1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmY6OlB0ckxpc3RJdGVtVHlwZT4gU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmY6OmdldEl0ZW0odW5zaWduZWQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIEJhc2U6OmdldEl0
ZW1WYWx1ZXMoaW5kZXgpOwotfQotCi1FeGNlcHRpb25PcjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5
VGVhck9mZjo6UHRyTGlzdEl0ZW1UeXBlPiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjo6
cmVwbGFjZUl0ZW0oUHRyTGlzdEl0ZW1UeXBlIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQotewot
ICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1dCBGRi9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0
J3MganVzdCBzYW5lLgotICAgIGlmICghbmV3SXRlbSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNWR0V4Y2VwdGlvbjo6U1ZHX1dST05HX1RZUEVfRVJSIH07Ci0KLSAgICBpZiAoaW5kZXgg
PCBtX3ZhbHVlcy0+c2l6ZSgpKSB7Ci0gICAgICAgIExpc3RJdGVtVHlwZSByZXBsYWNlZEl0ZW0g
PSBtX3ZhbHVlcy0+YXQoaW5kZXgpOwotICAgICAgICBBU1NFUlQocmVwbGFjZWRJdGVtKTsKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Kj4ocmVwbGFjZWRJdGVtLmdl
dCgpKS0+c2V0Q29udGV4dEFuZFJvbGUobnVsbHB0ciwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwot
ICAgIH0KLQotICAgIHJldHVybiBCYXNlOjpyZXBsYWNlSXRlbVZhbHVlcyhuZXdJdGVtLCBpbmRl
eCk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpQdHJM
aXN0SXRlbVR5cGU+IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpyZW1vdmVJdGVtKHVu
c2lnbmVkIGluZGV4KQotewotICAgIGF1dG8gcmVzdWx0ID0gU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmY6OkJhc2U6OnJlbW92ZUl0ZW1WYWx1ZXMoaW5kZXgpOwotICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgYXV0byByZW1vdmVk
SXRlbSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBpZiAocmVtb3ZlZEl0ZW0p
Ci0gICAgICAgIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4dCY+KCpyZW1vdmVkSXRl
bSkuc2V0Q29udGV4dEFuZFJvbGUobnVsbHB0ciwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAg
IHJldHVybiBXVEZNb3ZlKHJlbW92ZWRJdGVtKTsKLX0KLQotU1ZHUGF0aEVsZW1lbnQqIFNWR1Bh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpjb250ZXh0RWxlbWVudCgpIGNvbnN0Ci17Ci0gICAg
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBtX2FuaW1hdGVkUHJvcGVydHktPmNvbnRleHRF
bGVtZW50KCk7Ci0gICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICByZXR1cm4gZG93bmNh
c3Q8U1ZHUGF0aEVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KTsKLX0KLQotYm9vbCBTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZjo6cHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBM
aXN0SXRlbVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVkKiBpbmRleFRvTW9kaWZ5KQotewotICAgIFNW
R1BhdGhTZWdXaXRoQ29udGV4dCogbmV3SXRlbVdpdGhDb250ZXh0ID0gc3RhdGljX2Nhc3Q8U1ZH
UGF0aFNlZ1dpdGhDb250ZXh0Kj4obmV3SXRlbS5nZXQoKSk7Ci0gICAgUmVmUHRyPFNWR0FuaW1h
dGVkUHJvcGVydHk+IGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0gPSBuZXdJdGVtV2l0aENvbnRleHQt
PmFuaW1hdGVkUHJvcGVydHkoKTsKLQotICAgIC8vIEFsdGVyIHRoZSByb2xlLCBhZnRlciBjYWxs
aW5nIGFuaW1hdGVkUHJvcGVydHkoKSwgYXMgdGhhdCBtYXkgaW5mbHVlbmNlIHRoZSByZXR1cm5l
ZCBhbmltYXRlZCBwcm9wZXJ0eS4KLSAgICBuZXdJdGVtV2l0aENvbnRleHQtPnNldENvbnRleHRB
bmRSb2xlKGNvbnRleHRFbGVtZW50KCksIG1fcGF0aFNlZ1JvbGUpOwotCi0gICAgaWYgKCFhbmlt
YXRlZFByb3BlcnR5T2ZJdGVtKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIG5ld0l0
ZW0gYmVsb25ncyB0byBhIFNWR1BhdGhFbGVtZW50LCBidXQgaXRzIGFzc29jaWF0ZWQgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSBpcyBub3QgYW4gYW5pbWF0ZWQgbGlzdCB0ZWFyIG9mZi4KLSAgICAvLyAo
Zm9yIGV4YW1wbGU6ICJwYXRoRWxlbWVudC5wYXRoU2VnTGlzdC5hcHBlbmRJdGVtKHBhdGhFbGVt
ZW50LmNyZWF0ZVNWR1BhdGhTZWdDbG9zZXBhdGgoKSkiKQotICAgIGlmICghYW5pbWF0ZWRQcm9w
ZXJ0eU9mSXRlbS0+aXNBbmltYXRlZExpc3RUZWFyT2ZmKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgLy8gU3BlYzogSWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgaXQgaXMg
cmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBpbnRv
IHRoaXMgbGlzdC4KLSAgICAvLyAnbmV3SXRlbScgaXMgYWxyZWFkeSBsaXZpbmcgaW4gYW5vdGhl
ciBsaXN0LiBJZiBpdCdzIG5vdCBvdXIgbGlzdCwgc3luY2hyb25pemUgdGhlIG90aGVyIGxpc3Rz
IHdyYXBwZXJzIGFmdGVyIHRoZSByZW1vdmFsLgotICAgIGJvb2wgbGl2ZXNJbk90aGVyTGlzdCA9
IGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0gIT0gbV9hbmltYXRlZFByb3BlcnR5OwotICAgIFJlZlB0
cjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPiBwcm9wZXJ0eVRlYXJPZmYg
PSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmY+KGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0pOwotICAgIGludCBpbmRleFRvUmVtb3ZlID0gcHJv
cGVydHlUZWFyT2ZmLT5maW5kSXRlbShuZXdJdGVtLmdldCgpKTsKLSAgICBBU1NFUlQoaW5kZXhU
b1JlbW92ZSAhPSAtMSk7Ci0KLSAgICAvLyBEbyBub3QgcmVtb3ZlIG5ld0l0ZW0gaWYgYWxyZWFk
eSBpbiB0aGlzIGxpc3QgYXQgdGhlIHRhcmdldCBpbmRleC4KLSAgICBpZiAoIWxpdmVzSW5PdGhl
ckxpc3QgJiYgaW5kZXhUb01vZGlmeSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhUb1Jl
bW92ZSkgPT0gKmluZGV4VG9Nb2RpZnkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBy
b3BlcnR5VGVhck9mZi0+cmVtb3ZlSXRlbUZyb21MaXN0KGluZGV4VG9SZW1vdmUsIGxpdmVzSW5P
dGhlckxpc3QpOwotCi0gICAgaWYgKCFpbmRleFRvTW9kaWZ5KQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIC8vIElmIHRoZSBpdGVtIGxpdmVkIGluIG91ciBsaXN0LCBhZGp1c3QgdGhlIGlu
c2VydGlvbiBpbmRleC4KLSAgICBpZiAoIWxpdmVzSW5PdGhlckxpc3QpIHsKLSAgICAgICAgdW5z
aWduZWQmIGluZGV4ID0gKmluZGV4VG9Nb2RpZnk7Ci0gICAgICAgIC8vIFNwZWM6IElmIHRoZSBp
dGVtIGlzIGFscmVhZHkgaW4gdGhpcyBsaXN0LCBub3RlIHRoYXQgdGhlIGluZGV4IG9mIHRoZSBp
dGVtIHRvIChyZXBsYWNlfGluc2VydCBiZWZvcmUpIGlzIGJlZm9yZSB0aGUgcmVtb3ZhbCBvZiB0
aGUgaXRlbS4KLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleFRvUmVtb3Zl
KSA8IGluZGV4KQotICAgICAgICAgICAgLS1pbmRleDsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0
aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAy
MDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZi5oCShub25leGlzdGVudCkKQEAgLTEsMTU2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTVkdQYXRoRWxlbWVudDsKLQotY2xhc3MgU1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYgZmluYWwgOiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5PFNWR1BhdGhTZWdM
aXN0PiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IFNWR0xpc3RQcm9wZXJ0eTxTVkdQYXRo
U2VnTGlzdD47Ci0gICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0PjsKLSAgICB1c2luZyBMaXN0
SXRlbVR5cGUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQYXRoU2VnTGlzdD46Okxpc3RJdGVtVHlw
ZTsKLSAgICB1c2luZyBQdHJMaXN0SXRlbVR5cGUgPSBSZWZQdHI8U1ZHUGF0aFNlZz47Ci0KLSAg
ICBzdGF0aWMgUmVmPFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPiBjcmVhdGUoQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUg
cm9sZSwgU1ZHUGF0aFNlZ1JvbGUgcGF0aFNlZ1JvbGUsIFNWR1BhdGhTZWdMaXN0JiB2YWx1ZXMs
IExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1h
dGVkUHJvcGVydHkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQYXRoU2VnTGlz
dFByb3BlcnR5VGVhck9mZihhbmltYXRlZFByb3BlcnR5LCByb2xlLCBwYXRoU2VnUm9sZSwgdmFs
dWVzLCB3cmFwcGVycykpOwotICAgIH0KLQotICAgIGludCBmaW5kSXRlbShjb25zdCBMaXN0SXRl
bVR5cGUmIGl0ZW0pIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV92YWx1ZXMpOwotCi0g
ICAgICAgIHVuc2lnbmVkIHNpemUgPSBtX3ZhbHVlcy0+c2l6ZSgpOwotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbV92
YWx1ZXMtPmF0KGkpKQotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHZvaWQgcmVtb3ZlSXRlbUZyb21MaXN0KHNp
emVfdCBpdGVtSW5kZXgsIGJvb2wgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycykKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGl0ZW1JbmRleCA8IG1fdmFsdWVzLT5zaXplKCkpOwotCi0gICAgICAgIG1fdmFs
dWVzLT5yZW1vdmUoaXRlbUluZGV4KTsKLQotICAgICAgICBpZiAoc2hvdWxkU3luY2hyb25pemVX
cmFwcGVycykKLSAgICAgICAgICAgIGNvbW1pdENoYW5nZSgpOwotICAgIH0KLQotICAgIC8vIFNW
R0xpc3QgQVBJCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xlYXIoKTsKLQotICAgIEV4Y2VwdGlv
bk9yPFB0ckxpc3RJdGVtVHlwZT4gaW5pdGlhbGl6ZShQdHJMaXN0SXRlbVR5cGUgbmV3SXRlbSkK
LSAgICB7Ci0gICAgICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1dCBGRi9PcGVyYSBkbyBpdCB0aGlz
IHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgotICAgICAgICBpZiAoIW5ld0l0ZW0pCi0gICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlIg
fTsKLQotICAgICAgICBjbGVhckNvbnRleHRBbmRSb2xlcygpOwotICAgICAgICByZXR1cm4gQmFz
ZTo6aW5pdGlhbGl6ZVZhbHVlcyhuZXdJdGVtKTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxQ
dHJMaXN0SXRlbVR5cGU+IGdldEl0ZW0odW5zaWduZWQgaW5kZXgpOwotCi0gICAgRXhjZXB0aW9u
T3I8UHRyTGlzdEl0ZW1UeXBlPiBpbnNlcnRJdGVtQmVmb3JlKFB0ckxpc3RJdGVtVHlwZSBuZXdJ
dGVtLCB1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1
dCBGRi9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgotICAgICAgICBp
ZiAoIW5ld0l0ZW0pCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0aW9u
OjpTVkdfV1JPTkdfVFlQRV9FUlIgfTsKLQotICAgICAgICByZXR1cm4gQmFzZTo6aW5zZXJ0SXRl
bUJlZm9yZVZhbHVlcyhuZXdJdGVtLCBpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8
UHRyTGlzdEl0ZW1UeXBlPiByZXBsYWNlSXRlbShQdHJMaXN0SXRlbVR5cGUsIHVuc2lnbmVkIGlu
ZGV4KTsKLQotICAgIEV4Y2VwdGlvbk9yPFB0ckxpc3RJdGVtVHlwZT4gcmVtb3ZlSXRlbSh1bnNp
Z25lZCBpbmRleCk7Ci0KLSAgICBFeGNlcHRpb25PcjxQdHJMaXN0SXRlbVR5cGU+IGFwcGVuZEl0
ZW0oUHRyTGlzdEl0ZW1UeXBlIG5ld0l0ZW0pCi0gICAgewotICAgICAgICAvLyBOb3Qgc3BlY2lm
aWVkLCBidXQgRkYvT3BlcmEgZG8gaXQgdGhpcyB3YXksIGFuZCBpdCdzIGp1c3Qgc2FuZS4KLSAg
ICAgICAgaWYgKCFuZXdJdGVtKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNWR0V4
Y2VwdGlvbjo6U1ZHX1dST05HX1RZUEVfRVJSIH07Ci0KLSAgICAgICAgcmV0dXJuIEJhc2U6OmFw
cGVuZEl0ZW1WYWx1ZXMobmV3SXRlbSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFNWR1BhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0
ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1BhdGhTZWdSb2xlIHBhdGhTZWdS
b2xlLCBTVkdQYXRoU2VnTGlzdCYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykK
LSAgICAgICAgOiBTVkdMaXN0UHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3Q+KHJvbGUsIHZhbHVlcywg
JndyYXBwZXJzKQotICAgICAgICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eShhbmltYXRlZFByb3BlcnR5
KQotICAgICAgICAsIG1fcGF0aFNlZ1JvbGUocGF0aFNlZ1JvbGUpCi0gICAgewotICAgIH0KLQot
ICAgIHZpcnR1YWwgflNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKCkKLSAgICB7Ci0gICAg
ICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHkpCi0gICAgICAgICAgICBtX2FuaW1hdGVkUHJvcGVy
dHktPnByb3BlcnR5V2lsbEJlRGVsZXRlZCgqdGhpcyk7Ci0gICAgfQotCi0gICAgU1ZHUGF0aEVs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3Q7Ci0KLSAgICB2b2lkIGNsZWFyQ29udGV4dEFu
ZFJvbGVzKCk7Ci0KLSAgICB1c2luZyBCYXNlOjptX3JvbGU7Ci0KLSAgICBib29sIGlzUmVhZE9u
bHkoKSBjb25zdCBmaW5hbAotICAgIHsKLSAgICAgICAgaWYgKG1fcm9sZSA9PSBBbmltVmFsUm9s
ZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAobV9hbmltYXRlZFByb3Bl
cnR5ICYmIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+aXNSZWFkT25seSgpKQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbW1p
dENoYW5nZSgpIGZpbmFsCi0gICAgewotICAgICAgICBBU1NFUlQobV92YWx1ZXMpOwotICAgICAg
ICBtX3ZhbHVlcy0+Y29tbWl0Q2hhbmdlKG1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y29udGV4dEVsZW1l
bnQoKSwgTGlzdE1vZGlmaWNhdGlvblVua25vd24pOwotICAgIH0KLQotICAgIHZvaWQgY29tbWl0
Q2hhbmdlKExpc3RNb2RpZmljYXRpb24gbGlzdE1vZGlmaWNhdGlvbikgZmluYWwKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAgIG1fdmFsdWVzLT5jb21taXRDaGFuZ2Uo
bV9hbmltYXRlZFByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgpLCBsaXN0TW9kaWZpY2F0aW9uKTsK
LSAgICB9Ci0KLSAgICBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlz
dEl0ZW1UeXBlJiBuZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhUb01vZGlmeSkgZmluYWw7Ci0gICAg
Ym9vbCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIoUmVmPExpc3RJdGVtVGVhck9mZj4m
LCB1bnNpZ25lZCopIGZpbmFsCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFJlZlB0cjxBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY+IG1fYW5pbWF0ZWRQcm9wZXJ0eTsKLSAgICBTVkdQYXRo
U2VnUm9sZSBtX3BhdGhTZWdSb2xlOwotfTsKLQotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYu
aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBVc2Vk
IGZvciBjaGlsZCB0eXBlcyAoYmFzZVZhbC9hbmltVmFsKSBvZiBhIFNWR0FuaW1hdGVkKiBwcm9w
ZXJ0eSAoZm9yIGV4YW1wbGU6IFNWR0FuaW1hdGVkTGVuZ3RoOjpiYXNlVmFsKCkpLgogICAgIC8v
IEFsc28gdXNlZCBmb3IgbGlzdCB0ZWFyIG9mZnMgKGZvciBleGFtcGxlOiB0ZXh0LnguYmFzZVZh
bC5nZXRJdGVtKDApKS4KLSAgICBzdGF0aWMgUmVmPFNlbGY+IGNyZWF0ZShTVkdBbmltYXRlZFBy
b3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgUHJvcGVydHlU
eXBlJiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNlbGY+IGNyZWF0ZShTVkdBbmltYXRlZFByb3Bl
cnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgUHJvcGVydHlUeXBl
JiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnR5KTsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VsZihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1
ZSkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3Rh
dGljTGlzdFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gMjA4
NzU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxOCArMjMsMjEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+IGNsYXNzIFNW
R1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYgZmluYWwgOiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5
PFByb3BlcnR5VHlwZT4gewordGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPiAKK2NsYXNz
IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5PFBy
b3BlcnR5VHlwZT4gewogcHVibGljOgorICAgIHVzaW5nIFNlbGYgPSBTVkdTdGF0aWNMaXN0UHJv
cGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT47CiAgICAgdXNpbmcgQmFzZSA9IFNWR0xpc3RQcm9w
ZXJ0eTxQcm9wZXJ0eVR5cGU+OworCiAgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUg
U1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UeXBlOwogICAgIHVzaW5n
IExpc3RJdGVtVGVhck9mZiA9IHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlw
ZT46Okxpc3RJdGVtVGVhck9mZjsKIAogICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKICAgICB1c2lu
ZyBCYXNlOjptX3ZhbHVlczsKIAotICAgIHN0YXRpYyBSZWY8U1ZHU3RhdGljTGlzdFByb3BlcnR5
VGVhck9mZjxQcm9wZXJ0eVR5cGU+PiBjcmVhdGUoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQs
IFByb3BlcnR5VHlwZSYgdmFsdWVzKQorICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKFNWR0Vs
ZW1lbnQmIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYoY29u
dGV4dEVsZW1lbnQsIHZhbHVlcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWxm
KGNvbnRleHRFbGVtZW50LCB2YWx1ZXMpKTsKICAgICB9CiAKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBjbGVhcigpCkBAIC03Miw5ICs3NSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEJhc2U6
OmFwcGVuZEl0ZW1WYWx1ZXMobmV3SXRlbSk7CiAgICAgfQogCi1wcml2YXRlOgorcHJvdGVjdGVk
OgogICAgIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCYgY29udGV4dEVs
ZW1lbnQsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQotICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eTxQ
cm9wZXJ0eVR5cGU+KFVuZGVmaW5lZFJvbGUsIHZhbHVlcywgbnVsbHB0cikKKyAgICAgICAgOiBC
YXNlKFVuZGVmaW5lZFJvbGUsIHZhbHVlcywgbnVsbHB0cikKICAgICAgICAgLCBtX2NvbnRleHRF
bGVtZW50KGNvbnRleHRFbGVtZW50KQogICAgIHsKICAgICB9CkBAIC04Nyw3ICs5MCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpCiAgICAgewogICAgICAgICBB
U1NFUlQobV92YWx1ZXMpOwotICAgICAgICBtX3ZhbHVlcy0+Y29tbWl0Q2hhbmdlKG1fY29udGV4
dEVsZW1lbnQucHRyKCkpOworICAgICAgICBtX3ZhbHVlcy0+Y29tbWl0Q2hhbmdlKG1fY29udGV4
dEVsZW1lbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzSW5jb21pbmdMaXN0
SXRlbVZhbHVlKGNvbnN0IExpc3RJdGVtVHlwZSYsIHVuc2lnbmVkKikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY1Byb3BlcnR5VGVh
ck9mZi5oCShyZXZpc2lvbiAyMDg3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTYgKzM4
LDE2IEBAIHB1YmxpYzoKICAgICAvLyAoZm9yIGV4YW1wbGU6IFNWR1NWR0VsZW1lbnQ6OmN1cnJl
bnRUcmFuc2xhdGUpLgogICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKENvbnRleHRFbGVtZW50
JiBjb250ZXh0RWxlbWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZSwgVXBkYXRlTWV0aG9kIHVwZGF0
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYoJmNvbnRleHRFbGVt
ZW50LCB2YWx1ZSwgdXBkYXRlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYo
Y29udGV4dEVsZW1lbnQsIHZhbHVlLCB1cGRhdGUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0Q2hhbmdlKCkgeyAobV9jb250ZXh0RWxlbWVudC5nZXQoKS0+Km1fdXBkYXRlKSgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmKENvbnRleHRFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZSwgVXBkYXRlTWV0aG9kIHVw
ZGF0ZSkKLSAgICAgICAgOiBQcm9wZXJ0eVRlYXJPZmYoMCwgVW5kZWZpbmVkUm9sZSwgdmFsdWUp
CisgICAgU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmKENvbnRleHRFbGVtZW50JiBjb250ZXh0RWxl
bWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZSwgVXBkYXRlTWV0aG9kIHVwZGF0ZSkKKyAgICAgICAg
OiBQcm9wZXJ0eVRlYXJPZmYoVW5kZWZpbmVkUm9sZSwgdmFsdWUpCiAgICAgICAgICwgbV91cGRh
dGUodXBkYXRlKQotICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCisg
ICAgICAgICwgbV9jb250ZXh0RWxlbWVudCgmY29udGV4dEVsZW1lbnQpCiAgICAgewogICAgIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVHJhbnNmb3JtTGlzdFBy
b3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gMjA4NzU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZi5oCShub25leGlzdGVudCkKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCi0j
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYgZmluYWwgOiBwdWJsaWMgU1ZHTGlz
dFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0PiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcg
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmPFNWR1RyYW5zZm9ybUxpc3Q+OwotICAgIHVzaW5nIExpc3RXcmFwcGVyQ2FjaGUgPSBBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6Okxpc3RXcmFwcGVyQ2FjaGU7Ci0KLSAgICBzdGF0aWMg
UmVmPFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4+IGNyZWF0ZShBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9s
ZSByb2xlLCBTVkdUcmFuc2Zvcm1MaXN0JiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBw
ZXJzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmKGFuaW1h
dGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKLSAgICB9Ci0KLSAgICBFeGNl
cHRpb25PcjxSZWY8U1ZHVHJhbnNmb3JtPj4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChT
VkdNYXRyaXgmIG1hdHJpeCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAg
ICAgIHJldHVybiBtX3ZhbHVlcy0+Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChtYXRyaXgp
OwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxTVkdUcmFuc2Zvcm0+PiBjb25zb2xp
ZGF0ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV92YWx1ZXMpOwotICAgICAgICBBU1NFUlQo
bV93cmFwcGVycyk7Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3QoKTsKLSAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKLQotICAgICAgICBBU1NFUlQobV92YWx1ZXMtPnNpemUoKSA9PSBtX3dyYXBw
ZXJzLT5zaXplKCkpOwotCi0gICAgICAgIC8vIFNwZWM6IElmIHRoZSBsaXN0IHdhcyBlbXB0eSwg
dGhlbiBhIHZhbHVlIG9mIG51bGwgaXMgcmV0dXJuZWQuCi0gICAgICAgIGlmIChtX3ZhbHVlcy0+
aXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgZGV0YWNo
TGlzdFdyYXBwZXJzKDApOwotICAgICAgICAKLSAgICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4g
d3JhcHBlciA9IG1fdmFsdWVzLT5jb25zb2xpZGF0ZSgpOwotICAgICAgICBtX3dyYXBwZXJzLT5h
cHBlbmQod3JhcHBlci5nZXQoKSk7Ci0KLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzLT5zaXplKCkg
PT0gbV93cmFwcGVycy0+c2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYo
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0
eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3JtTGlzdCYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3
cmFwcGVycykKLSAgICAgICAgOiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxp
c3Q+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpCi0gICAgewotICAg
IH0KLX07Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294905</attachid>
            <date>2016-11-15 17:15:34 -0800</date>
            <delta_ts>2016-11-15 17:24:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164790-20161115171531.patch</filename>
            <type>text/plain</type>
            <size>289058</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1NSBAQAorMjAxNi0xMS0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtTVkddIE1vdmluZyBtb3JlIHNwZWNp
YWwgY2FzaW5nIG9mIFNWRyBvdXQgb2YgdGhlIGJpbmRpbmdzIC0gU1ZHIGxpc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcvU1ZHQWxsSW5PbmUuY3BwOgor
ICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICBSZW1vdmUgU1ZHIHRlYXIgb2ZmIHNwZWNpZmljIGNvZGUhCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dFBhdGguY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFz
VGV4dC5jcHA6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5ICNpbmNsdWRlcy4KKworICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dXBkYXRlUGF0aEZyb21Qb2x5Z29uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVQ
YXRoRnJvbVBvbHlsaW5lRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlQ2hh
cmFjdGVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1
aWxkZXI6OmZpbGxDaGFyYWN0ZXJEYXRhTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFu
aW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTGVu
Z3RoTGlzdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckxp
c3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6
Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3Qu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
UG9pbnRMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y29u
c3RydWN0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGhMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBvaW50TGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVRyYW5zZm9ybUxpc3QpOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVHlwZTo6bGVuZ3RoTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5
cGU6Om51bWJlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpwb2lu
dExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp0cmFuc2Zvcm1MaXN0
KToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWls
ZCk6CisgICAgICAgICogc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwb2ludHNMaXN0RnJvbVNWR0RhdGEpOgorICAgICAgICAqIHN2Zy9TVkdQYXJzZXJVdGls
aXRpZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIu
Y3BwOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaDoKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlz
dFNvdXJjZS5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNl
Zyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNWR1BhdGhTZWdMaXN0VmFsdWVzRnJvbUJ5dGVT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQ
YXRoU2VnTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidWlsZFNWR1BhdGhTZWdM
aXN0RnJvbUJ5dGVTdHJlYW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTdHJp
bmdGcm9tU1ZHUGF0aFNlZ0xpc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRp
bGl0aWVzLmg6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BvbHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludExpc3QpOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zv
cm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1RyYW5z
Zm9ybWFibGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnZpZXdUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVmlld0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaWRsOgorICAgICAgICAqIHN2
Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6dHJhbnNm
b3JtU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6Omxvb2t1cE9yQ3JlYXRlVHJhbnNmb3JtV3Jh
cHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cmVzZXQpOgorICAgICAgICAq
IHN2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICBVcGRhdGUgZm9yIG5hbWUgY2hhbmdlcy4KKyAg
ICAgICAgCisgICAgICAgICogc3ZnL1NWR0FuZ2xlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmdsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjpTVkdBbmdsZSk6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpTVkdMZW5ndGgpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXRyaXguaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6U1ZHTWF0cml4KToKKyAgICAgICAgKiBz
dmcvU1ZHTnVtYmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdOdW1iZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdOdW1iZXI6OlNWR051bWJlcik6CisgICAgICAgICogc3ZnL1NW
R1BvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BvaW50OjpTVkdQb2ludCk6CisgICAgICAgICogc3ZnL1NWR1ByZXNlcnZl
QXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW86
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvKToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3Q6OlNW
R1JlY3QpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RyYW5zZm9ybTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6
U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJP
ZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VGVhck9mZjo6Y3JlYXRlKToKKyAg
ICAgICAgUGFzcyB0aGUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSBwYXJhbWV0ZXIgYnkgcmVmZXJlbmNl
LgorCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6c3lzdGVtTGFuZ3VhZ2UpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6cmVxdWlyZWRG
ZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpyZXF1aXJlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6c3lzdGVtTGFu
Z3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnJlcXVpcmVkRmVh
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpyZXF1aXJlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzeXN0ZW1M
YW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVu
dDo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6
cmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50Ojpz
eXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJu
RWxlbWVudDo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJu
RWxlbWVudDo6cmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50OjpzeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Rlc3RzOjpzeW5jaHJvbml6ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6
cmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpzeXN0ZW1M
YW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmg6CisgICAgICAgICogc3ZnL1NWR1Rl
c3RzLmlkbDoKKyAgICAgICAgTWFrZSBTVkdUZXN0cyBTVkdTdHJpbmdMaXN0cyB3b3JrIGJ5IGFk
ZGluZyBpbXBsZW1lbnRhdGlvbnMgb2YgZnVuY3Rpb25zCisgICAgICAgIG9uIHRoZSBTVkdFbGVt
ZW50cyB0aGF0IGltcGxlbWVudCBTVkdUZXN0cywgcGFzc2luZyAqdGhpcyBkb3duIHRvIFNWR1Rl
c3RzLgorCisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9TVkdMZW5ndGhMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaWRs
OgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcDogQ29waWVkIGZyb20gc3Zn
L1NWR0xlbmd0aExpc3QuY3BwLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmg6
IENvcGllZCBmcm9tIHN2Zy9TVkdMZW5ndGhMaXN0LmguCisgICAgICAgIFJlbmFtZSBTVkdMZW5n
dGhMaXN0IHRvIFNWR0xlbmd0aExpc3RWYWx1ZXMgYW5kIGFkZCBhbiBleHBsaWNpdCBpbXBsZW1l
bnRhdGlvbiBvZgorICAgICAgICB0aGUgU1ZHTGVuZ3RoTGlzdCBpbnRlcmZhY2UgaW5oZXJpdGlu
ZyBmcm9tIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4uCisKKyAg
ICAgICAgKiBzdmcvU1ZHTnVtYmVyTGlzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NW
R051bWJlckxpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHA6IENv
cGllZCBmcm9tIHN2Zy9TVkdOdW1iZXJMaXN0LmNwcC4KKyAgICAgICAgKiBzdmcvU1ZHTnVtYmVy
TGlzdFZhbHVlcy5oOiBDb3BpZWQgZnJvbSBzdmcvU1ZHTnVtYmVyTGlzdC5oLgorICAgICAgICBS
ZW5hbWUgU1ZHTnVtYmVyTGlzdCB0byBTVkdOdW1iZXJMaXN0VmFsdWVzIGFuZCBhZGQgYW4gZXhw
bGljaXQgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgdGhlIFNWR051bWJlckxpc3QgaW50ZXJm
YWNlIGluaGVyaXRpbmcgZnJvbSBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR051bWJlckxpc3RW
YWx1ZXM+LgorCisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aFNlZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMu
Y3BwOiBDb3BpZWQgZnJvbSBzdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwLgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTGlzdFZhbHVlcy5oOiBDb3BpZWQgZnJvbSBzdmcvU1ZHUGF0aFNlZ0xpc3QuaC4K
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaDogUmVtb3ZlZC4KKyAgICAgICAgUmVuYW1lIFNWR1BhdGhTZWdMaXN0IHRv
IFNWR1BhdGhTZWdMaXN0VmFsdWVzIGFuZCBhZGQgYW4gZXhwbGljaXQgaW1wbGVtZW50YXRpb24g
b2YKKyAgICAgICAgdGhlIFNWR1BhdGhTZWdMaXN0IGludGVyZmFjZSBpbmhlcml0aW5nIGZyb20g
U1ZHTGlzdFByb3BlcnR5PFNWR1BhdGhTZWdMaXN0VmFsdWVzPi4KKworICAgICAgICAqIHN2Zy9T
VkdQb2ludExpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3QuaDoK
KyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcDogQ29waWVkIGZyb20gc3ZnL1NW
R1BvaW50TGlzdC5jcHAuCisgICAgICAgICogc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5oOiBDb3Bp
ZWQgZnJvbSBzdmcvU1ZHUG9pbnRMaXN0LmguCisgICAgICAgIFJlbmFtZSBTVkdQb2ludExpc3Qg
dG8gU1ZHUG9pbnRMaXN0VmFsdWVzIGFuZCBhZGQgYW4gZXhwbGljaXQgaW1wbGVtZW50YXRpb24g
b2YKKyAgICAgICAgdGhlIFNWR1BvaW50TGlzdCBpbnRlcmZhY2UgaW5oZXJpdGluZyBmcm9tIFNW
R0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0VmFsdWVzPi4KKworICAgICAgICAqIHN2
Zy9TVkdTdHJpbmdMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHU3RyaW5nTGlz
dC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcDogQ29waWVkIGZyb20g
c3ZnL1NWR1N0cmluZ0xpc3QuY3BwLgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVz
Lmg6IENvcGllZCBmcm9tIHN2Zy9TVkdTdHJpbmdMaXN0LmguCisgICAgICAgIFJlbmFtZSBTVkdT
dHJpbmdMaXN0IHRvIFNWR1N0cmluZ0xpc3RWYWx1ZXMgYW5kIGFkZCBhbiBleHBsaWNpdCBpbXBs
ZW1lbnRhdGlvbiBvZgorICAgICAgICB0aGUgU1ZHU3RyaW5nTGlzdCBpbnRlcmZhY2UgaW5oZXJp
dGluZyBmcm9tIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdFZhbHVl
cz4uCisKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3Jt
TGlzdFZhbHVlcy5jcHA6IENvcGllZCBmcm9tIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcC4KKyAg
ICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oOiBDb3BpZWQgZnJvbSBzdmcvU1ZH
VHJhbnNmb3JtTGlzdC5oLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1RyYW5zZm9ybUxp
c3RQcm9wZXJ0eVRlYXJPZmYuaDogUmVtb3ZlZC4KKyAgICAgICAgUmVuYW1lIFNWR1RyYW5zZm9y
bUxpc3QgdG8gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyBhbmQgYWRkIGFuIGV4cGxpY2l0IGltcGxl
bWVudGF0aW9uIG9mCisgICAgICAgIHRoZSBTVkdUcmFuc2Zvcm1MaXN0IGludGVyZmFjZSBpbmhl
cml0aW5nIGZyb20gU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
Pi4KKworICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZi5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5VGVhck9mZi5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgQ29udmVydCB0byByZXR1cm4g
ZnVsbHkgc3BlY2lhbGl6ZWQgdHlwZXMgZm9yIGJhc2VWYWwgYW5kIGFuaW1WYWwsIHJlbW92aW5n
IG1hbnkgdW5uZWNlc3NhcnkgY2FzdHMKKyAgICAgICAgYXJvdW5kIHRoZSBjb2RlYmFzZS4gQWxz
byBhZGQgc29tZSB1c2VzIG9mIFJlZi4KKworICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0xp
c3RQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjpnZXRJdGVt
VmFsdWVzQW5kV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5Ojpy
ZW1vdmVJdGVtVmFsdWVzQW5kV3JhcHBlcnMpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmY6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHlUZWFy
T2ZmOjpTVkdMaXN0UHJvcGVydHlUZWFyT2ZmKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQ
cm9wZXJ0eVRlYXJPZmY6On5TVkdMaXN0UHJvcGVydHlUZWFyT2ZmKToKKyAgICAgICAgU3RvcmUg
dGhlIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiBhcyBhIFJlZiwgYW5kIHBhc3MgaXQgYXJv
dW5kIGJ5IHJlZmVyZW5jZS4KKworICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY1By
b3BlcnR5VGVhck9mZi5oOgorICAgICAgICBVcGRhdGUgdG8gdGFrZSB0aGUgQ29udGV4dEVsZW1l
bnQgYnkgcmVmZXJlbmNlLgorCiAyMDE2LTExLTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGlPUyBBUEkgdGVzdCBhc3NlcnRpb24g
YWZ0ZXIgcjIwODUzNApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwODc3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNzY4
LDcgKzI3NjgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR0ltYWdlTG9hZGVy
LmNwcAogICAgIHN2Zy9TVkdMYW5nU3BhY2UuY3BwCiAgICAgc3ZnL1NWR0xlbmd0aENvbnRleHQu
Y3BwCi0gICAgc3ZnL1NWR0xlbmd0aExpc3QuY3BwCisgICAgc3ZnL1NWR0xlbmd0aExpc3RWYWx1
ZXMuY3BwCiAgICAgc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcAogICAgIHN2Zy9TVkdMaW5lRWxlbWVu
dC5jcHAKICAgICBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMjc3OCw3ICsy
Nzc4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHAK
ICAgICBzdmcvU1ZHTWV0YWRhdGFFbGVtZW50LmNwcAogICAgIHN2Zy9TVkdNaXNzaW5nR2x5cGhF
bGVtZW50LmNwcAotICAgIHN2Zy9TVkdOdW1iZXJMaXN0LmNwcAorICAgIHN2Zy9TVkdOdW1iZXJM
aXN0VmFsdWVzLmNwcAogICAgIHN2Zy9TVkdQYWludC5jcHAKICAgICBzdmcvU1ZHUGFyc2VyVXRp
bGl0aWVzLmNwcAogICAgIHN2Zy9TVkdQYXRoQmxlbmRlci5jcHAKQEAgLTI3OTAsMTIgKzI3OTAs
MTMgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHAKICAg
ICBzdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAogICAgIHN2Zy9TVkdQYXRoU2VnTGlzdFNv
dXJjZS5jcHAKKyAgICBzdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCiAgICAgc3ZnL1NWR1Bh
dGhTdHJpbmdCdWlsZGVyLmNwcAogICAgIHN2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcAogICAg
IHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcAogICAgIHN2Zy9TVkdQYXRoVXRp
bGl0aWVzLmNwcAogICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKLSAgICBzdmcvU1ZHUG9p
bnRMaXN0LmNwcAorICAgIHN2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwCiAgICAgc3ZnL1NWR1Bv
bHlFbGVtZW50LmNwcAogICAgIHN2Zy9TVkdQb2x5Z29uRWxlbWVudC5jcHAKICAgICBzdmcvU1ZH
UG9seWxpbmVFbGVtZW50LmNwcApAQCAtMjgwNiw3ICsyODA3LDcgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAogICAgIHN2Zy9TVkdTZXRFbGVtZW50
LmNwcAogICAgIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHAKLSAgICBzdmcvU1ZHU3RyaW5nTGlzdC5j
cHAKKyAgICBzdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAKICAgICBzdmcvU1ZHU3R5bGVFbGVt
ZW50LmNwcAogICAgIHN2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAogICAgIHN2Zy9TVkdTeW1ib2xF
bGVtZW50LmNwcApAQCAtMjgyMSw3ICsyODIyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHN2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAogICAgIHN2Zy9TVkdUcmFuc2Zvcm0uY3Bw
CiAgICAgc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcAotICAgIHN2Zy9TVkdUcmFuc2Zvcm1M
aXN0LmNwcAorICAgIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcAogICAgIHN2Zy9TVkdU
cmFuc2Zvcm1WYWx1ZS5jcHAKICAgICBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKICAgICBzdmcv
U1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtMjg0Niw3ICsyODQ3LDYgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAKICAgICBz
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAotICAgIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcAogICAgIHN2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5SW5mby5jcHAKIAogICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw3ICszNTIsNiBAQAog
CQkwODNEQUVBODBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4M0RB
RUE0MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwICov
OyB9OwogCQkwODNEQUVBOTBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODNEQUVBNTBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgg
Ki87IH07CiAJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0cmljcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg0NTY4MDcxMkI5MERB
NjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDg0QTA4MjkxMjhENzg2NzAwMkRCMUYxIC8qIFNWR1BhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODRBMDgyODEyOEQ3ODY3MDAyREIxRjEgLyogU1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKIAkJMDg0REI1OUIxMjgwMDhDQzAwMkE2RDY0IC8qIFNW
R0FuaW1hdGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwODREQjU5QTEyODAwOENDMDAyQTZENjQgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaCAq
LzsgfTsKIAkJMDg1MjVFNjMxMjc4QzAwMTAwQTg0Nzc4IC8qIFNWR0FuaW1hdGVkU3RhdGljUHJv
cGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODUyNUU2MjEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0
eVRlYXJPZmYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwODU0QjAxNTEyNTVFNEU2MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5saW5lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAwMzEyNTVFNEU2
MDBCOUNERDAgLyogUmVuZGVyU1ZHSW5saW5lLmggKi87IH07CkBAIC0zOTksNyArMzk4LDYgQEAK
IAkJMDhCMzVCMTMxMjdCNkE3QzAwNTMxNEREIC8qIFNWR0FuaW1hdGVkTnVtYmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEIzNUIxMjEyN0I2QTdD
MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXIuaCAqLzsgfTsKIAkJMDhCMzVCMTcxMjdCNkE4
ODAwNTMxNEREIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhCMzVCMTYxMjdCNkE4ODAwNTMxNEREIC8qIFNW
R0FuaW1hdGVkTnVtYmVyTGlzdC5oICovOyB9OwogCQkwOEI1RjI1NTEzQjVGRkYyMDAyOTU5RUMg
LyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NjM5NTEzMTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGgu
Y3BwICovOyB9OwotCQkwOEM3MTM2RTEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDhDNzEzNkQxMjg5NTZBMzAwMUIxMDdFIC8qIFNWR1RyYW5zZm9ybUxpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCAqLzsgfTsKIAkJMDhDN0EyQzcxMERDNzQ2MjAwMkQzNjhCIC8qIFNWR05h
bWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTY1ODFFOTA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuaCAqLzsgfTsK
IAkJMDhDODU5QzAxMjc0NTc1NDAwQTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDODU5QkYxMjc0NTc1MzAw
QTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5oICovOyB9OwogCQkwOEM5MjUxOTBGQ0M3QzRBMDA0
ODBERUMgLyogRmlsdGVyRWZmZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3Qu
Y3BwICovOyB9OwpAQCAtNDE5LDcgKzQxNyw2IEBACiAJCTA4RkIxN0MxMTNCQzdFOTEwMDA0MDA4
NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCAqLzsgfTsKIAkJMDhGQjNGODQxM0JDNzU0QzAwOTlG
QzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIzRjgzMTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMDhGRTBCQzUxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2Vy
dmVBc3BlY3RSYXRpby5oICovOyB9OwotCQkwOEZGMTAyMDEyOTUwRjVBMDBGMDAyNzYgLyogU1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGRjEwMUYxMjk1MEY1OTAwRjAwMjc2IC8qIFNWR1BhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCAqLzsgfTsKIAkJMEE0ODQ0OTkwQ0E0NENCMjAwQjdC
RDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQUZEQUMzRDEw
RjU0NDhDMDBFMUYzRDIgLyogUGx1Z2luVmlld0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBRkRBQzNDMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVn
aW5WaWV3QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBCOEM1NkQ0MEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOEM1NkQzMEYyODYy
N0YwMDA1MDJFMSAvKiBIVFRQSGVhZGVyTWFwLmNwcCAqLzsgfTsKQEAgLTI4NDUsNiArMjg0Miwx
NSBAQAogCQk3QzJCREQzRDE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMkJE
RDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwICovOyB9Owog
CQk3QzJCREQzRTE3QzdGOThDMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQzE3QzdG
OThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi87IH07CiAJCTdDMzNGMzYy
MUI0QTA1MDQwMDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzM0YzNjAxQjRBMDUwNDAw
NTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi87IH07CisJCTdDMzlDMzY0
MUREQTg2NEMwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzYyMUREQTg2NDkwMEZFRkIy
OSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCAqLzsgfTsKKwkJN0MzOUMzNjUxRERBODY1MjAw
RkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzYzMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5n
dGhMaXN0VmFsdWVzLmggKi87IH07CisJCTdDMzlDMzcxMUREQkI4QUUwMEZFRkIyOSAvKiBTVkdQ
YXRoU2VnTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzM5QzM3MDFEREJBNDQwMDBGRUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3QuY3BwICovOyB9
OworCQk3QzM5QzM3MjFEREJCOEIzMDBGRUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNkUx
RERCQTNFMDAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcCAqLzsgfTsKKwkJN0Mz
OUMzNzMxRERCQjhDMTAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjgxRERCODZEMzAw
RkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuY3BwICovOyB9OworCQk3QzM5QzM3NDFEREJC
OEQzMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5QzM2QzFEREI4QkIwMDBGRUZCMjkg
LyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgKi87IH07CisJCTdDMzlDMzc1MUREQkI4REQw
MEZFRkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNkExRERCODcxQzAwRkVGQjI5IC8qIFNWR1Bv
aW50TGlzdFZhbHVlcy5jcHAgKi87IH07CisJCTdDMzlDMzc2MUREQkI5MEQwMEZFRkIyOSAvKiBT
VkdTdHJpbmdMaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMzlDMzY2MUREQjgyQ0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFs
dWVzLmNwcCAqLzsgfTsKKwkJN0MzOUMzNzcxRERCRTE3MDAwRkVGQjI5IC8qIFNWR1N0cmluZ0xp
c3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMzlDMzY3MUREQjgyQ0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQTkxRTYxQzk2
M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8q
IENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2Fn
ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87
IH07CiAJCTdDM0I3OTcyMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0I3OTcwMTkw
ODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDYyMyw3ICs0NjI5LDYgQEAKIAkJQjIy
MjdBMkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4OTcwRDAwQkYyMDAwNzFCNzgy
IC8qIFNWR0ltYWdlRWxlbWVudC5oICovOyB9OwogCQlCMjIyN0EyRjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTGFuZ1NwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3ODk5MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMYW5nU3BhY2UuY3BwICov
OyB9OwogCQlCMjIyN0EzMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg5QTBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggKi87IH07Ci0JCUIyMjI3QTM1MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMZW5ndGhMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3ODlGMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0
LmNwcCAqLzsgfTsKIAkJQjIyMjdBMzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEEw
MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjIyMjdBMzgwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhBMjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBMzkwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QTMwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5oICovOyB9OwpAQCAtNDYzOSw3ICs0NjQ0LDYgQEAKIAkJQjIyMjdBNEIw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QjUwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR01ldGFkYXRhRWxlbWVudC5oICovOyB9OwogCQlCMjIyN0E0RDBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTVBhdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyMjI3OEI3MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQu
Y3BwICovOyB9OwogCQlCMjIyN0E0RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhC
ODBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QTUw
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEJBMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdOdW1iZXJMaXN0LmNwcCAqLzsgfTsKIAkJQjIyMjdBNTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R051bWJlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyMjI3OEJCMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjIyMjdBNTMwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BhaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3OEJEMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYWludC5jcHAg
Ki87IH07CiAJCUIyMjI3QTU0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYWludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QkUwRDAwQkYyMDAw
NzFCNzgyIC8qIFNWR1BhaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTQ2NTUsMTEgKzQ2NTksOSBAQAogCQlCMjIyN0E2RDBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEQ3MEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYy5oICovOyB9OwogCQlCMjIyN0E3ODBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEUyMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbC5oICovOyB9OwogCQlCMjIyN0E3RDBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhFNzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggKi87IH07Ci0JCUIyMjI3QTgwMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzhFQTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3Qu
Y3BwICovOyB9OwogCQlCMjIyN0E4MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEVC
MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5oICovOyB9OwogCQlCMjIyN0E4NzBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4RjEwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1BhdHRlcm5FbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBODgwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BhdHRlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzhGMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1l
bnQuaCAqLzsgfTsKLQkJQjIyMjdBOEIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvaW50TGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhG
NTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmNwcCAqLzsgfTsKIAkJQjIyMjdBOEMw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4RjYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1Bv
aW50TGlzdC5oICovOyB9OwogCQlCMjIyN0E4RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc4RjgwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
QjIyMjdBOEYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGOTBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHUG9seUVsZW1lbnQuaCAqLzsgfTsKQEAgLTQ2NzksNyArNDY4MSw2IEBACiAJCUIy
MjI3QUE2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxMDBEMDBCRjIxMDA3MUI3ODIg
LyogU1ZHU2V0RWxlbWVudC5oICovOyB9OwogCQlCMjIyN0FBODBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3RvcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc5MTIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmNwcCAq
LzsgfTsKIAkJQjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxMzBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBQUIwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MTUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0cmlu
Z0xpc3QuY3BwICovOyB9OwogCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5n
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc5MTYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyN0FCNTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTFGMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdHcmFwaGlj
c0VsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FCNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHR3Jh
cGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjIyNzkyMDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHR3JhcGhpY3NFbGVtZW50LmggKi87
IH07CkBAIC00NzA4LDcgKzQ3MDksNiBAQAogCQlCMjIyN0FEQTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHVHJhbnNmb3JtYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc5NDQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuaCAq
LzsgfTsKIAkJQjIyMjdBREMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3
OTQ2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAgKi87IH07CiAJ
CUIyMjI3QUREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NDcwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggKi87IH07Ci0JCUIyMjI3QURFMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTQ4MEQwMEJGMjEwMDcxQjc4MiAvKiBT
VkdUcmFuc2Zvcm1MaXN0LmNwcCAqLzsgfTsKIAkJQjIyMjdBREYwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1RyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3OTQ5MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0Lmgg
Ki87IH07CiAJCUIyMjI3QUUxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0QjBE
MDBCRjIxMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FFMjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTRDMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdU
UmVmRWxlbWVudC5oICovOyB9OwpAQCAtNjgxNCw3ICs2ODE0LDYgQEAKIAkJRkRGN0U5QzQxM0FD
MjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8q
IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovOyB9OwogCQlGRTBEODRFOTEwNDg0MzQ4MDAxQTE3
OUUgLyogV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMEQ4NEU4MTA0ODQzNDgwMDFBMTc5RSAvKiBXZWJFdmVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMEQ4NEVCMTA0ODQzNkUw
MDFBMTc5RSAvKiBXZWJFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5tbSAqLzsg
fTsKLQkJRkUzMzcxQTIxNjdDMTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMzcxQTAxNjdD
MTFENDAwRURCNzUyIC8qIERhdGFiYXNlQmFzaWNUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzZGRDE1MTZDNzgyNjUwMEY4ODdDMSAv
KiBDaGFuZ2VWZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUzNkZEMTExNkM3ODI2NDAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRh
LmggKi87IH07CiAJCUZFMzZGRDE2MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0
YXRlTWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTM2RkQxMjE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hp
bmUuY3BwICovOyB9OwogCQlGRTM2RkQxNzE2Qzc4MjY1MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rp
b25TdGF0ZU1hY2hpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzZGRDEzMTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFj
aGluZS5oICovOyB9OwpAQCAtNzMwNSw3ICs3MzA0LDYgQEAKIAkJMDgzREFFQTQwRjAxQTdGQjAw
MzQyNzU0IC8qIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODNEQUVBNTBGMDFBN0ZCMDAzNDI3NTQgLyog
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwODQ1NjgwNzEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJpY3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udE1ldHJpY3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMDg0QTA4MjgxMjhENzg2NzAwMkRCMUYxIC8qIFNWR1BhdGhTZWdM
aXN0UHJvcGVydHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4NERCNTlBMTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmltYXRlZFN0cmluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFN0cmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODUyNUU2MjEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMDIxMjU1RTRFNjAwQjlDREQwIC8qIFJlbmRlclNWR0lubGlu
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdJbmxp
bmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM2MSw3ICs3MzU5LDYgQEAK
IAkJMDhBNDg0NzYwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEIzNUIxMjEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1i
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWROdW1iZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhCMzVCMTYxMjdCNkE4ODAwNTMxNERE
IC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRlZE51bWJlckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMDhDNzEzNkQxMjg5NTZBMzAwMUIxMDdFIC8qIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRl
YXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEM4NTlC
RjEyNzQ1NzUzMDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwOEM5MjUxNzBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRlckVmZmVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0
ZXJFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzgyLDcgKzczNzksNiBAQAogCQkw
OEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjNGODMxM0JDNzU0
QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwOEZFMEJDNDEyN0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwOEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0
aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEFGREFDM0MxMEY1NDQ4QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblZpZXdCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOEM1NkQzMEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVh
ZGVyTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBIZWFk
ZXJNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAyNzAsNiArMTAyNjYs
MTkgQEAKIAkJN0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUdsb2JhbE9i
amVjdFRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzJCREQzQzE3QzdG
OThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdt
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9j
dW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
MzlDMzYyMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyog
U1ZHTGVuZ3RoTGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdMZW5ndGhMaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzlD
MzY2MUREQjgyQ0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5QzM2NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZH
U3RyaW5nTGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdT
dHJpbmdMaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzlDMzY4
MUREQjg2RDMwMEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5QzM2OTFEREI4NkQzMDBGRUZCMjkgLyogU1ZHTnVt
YmVyTGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdOdW1i
ZXJMaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzlDMzZBMURE
Qjg3MUMwMEZFRkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNkIxRERCODcxQzAwRkVGQjI5IC8qIFNWR1BvaW50TGlz
dFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQb2ludExpc3RW
YWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNkMxRERCOEJCMDAw
RkVGQjI5IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDMzlDMzZEMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNkUx
RERCQTNFMDAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNkYxRERCQTNFMDAwRkVGQjI5IC8qIFNWR1Bh
dGhTZWdMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Bh
dGhTZWdMaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzlDMzcw
MUREQkE0NDAwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU2VnTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDM0E5MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkQWNjZXNz
UG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0I3OTZGMTkwODc1N0Iw
MEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MzQjc5NzAxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMzUwLDcgKzEyMzU5LDYgQEAKIAkJ
QjIyMjc4OTkwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xhbmdTcGFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGFuZ1NwYWNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4OUEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xhbmdTcGFj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGFuZ1NwYWNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3ODlFMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdMZW5ndGguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdMZW5ndGguaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzg5RjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZH
TGVuZ3RoTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
TGVuZ3RoTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEEwMEQw
MEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdMZW5ndGhMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyMjI3OEExMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU1ZHTGVuZ3RoTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyMjI3OEEyMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM3NCw3
ICsxMjM4Miw2IEBACiAJCUIyMjI3OEI3MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR01QYXRoRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEI4MEQwMEJGMjAw
MDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR01QYXRoRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MjIyNzhCOTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTnVtYmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU1ZHTnVtYmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjIy
Mjc4QkEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR051bWJlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjIyNzhCQjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTnVtYmVyTGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhCQzBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHTnVtYmVyTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR051bWJlckxpc3Qu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhCRDBEMDBCRjIwMDA3MUI3
ODIgLyogU1ZHUGFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR1BhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNDExLDcgKzEy
NDE4LDYgQEAKIAkJQjIyMjc4RTcwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG9W
ZXJ0aWNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0xp
bmV0b1ZlcnRpY2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEU4MEQw
MEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhFOTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0
aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHUGF0
aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QjIyMjc4RUEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU2VnTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEVCMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRo
U2VnTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0xp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4RUMwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1BhdGhTZWdMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHUGF0
aFNlZ0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhFRjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ01vdmV0b0Ficy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFNWR1BhdGhTZWdNb3ZldG9BYnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTI0MjAsNyArMTI0MjYsNiBAQAogCQlCMjIyNzhGMjBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHUGF0dGVybkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1BhdHRlcm5FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEYz
MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFNWR1BhdHRlcm5FbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjIyMjc4RjQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvaW50LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU1ZHUG9pbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMjIyNzhGNTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQb2ludExpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhGNjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQb2ludExpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4RjcwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1BvaW50TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR1BvaW50TGlzdC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEY4MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHUG9seUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTI0NTEsNyArMTI0NTYsNiBAQAogCQlCMjIyNzkxMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3Rv
cEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1N0
b3BFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MTMwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdTdG9wRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjIyNzkxNDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTVkdTdG9wRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUIyMjI3OTE1MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdTdHJpbmdMaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MTYwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1N0cmluZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0
cmluZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MTcwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
VkdTdHJpbmdMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MUYw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR0dyYXBoaWNzRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNDkzLDcgKzEyNDk3LDYgQEAKIAkJQjIyMjc5NDQwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1RyYW5zZm9ybWFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjIyMjc5NDYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUcmFuc2Zvcm1EaXN0
YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTQ3MEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQjIyMjc5NDgwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RyYW5zZm9ybUxpc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzk0OTBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHVHJhbnNmb3JtTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIy
Nzk0QTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNWR1RyYW5zZm9ybUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMjIyNzk0QjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RSZWZFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODI2LDcgKzE0ODI5LDYgQEAKIAkJRkRG
N0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwRDg0RTgxMDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJF
dmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkV2ZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTMzNzFBMDE2N0MxMUQ0MDBFREI3
NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERhdGFiYXNlQmFzaWNUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhbmdlVmVyc2lvbkRhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNkZEMTIxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0
aW9uU3RhdGVNYWNoaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkUzNkZEMTMxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNo
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uU3Rh
dGVNYWNoaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI5Myw4ICsxNTI5
NSw2IEBACiAJCQkJMDgxMDc2NDMxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5o
ICovLAogCQkJCTA4OEEwRTAwMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVydHlUZWFy
T2ZmLmggKi8sCiAJCQkJMDhDQTNENDMxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJP
ZmYuaCAqLywKLQkJCQkwOEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuY3BwICovLAotCQkJCTA4NEEwODI4MTI4RDc4NjcwMDJEQjFGMSAvKiBT
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4OEEwRTAxMTI2RUYxREIw
MDk3OEY3QSAvKiBTVkdQcm9wZXJ0eS5oICovLAogCQkJCUI1NDNCODU2MTdFQjc1OEYwMDNCRTkz
QSAvKiBTVkdQcm9wZXJ0eUluZm8uY3BwICovLAogCQkJCTA4MURENDlCMTNCQTFBNjAwMERDNzYy
NyAvKiBTVkdQcm9wZXJ0eUluZm8uaCAqLywKQEAgLTE1MzAyLDcgKzE1MzAyLDYgQEAKIAkJCQkw
ODhBMEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCAqLywKIAkJCQkw
ODgwRjcwRDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5o
ICovLAogCQkJCTA4MTNBNEU5MTI4NDEzMjYwMDk5MjUxMSAvKiBTVkdTdGF0aWNQcm9wZXJ0eVRl
YXJPZmYuaCAqLywKLQkJCQkwOEM3MTM2RDEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBwcm9wZXJ0aWVzOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIxMDQ3LDkgKzIxMDQ2LDEwIEBACiAJCQkJ
N0NFNThENTExREQ3QjA5MzAwMTI4NTUyIC8qIFNWR0xlbmd0aC5oICovLAogCQkJCTcxMzQ0OTZC
MTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCAqLywKIAkJCQk3MTM0NDk2
QzE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oICovLAotCQkJCUIyMjI3ODlG
MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmNwcCAqLywKIAkJCQlCMjIyNzhBMDBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlzdC5oICovLAogCQkJCUIyMjI3OEExMEQwMEJG
MjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmlkbCAqLywKKwkJCQk3QzM5QzM2MjFEREE4NjQ5
MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAgKi8sCisJCQkJN0MzOUMzNjMxRERB
ODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCAqLywKIAkJCQk3Q0U1OEQ1MjFE
RDdCMDkzMDAxMjg1NTIgLyogU1ZHTGVuZ3RoVmFsdWUuY3BwICovLAogCQkJCTdDRTU4RDUzMURE
N0IwOTMwMDEyODU1MiAvKiBTVkdMZW5ndGhWYWx1ZS5oICovLAogCQkJCUIyMjI3OEEyMEQwMEJG
MjAwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwICovLApAQCAtMjEwODAs
OSArMjEwODAsMTAgQEAKIAkJCQk0NEQ4REE5ODEzOTU0NUJFMDAzMzdCNzUgLyogU1ZHTVBhdGhF
bGVtZW50LmlkbCAqLywKIAkJCQk3Q0U1OEQ0RjFERDY5QTFFMDAxMjg1NTIgLyogU1ZHTnVtYmVy
LmggKi8sCiAJCQkJQjIyMjc4QjkwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlci5pZGwgKi8s
Ci0JCQkJQjIyMjc4QkEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3BwICovLAog
CQkJCUIyMjI3OEJCMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggKi8sCiAJCQkJ
QjIyMjc4QkMwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuaWRsICovLAorCQkJCTdD
MzlDMzY4MUREQjg2RDMwMEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcCAqLywKKwkJ
CQk3QzM5QzM2OTFEREI4NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5oICovLAog
CQkJCUIyMjI3OEJEMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYWludC5jcHAgKi8sCiAJCQkJQjIy
Mjc4QkUwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhaW50LmggKi8sCiAJCQkJQjIyMjc4QkYwRDAw
QkYyMDAwNzFCNzgyIC8qIFNWR1BhaW50LmlkbCAqLywKQEAgLTIxMTQ2LDEzICsyMTE0NywxNSBA
QAogCQkJCUIyMjI3OEU4MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGlj
YWxBYnMuaWRsICovLAogCQkJCTgzQzFENDIyMTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2Vn
TGluZXRvVmVydGljYWxSZWwuaCAqLywKIAkJCQlCMjIyNzhFOTBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmlkbCAqLywKLQkJCQlCMjIyNzhFQTBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuY3BwICovLAorCQkJCTdDMzlDMzcwMUREQkE0NDAw
MEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgKi8sCiAJCQkJQjIyMjc4RUIwRDAwQkYyMDAw
NzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggKi8sCiAJCQkJQjIyMjc4RUMwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1BhdGhTZWdMaXN0LmlkbCAqLywKIAkJCQk4NDc2QzlFMzExREY2QTBCMDA1NTVC
MDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCAqLywKIAkJCQk4NDc2QzlFNDExREY2QTBC
MDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggKi8sCiAJCQkJODRCNkI5NzUxMjBG
MTNFNTAwQjhFRkFGIC8qIFNWR1BhdGhTZWdMaXN0U291cmNlLmNwcCAqLywKIAkJCQk4NEI2Qjk3
NjEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaCAqLywKKwkJCQk3QzM5
QzM2RTFEREJBM0UwMDBGRUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwICovLAorCQkJ
CTdDMzlDMzZGMUREQkEzRTAwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdFZhbHVlcy5oICovLAog
CQkJCTgzQzFENDIzMTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTW92ZXRvQWJzLmggKi8s
CiAJCQkJQjIyMjc4RUYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG9BYnMuaWRs
ICovLAogCQkJCTgzQzFENDI0MTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTW92ZXRvUmVs
LmggKi8sCkBAIC0yMTE3Miw5ICsyMTE3NSwxMCBAQAogCQkJCUIyMjI3OEYzMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5pZGwgKi8sCiAJCQkJQjIyMjc4RjQwRDAwQkYyMTAw
NzFCNzgyIC8qIFNWR1BvaW50LmlkbCAqLywKIAkJCQk3Q0U1OEQ0OTFERDY0QTVCMDAxMjg1NTIg
LyogU1ZHUG9pbnQuaCAqLywKLQkJCQlCMjIyNzhGNTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9p
bnRMaXN0LmNwcCAqLywKIAkJCQlCMjIyNzhGNjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRM
aXN0LmggKi8sCiAJCQkJQjIyMjc4RjcwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvaW50TGlzdC5p
ZGwgKi8sCisJCQkJN0MzOUMzNkExRERCODcxQzAwRkVGQjI5IC8qIFNWR1BvaW50TGlzdFZhbHVl
cy5jcHAgKi8sCisJCQkJN0MzOUMzNkIxRERCODcxQzAwRkVGQjI5IC8qIFNWR1BvaW50TGlzdFZh
bHVlcy5oICovLAogCQkJCUIyMjI3OEY4MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVu
dC5jcHAgKi8sCiAJCQkJQjIyMjc4RjkwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50
LmggKi8sCiAJCQkJQjIyMjc4RkEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50
LmNwcCAqLywKQEAgLTIxMjA3LDkgKzIxMjExLDEwIEBACiAJCQkJQjIyMjc5MTIwRDAwQkYyMTAw
NzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzkxMzBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzkxNDBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3RvcEVsZW1lbnQuaWRsICovLAotCQkJCUIyMjI3OTE1MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdTdHJpbmdMaXN0LmNwcCAqLywKIAkJCQlCMjIyNzkxNjBEMDBCRjIxMDA3MUI3ODIg
LyogU1ZHU3RyaW5nTGlzdC5oICovLAogCQkJCUIyMjI3OTE3MEQwMEJGMjEwMDcxQjc4MiAvKiBT
VkdTdHJpbmdMaXN0LmlkbCAqLywKKwkJCQk3QzM5QzM2NjFEREI4MkNGMDBGRUZCMjkgLyogU1ZH
U3RyaW5nTGlzdFZhbHVlcy5jcHAgKi8sCisJCQkJN0MzOUMzNjcxRERCODJDRjAwRkVGQjI5IC8q
IFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCAqLywKIAkJCQlCMjIyNzkyMTBEMDBCRjIxMDA3MUI3ODIg
LyogU1ZHU3R5bGVFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzkyMjBEMDBCRjIxMDA3MUI3ODIg
LyogU1ZHU3R5bGVFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5MjMwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1N0eWxlRWxlbWVudC5pZGwgKi8sCkBAIC0yMTI1MCw5ICsyMTI1NSwxMCBAQAogCQkJCUIy
MjI3OTQ0MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxlLmggKi8sCiAJCQkJQjIy
Mjc5NDYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmNwcCAqLywKIAkJ
CQlCMjIyNzk0NzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCAqLywK
LQkJCQlCMjIyNzk0ODBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5jcHAgKi8s
CiAJCQkJQjIyMjc5NDkwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCAqLywK
IAkJCQlCMjIyNzk0QTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5pZGwgKi8s
CisJCQkJN0MzOUMzNkMxRERCOEJCMDAwRkVGQjI5IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMu
Y3BwICovLAorCQkJCTdDMzlDMzZEMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzLmggKi8sCiAJCQkJN0NFNThENTUxREQ3RDk2RDAwMTI4NTUyIC8qIFNWR1RyYW5zZm9y
bVZhbHVlLmNwcCAqLywKIAkJCQk3Q0U1OEQ1NjFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNm
b3JtVmFsdWUuaCAqLywKIAkJCQlCMjIyNzk0QjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVFJlZkVs
ZW1lbnQuY3BwICovLApAQCAtMjUzMDEsNiArMjUzMDcsNyBAQAogCQkJCTUxODVGQzc1MUJCNEM0
RTgwMDEyODk4RiAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3QjM4RTI3MTUxQzQyNzEwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0QyQUQwNDE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2luZG93
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDMzlDMzc3MUREQkUxNzAwMEZFRkIyOSAv
KiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUY2MEIxMTE1N0Y2
ODZFMDA3NUUxNTcgLyogRE9NV2luZG93UXVvdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBMkE1
QUQ2MTZBNDg2MTYwMDk3NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4Q0NCQjQ5MTUxRjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRh
YmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzA0Miw2ICsyNzA0OSw3IEBACiAJCQkJODM2REFB
MDYxQ0VBQjgwRDAwQTJCNzA3IC8qIFJlbmRlckRlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRDMwMjc1NEExMkE1RkU4NDAwNEJEODI4IC8qIFJlbmRlckRldGFpbHNNYXJr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NkU1RjdGMTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5k
ZXJlZERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzM5QzM2NTFEREE4NjUy
MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIz
MkNEQTkxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0M0EwMjNCMTdFQjM3MEEwMDRDREQyNSAvKiBSZW5kZXJFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjVCN0E1NTEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRP
YmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjc2OTIsNyArMjc3MDAsNiBAQAogCQkJCTgzQzFE
NDM0MTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTgxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RTYxMURGNkEwQjAwNTU1QjAyIC8qIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg0QTA4MjkxMjhENzg2NzAw
MkRCMUYxIC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NEI2Qjk3ODEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzQzFENDM1MTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2Vn
TW92ZXRvQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzNjE3OEQ1QUI1MDAxNDFFNjgg
LyogU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc1OCw3ICsyNzc2
NSw2IEBACiAJCQkJQjIyMjdBREEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFu
c2Zvcm1EaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBREYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4QzcxMzZFMTI4
OTU2QTMwMDFCMTA3RSAvKiBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyN0FFMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUU1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUU3Bh
bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUU3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdVbml0VHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5MDcsNiArMjg5MTMsNyBAQAog
CQkJCTk3N0IzODYyMTIyODgzRTkwMEI4MUZGOCAvKiBDU1NQcmVsb2FkU2Nhbm5lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODBFNkQwNTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRjcwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU1Byb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMzlDMzY0MUREQTg2NEMwMEZF
RkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc4RDAy
QkM1MTU0QTE4REYwMEI2MkQwNSAvKiBDU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUJBNzZDQTExRDIwRTUwMDA0QzIwMUMgLyogQ1NTUHJvcGVydHlOYW1lcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NDZEMzc0NTFENkQwMUQ0MDA3NzA4NEYgLyogQ1NTUHJv
cGVydHlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTEzMSw2ICsyOTEzOCw3IEBACiAJ
CQkJODQ3MzBEN0ExMjQ4RjBCMzAwRDNBOUM5IC8qIEZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg0NzMwRDdDMTI0OEYwQjMwMEQzQTlDOSAvKiBGRURpc3BsYWNlbWVu
dE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzU4RTg4MDEzNjBBMzE3MDBFNDc0OEMgLyog
RkVEcm9wU2hhZG93LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMzlDMzcxMUREQkI4QUUwMEZF
RkIyOSAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDczMEQ3RTEy
NDhGMEIzMDBEM0E5QzkgLyogRkVGbG9vZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDgwMTk1
NDEwOEJBRkIzMDBDQjJCMUYgLyogRkVHYXVzc2lhbkJsdXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODQ3MzBEODAxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFTGlnaHRpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yOTM4Miw2ICsyOTM5MCw3IEBACiAJCQkJRDNENEU5NzIxMzBDN0NGRTAwN0JBNTQw
IC8qIEhUTUxTdW1tYXJ5RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREIzMjBB
MTUwQkQ2MDBCMTJBNjggLyogSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTg3MURCMkUwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZUNlbGxFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMzlDMzczMUREQkI4QzEwMEZFRkIyOSAvKiBTVkdO
dW1iZXJMaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQjI5MEExNTBCRDYw
MEIxMkE2OCAvKiBIVE1MVGFibGVDb2xFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
NzFEQjI4MEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4NzFEQjJEMEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVQYXJ0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTYwLDYgKzMwNTY5LDcgQEAKIAkJCQkzMzkwQ0E1
NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxMjhDQTY4MTQ3MzMxNTIwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTEzRDUxMTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJ
bXBsZW1lbnRlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzM5QzM3MjFEREJCOEIzMDBGRUZC
MjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlE
MEEwRDdFMkI4MjAwN0MzOTgzIC8qIE5QX2pzb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNTY5RDBEMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTJGNTJFMTExNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1t
IGluIFNvdXJjZXMgKi8sCkBAIC0zMDc5MSw2ICszMDgwMSw3IEBACiAJCQkJRDcwQUQ2NTcxM0Ux
MzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U5
M0Y0NzE1MTdDNkQ1MDA4Q0NGNzQgLyogUmVuZGVyUmVnaW9uU2V0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4NzFERkUyMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJSZXBsYWNlZC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QzM5QzM3NjFEREJCOTBEMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlz
dFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4NDZENjBEQzY3QTM1MDAyNkMzMDkg
LyogUmVuZGVyUmVwbGljYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDc5RkFFRDEwOUFFMzc1
MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDc5RkFFRjEw
OUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MTAzNyw2ICszMTA0OCw3IEBACiAJCQkJNUM2ODhBQTMxRDM4MTRCRjAwMEI1NEZBIC8qIFNvY2tl
dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQkFFMUYx
MDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk3QzM5QzM3NDFEREJCOEQzMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlz
dFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDUzOTA0NzBFQUZENjM3MDAzNjk1Qzgg
LyogU291bmRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0QjMwNDNDOTBBRTAzNzFEMDBBODI2
NDcgLyogU291bmRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NEE4MUYzRDBGQzdERkYwMDA5
NTUzMDAgLyogU291cmNlQWxwaGEuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTI0MCw3ICszMTI1
Miw2IEBACiAJCQkJQjI4QzZBMjkwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTJGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMYW5n
U3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzEzNDQ5NkQxNDY5NDFCMzAwNzIwMzEyIC8q
IFNWR0xlbmd0aENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBMzUwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdB
MzgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyN0EzQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xv
Y2F0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMjUwLDcgKzMxMjYxLDYgQEAKIAkJCQlC
MkExRjJCMDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjIyN0E0RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NBMEEyQ0YwNkIwMEQ1NzY2NCAvKiBT
VkdOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0E1MDBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTnVtYmVyTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E1MzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUGFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTYwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NEM2Nzg0QzEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zMTI1OSwxNiArMzEyNjksMTMgQEAKIAkJCQk4NDE5RDJBQzEyMEQ5MkZDMDAx
NDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBNTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg0NzZDOUVGMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUIyMjI3QTgwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2Vn
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDc2QzlFNTExREY2QTBCMDA1NTVCMDIgLyog
U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA4RkYxMDIwMTI5
NTBGNUEwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NEI2Qjk3NzEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RT
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQxOUQyQjkxMjBFMEM3NjAwMTQxRjhGIC8q
IFNWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0MzAwQkRBMTIw
QzlBRUQwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg0QzVCMkZBMTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcxQTU3REYxMTU0QkUyNUMwMDA5RDEyMCAvKiBT
VkdQYXRoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTg3MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIy
N0E4QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3QThFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyN0E5MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWdvbkVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1BvbHlsaW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMjgxLDcgKzMxMjg4LDYg
QEAKIAkJCQlCMjIyN0FBNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFNEFGRDAwRjBEQUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBQTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1N0b3BFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QUFCMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUI3MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjdBQkEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NWR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjIyMjdBQkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTI5NSw3ICszMTMwMSw2IEBACiAJCQkJMUNDREY1QkQxOTkw
MzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBRDkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBREMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9y
bURpc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QURFMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUUxMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyN0FFNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyMjI3QUU5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdVUklSZWZlcmVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTUwOSw2ICszMTUxNCw3IEBACiAJCQkJMEYwOTlEMDgxN0I5
NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzN0Y4MThGRTBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQ0RDRFMjMwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNv
cmVVUkxSZXNwb25zZUlPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDMzlDMzc1MUREQkI4REQw
MEZFRkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNG
MTlCMDcwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVWaWV3Lm0gaW4gU291cmNlcyAqLywKIAkJ
CQlBNUU2MTY3MzE4OTQ1ODFGMDA5QURGNTAgLyogV2ViRGVidWdnZXJBZ2VudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRTBEODRFQjEwNDg0MzZFMDAxQTE3OUUgLyogV2ViRXZlbnQubW0gaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAtMTE4LDE1
ICsxMTgsNiBAQCBteSAlc3ZnQXR0cmlidXRlc0luSFRNTEhhc2ggPSAoCiAgICAgIm9udW5sb2Fk
IiA9PiAxLAogKTsKIAotbXkgJXN2Z1R5cGVOZWVkaW5nVGVhck9mZiA9ICgKLSAgICAiU1ZHTGVu
Z3RoTGlzdCIgPT4gIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoTGlzdD4iLAotICAg
ICJTVkdOdW1iZXJMaXN0IiA9PiAiU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdOdW1iZXJMaXN0
PiIsCi0gICAgIlNWR1BvaW50TGlzdCIgPT4gIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9p
bnRMaXN0PiIsCi0gICAgIlNWR1N0cmluZ0xpc3QiID0+ICJTVkdTdGF0aWNMaXN0UHJvcGVydHlU
ZWFyT2ZmPFNWR1N0cmluZ0xpc3Q+IiwKLSAgICAiU1ZHUGF0aFNlZ0xpc3QiID0+ICJTVkdQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZiIsCi0gICAgIlNWR1RyYW5zZm9ybUxpc3QiID0+ICJTVkdU
cmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmIgotKTsKLQogIyBDYWNoZSBvZiBJREwgZmlsZSBw
YXRobmFtZXMuCiBteSAkaWRsRmlsZXM7CiBteSAkY2FjaGVkSW50ZXJmYWNlcyA9IHt9OwpAQCAt
NjA0LDE2ICs1OTUsNiBAQCBzdWIgSXNOb25Qb2ludGVyVHlwZQogICAgIHJldHVybiAwOwogfQog
Ci1zdWIgSXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYKLXsKLSAgICBteSAoJG9iamVjdCwgJHR5cGUp
ID0gQF87Ci0KLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExU
eXBlIjsKLQotICAgIHJldHVybiAxIGlmIGV4aXN0cyAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmeyR0
eXBlLT5uYW1lfTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3ViIElzVHlwZWRBcnJheVR5cGUKIHsK
ICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CkBAIC02NDAsMzcgKzYyMSw2IEBAIHN1YiBJ
c1JlZlB0clR5cGUKICAgICByZXR1cm4gMTsKIH0KIAotc3ViIEdldFNWR1R5cGVOZWVkaW5nVGVh
ck9mZgotewotICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKLQotICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwotCi0gICAgcmV0dXJuICRzdmdU
eXBlTmVlZGluZ1RlYXJPZmZ7JHR5cGUtPm5hbWV9IGlmIGV4aXN0cyAkc3ZnVHlwZU5lZWRpbmdU
ZWFyT2ZmeyR0eXBlLT5uYW1lfTsKLSAgICByZXR1cm4gdW5kZWY7Ci19Ci0KLXN1YiBHZXRTVkdX
cmFwcGVkVHlwZU5lZWRpbmdUZWFyT2ZmCi17Ci0gICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBf
OwotCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7
Ci0KLSAgICBteSAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmID0gJG9iamVjdC0+R2V0U1ZHVHlwZU5l
ZWRpbmdUZWFyT2ZmKCR0eXBlKTsKLSAgICByZXR1cm4gJHN2Z1R5cGVOZWVkaW5nVGVhck9mZiBp
ZiBub3QgJHN2Z1R5cGVOZWVkaW5nVGVhck9mZjsKLQotICAgIGlmICgkc3ZnVHlwZU5lZWRpbmdU
ZWFyT2ZmID1+IC9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLykgewotICAgICAgICAkc3ZnVHlwZU5l
ZWRpbmdUZWFyT2ZmID1+IHMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZjwvLzsKLSAgICB9IGVsc2lm
ICgkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmID1+IC9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2Zm
LykgewotICAgICAgICAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmID1+IHMvU1ZHU3RhdGljTGlzdFBy
b3BlcnR5VGVhck9mZjwvLzsKLSAgICB9ICBlbHNpZiAoJHN2Z1R5cGVOZWVkaW5nVGVhck9mZiA9
fiAvU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi8pIHsKLSAgICAgICAgJHN2Z1R5cGVO
ZWVkaW5nVGVhck9mZiA9fiBzL1NWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY8Ly87Ci0g
ICAgfSAKLQotICAgICRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPX4gcy8+Ly87Ci0gICAgcmV0dXJu
ICRzdmdUeXBlTmVlZGluZ1RlYXJPZmY7Ci19Ci0KIHN1YiBJc1NWR0FuaW1hdGVkVHlwZU5hbWUK
IHsKICAgICBteSAoJG9iamVjdCwgJHR5cGVOYW1lKSA9IEBfOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC04NDIsOSArODQyLDYgQEAgc3ViIEdldEltcGxDbGFz
c05hbWUKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAKLSAgICBteSAoJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGludGVy
ZmFjZSk7Ci0gICAgcmV0dXJuICRzdmdOYXRpdmVUeXBlIGlmICRzdmdOYXRpdmVUeXBlOwotCiAg
ICAgcmV0dXJuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CiB9CiAKQEAgLTEzNDIsNyArMTMzOSw2
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICRoZWFkZXJJbmNsdWRlc3siU1ZHRWxlbWVudC5o
In0gPSAxIGlmICRjbGFzc05hbWUgPX4gL15KU1NWRy87CiAKICAgICBteSAkaW1wbFR5cGUgPSBH
ZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwotICAgIG15ICgkc3ZnTGlzdFByb3BlcnR5VHlw
ZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkaW50ZXJmYWNlKTsKIAog
ICAgIG15ICRudW1Db25zdGFudHMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0YW50c307CiAgICAgbXkg
JG51bUF0dHJpYnV0ZXMgPSBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9OwpAQCAtMTM1NSw3ICsx
MzUxLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBJbXBs
ZW1lbnRhdGlvbiBjbGFzcyBmb3J3YXJkIGRlY2xhcmF0aW9uCiAgICAgICAgIGlmIChJc0RPTUds
b2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAgQWRkQ2xhc3NGb3J3YXJkSWZO
ZWVkZWQoJGludGVyZmFjZS0+dHlwZSkgdW5sZXNzICRzdmdMaXN0UHJvcGVydHlUeXBlOworICAg
ICAgICAgICAgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQoJGludGVyZmFjZS0+dHlwZSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTEzODgsNyArMTM4NCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9IGVsc2lmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXNxdWVyYWRlc0FzVW5kZWZpbmVkfSkg
ewotICAgICAgICBBZGRJbmNsdWRlc0ZvckltcGxlbWVudGF0aW9uVHlwZUluSGVhZGVyKCRpbXBs
VHlwZSkgdW5sZXNzICRzdmdMaXN0UHJvcGVydHlUeXBlOworICAgICAgICBBZGRJbmNsdWRlc0Zv
ckltcGxlbWVudGF0aW9uVHlwZUluSGVhZGVyKCRpbXBsVHlwZSk7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxU
eXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4i
KTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgZ2xvYmFsT2JqZWN0LT5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKGdsb2JhbE9iamVjdC0+
dm0oKSwgXCJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9iamVjdFwiKTtcbiIpOwpAQCAtMTQwNCw3
ICsxNDAwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICB9XG5cbiIpOyAgCiAgICAgfSBlbHNlIHsKLSAgICAgICAgQWRkSW5jbHVkZXNGb3JJ
bXBsZW1lbnRhdGlvblR5cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnTGlzdFByb3Bl
cnR5VHlwZTsKKyAgICAgICAgQWRkSW5jbHVkZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJbkhlYWRl
cigkaW1wbFR5cGUpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAk
Y2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSAkY2xhc3NOYW1l
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7XG4iKTsKQEAgLTIzNzMs
OSArMjM2OSw3IEBAIHN1YiBHZXROYXRpdmVUeXBlRm9yQ29udmVyc2lvbnMKIHsKICAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7CiAKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2Ut
PnR5cGUtPm5hbWU7Ci0gICAgJGludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZH
VHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2UtPnR5cGUpIGlmICRjb2RlR2VuZXJhdG9yLT5J
c1NWR1R5cGVOZWVkaW5nVGVhck9mZigkaW50ZXJmYWNlLT50eXBlKTsKLSAgICByZXR1cm4gJGlu
dGVyZmFjZU5hbWU7CisgICAgcmV0dXJuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CiB9CiAKICMg
U2VlIGh0dHA6Ly9yZWZzcGVjcy5saW51eC1mb3VuZGF0aW9uLm9yZy9jeHhhYmktMS44My5odG1s
LgpAQCAtMjk2Niw4ICsyOTYwLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNsYXNzTmFt
ZSkgfTtcblxuIik7CiAKLSAgICBteSAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVU
eXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGludGVyZmFjZSk7Ci0KICAgICAjIENvbnN0cnVj
dG9yCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIEFk
ZEluY2x1ZGVzRm9ySW1wbGVtZW50YXRpb25UeXBlSW5JbXBsKCJKU0RPTVdpbmRvd1NoZWxsIik7
CkBAIC0zMzM0LDI3ICszMzI2LDIzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgICAgICAgICBteSBAY2FsbFdpdGhBcmdzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVm
ZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAaW1w
bENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIik7CiAKLSAgICAgICAgICAgICAgICBpZiAoJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNl
cygkYXR0cmlidXRlLCAwLCAkaW50ZXJmYWNlLCAidGhpc09iamVjdC53cmFwcGVkKCkuJGltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAi
dGhpc09iamVjdCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1l
LCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uKFwlaW1wbElu
Y2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkg
JGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1l
bnRlZEJ5fTsKKyAgICAgICAgICAgICAgICBpZiAoJGltcGxlbWVudGVkQnkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOworICAg
ICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRC
eX06OiR7ZnVuY3Rpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3Vt
ZW50cywgImltcGwiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgICAgICAgICAgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGZ1
bmN0aW9uTmFtZSA9ICIke2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9uTmFtZX0iOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1l
LCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uKFwlaW1wbElu
Y2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1w
bGVtZW50ZWRCeX07Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5o
In0gPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJXZWJDb3Jl
Ojoke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uTmFtZX0iOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRp
YzsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1l
fTo6JHtmdW5jdGlvbk5hbWV9IjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wbC4ke2Z1bmN0aW9uTmFtZX0i
OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChA
YXJndW1lbnRzLCBAY2FsbFdpdGhBcmdzKTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGpzVHlw
ZSA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAwLCAkaW50ZXJm
YWNlLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAi
dGhpc09iamVjdCIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+
aXNTdGF0aWM7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpT
VmFsdWUgcmVzdWx0ID0gJGpzVHlwZTtcbiIpOworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rp
b25OYW1lID0gImltcGwuJHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOworICAgICAg
ICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0
dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBA
YXJndW1lbnRzKSAuICIpIiwgInRoaXNPYmplY3QiKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKSBp
ZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAkanNUeXBlO1xuIik7CisKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUtPm5h
bWUgLiAiLnNldChzdGF0ZS52bSgpLCAmdGhpc09iamVjdCwgcmVzdWx0KTtcbiIpIGlmICRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX07CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwogICAgICAg
ICAgICAgfQpAQCAtMzYwNCw0MiArMzU5MiwzNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICgk
c3ZnTGlzdFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAke3N2Z0xpc3RQcm9wZXJ0eVR5cGV9JiBwb2RJbXBsID0gaW1wbC5wcm9wZXJ0
eVJlZmVyZW5jZSgpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmlu
ZyA9ICJwb2RJbXBsLnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKG5hdGl2ZVZhbHVlKSI7Ci0g
ICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24o
c3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1NldHRlck1heVRocm93RXhjZXB0aW9ufTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGZ1bmN0aW9uU3RyaW5nO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgKCRmdW5j
dGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb24o
XCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAg
ICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+U2V0
dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUp
OwogCi0gICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5
VHlwZSgkdHlwZSkgYW5kIG5vdCAkdHlwZS0+bmFtZSBlcSAiQXJyYXlCdWZmZXIiKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZS5nZXQoKSIp
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlw
ZSgkdHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgIm5h
dGl2ZVZhbHVlLnZhbHVlKCkiKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgU2hvdWxkUGFzc1dyYXBwZXJCeVJl
ZmVyZW5jZSgkYXR0cmlidXRlLCAkaW50ZXJmYWNlKSA/ICIqbmF0aXZlVmFsdWUiIDogIldURk1v
dmUobmF0aXZlVmFsdWUpIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntJbXBsZW1lbnRlZEJ5fTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1l
bnRlZEJ5fS5oIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSBp
ZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rp
b25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7Ci0g
ICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7
ZnVuY3Rpb25OYW1lfSI7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbk5hbWV9IjsKLSAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkgYW5kIG5vdCAkdHlwZS0+bmFtZSBlcSAiQXJyYXlCdWZm
ZXIiKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgIm5hdGl2ZVZhbHVl
LmdldCgpIik7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51
bVR5cGUoJHR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgIm5h
dGl2ZVZhbHVlLnZhbHVlKCkiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsIFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2Uo
JGF0dHJpYnV0ZSwgJGludGVyZmFjZSkgPyAiKm5hdGl2ZVZhbHVlIiA6ICJXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBteSAkaW1wbGVt
ZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9
OworICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgeworICAgICAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5oIiwgJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAgICAgICAg
dW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAg
ICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJXZWJDb3JlOjoke2ltcGxlbWVudGVk
Qnl9Ojoke2Z1bmN0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1
dGUtPmlzU3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtp
bnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbk5h
bWV9IjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChA
YXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlckNhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImZhbHNl
IikpOwotICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2Fs
bFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2Fs
bFdpdGh9LCBcQGltcGxDb250ZW50LCAiZmFsc2UiKSk7CisgICAgICAgICAgICAgICAgdW5zaGlm
dChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlckNhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImZh
bHNlIikpOworICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxs
V2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxs
V2l0aH0sIFxAaW1wbENvbnRlbnQsICJmYWxzZSIpKTsKIAotICAgICAgICAgICAgICAgICAgICBt
eSAkZnVuY3Rpb25TdHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1l
bnRzKSAuICIpIjsKLSAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3Bh
Z2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyTWF5VGhyb3dFeGNlcHRpb259Owor
ICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBq
b2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOworICAgICAgICAgICAgICAgICRmdW5jdGlvblN0
cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0
cmluZykiIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlck1heVRocm93
RXhjZXB0aW9ufTsKIAotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkZnVuY3Rpb25TdHJpbmc7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGZ1bmN0aW9uU3RyaW5nO1xuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRydWU7XG4iKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwpAQCAtMzg2MCw4ICszODQwLDYgQEAgRU5ECiAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1l
ID0gJGFyZ3VtZW50LT5uYW1lOwogICAgICAgICAgICAgICAgICAgICBteSAkZW5jb2RlZE5hbWUg
PSAiZW5jb2RlZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CiAgICAgICAg
ICAgICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAk
YXJndW1lbnQtPnR5cGUpOwotICAgICAgICAgICAgICAgICAgICBteSAkaXNUZWFyT2ZmID0gJGNv
ZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKSAmJiAkaW50ZXJmYWNl
TmFtZSAhfiAvTGlzdCQvOwotICAgICAgICAgICAgICAgICAgICBkaWUgIlRlYXJPZmYgdHlwZSBp
cyBub3QgYWxsb3dlZCIgaWYgJGlzVGVhck9mZjsKICAgICAgICAgICAgICAgICAgICAgbXkgJHNo
b3VsZFBhc3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGFyZ3Vt
ZW50LCAkaW50ZXJmYWNlKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNz
QnlSZWZlcmVuY2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAk
Y29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CkBAIC00NDcxLDcgKzQ0
NDksNiBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIG15ICRvdXRl
cjsKICAgICAgICAgICAgIG15ICRpbm5lcjsKICAgICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0g
R2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5cGUpOwotICAgICAgICAgICAg
bXkgJGlzVGVhck9mZiA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigk
dHlwZSkgJiYgJGludGVyZmFjZU5hbWUgIX4gL0xpc3QkLzsKIAogICAgICAgICAgICAgZGllICJW
YXJpYWRpYyBhcmd1bWVudCBpcyBhbHJlYWR5IGhhbmRsZWQgaGVyZSIgaWYgJGFyZ3VtZW50LT5p
c1ZhcmlhZGljOwogICAgICAgICAgICAgbXkgJGFyZ3VtZW50TG9va3VwTWV0aG9kID0gJGFyZ3Vt
ZW50LT5pc09wdGlvbmFsID8gImFyZ3VtZW50IiA6ICJ1bmNoZWNrZWRBcmd1bWVudCI7CkBAIC00
NTMwLDkgKzQ1MDcsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJvd0V4Y2VwdGlvbjsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCRpc1RlYXJPZmYpIHsKLSAgICAgICAgICAgICAg
ICAkdmFsdWUgPSAiJG5hbWUtPnByb3BlcnR5UmVmZXJlbmNlKCkiOwotICAgICAgICAgICAgfSBl
bHNpZiAoU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXJndW1lbnQsICRpbnRlcmZhY2Up
KSB7CisgICAgICAgICAgICBpZiAoU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXJndW1l
bnQsICRpbnRlcmZhY2UpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c1R5cGVkQXJyYXlUeXBlKCR0eXBlKSBhbmQgJHR5cGUtPm5hbWUgbmUgIkFycmF5QnVmZmVyIikg
ewogICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiJG5hbWUucmVsZWFzZU5vbk51bGwoKSI7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTUxNTUsNyArNTEzMCw2IEBAIHN1YiBHZXRJ
RExJbnRlcmZhY2VOYW1lCiB7CiAgICAgbXkgKCR0eXBlKSA9IEBfOwogCi0gICAgcmV0dXJuICRj
b2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpIGlmICRjb2RlR2Vu
ZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlwZSk7CiAgICAgcmV0dXJuICR0eXBl
LT5uYW1lOwogfQogCkBAIC01MjE5LDkgKzUxOTMsNiBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAg
IHJldHVybiBHZXREaWN0aW9uYXJ5Q2xhc3NOYW1lKCR0eXBlLCAkaW50ZXJmYWNlKSBpZiAkY29k
ZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIEdldE5hdGl2
ZVZlY3RvclR5cGUoJHR5cGUpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NlcXVlbmNlT3JGcm96ZW5B
cnJheVR5cGUoJHR5cGUpOwogCi0gICAgbXkgJHRlYXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3It
PkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlwZSk7Ci0gICAgcmV0dXJuICIke3RlYXJPZmZU
eXBlfSoiIGlmICR0ZWFyT2ZmVHlwZTsKLQogICAgIHJldHVybiAiUmVmUHRyPCR7dHlwZU5hbWV9
PiIgaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpIGFuZCAkdHlwZU5h
bWUgbmUgIkFycmF5QnVmZmVyIjsKICAgICByZXR1cm4gIiR7dHlwZU5hbWV9KiI7CiB9CkBAIC01
MjYzLDQwICs1MjM0LDYgQEAgc3ViIEdldE5hdGl2ZVR5cGVGb3JNZW1vaXphdGlvbgogICAgIHJl
dHVybiBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKIH0KIAotc3ViIEdldFNWR1By
b3BlcnR5VHlwZXMKLXsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0KLSAgICBteSAkaW50
ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0KLSAgICBteSAkc3ZnTGlzdFBy
b3BlcnR5VHlwZTsKLSAgICBteSAkc3ZnTmF0aXZlVHlwZTsKLQotICAgIHJldHVybiAoJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKSBpZiBub3QgJGludGVyZmFjZU5hbWUgPX4g
L1NWRy87Ci0KLSAgICAkc3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBl
TmVlZGluZ1RlYXJPZmYoJGludGVyZmFjZS0+dHlwZSk7Ci0gICAgcmV0dXJuICgkc3ZnTGlzdFBy
b3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpIGlmIG5vdCAkc3ZnTmF0aXZlVHlwZTsKLQotICAg
IG15ICRzdmdXcmFwcGVkTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdXcmFwcGVk
VHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2UtPnR5cGUpOwotICAgIGlmICgkc3ZnTmF0aXZl
VHlwZSA9fiAvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi8gb3IgJHN2Z05hdGl2ZVR5cGUgPX4gL1NW
R1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYvKSB7Ci0gICAgICAgICRzdmdMaXN0UHJvcGVydHlU
eXBlID0gJHN2Z1dyYXBwZWROYXRpdmVUeXBlOwotICAgICAgICAkaGVhZGVySW5jbHVkZXN7IiRz
dmdXcmFwcGVkTmF0aXZlVHlwZS5oIn0gPSAxOwotICAgICAgICAkaGVhZGVySW5jbHVkZXN7IlNW
R0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIn0gPSAxOwotICAgIH0gZWxzaWYgKCRzdmdO
YXRpdmVUeXBlID1+IC9TVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLykgewotICAgICAg
ICAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9ICRzdmdXcmFwcGVkTmF0aXZlVHlwZTsKLSAgICAgICAg
JGhlYWRlckluY2x1ZGVzeyIkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUuaCJ9ID0gMTsKLSAgICAgICAg
JGhlYWRlckluY2x1ZGVzeyJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCJ9ID0gMTsK
LSAgICAgICAgJGhlYWRlckluY2x1ZGVzeyJTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2Zm
LmgifSA9IDE7Ci0gICAgfSBlbHNpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR1BhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmLykgewotICAgICAgICAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9ICRzdmdX
cmFwcGVkTmF0aXZlVHlwZTsKLSAgICAgICAgJGhlYWRlckluY2x1ZGVzeyIkc3ZnV3JhcHBlZE5h
dGl2ZVR5cGUuaCJ9ID0gMTsKLSAgICAgICAgJGhlYWRlckluY2x1ZGVzeyJTVkdBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmYuaCJ9ID0gMTsKLSAgICAgICAgJGhlYWRlckluY2x1ZGVzeyJTVkdQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIn0gPSAxOwotICAgIH0KLQotICAgIHJldHVybiAo
JHN2Z0xpc3RQcm9wZXJ0eVR5cGUsICRzdmdOYXRpdmVUeXBlKTsKLX0KLQogc3ViIEdldEludGVn
ZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogewogICAgIG15ICRjb250ZXh0ID0gc2hpZnQ7CkBA
IC01NTA5LDIzICs1NDQ2LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIGlmICgkdHlwZS0+
bmFtZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewogICAgICAgICByZXR1cm4gIiR2YWx1
ZSA/ICR2YWx1ZS0+ZGVzZXJpYWxpemUoJHN0YXRlUmVmZXJlbmNlLCAkZ2xvYmFsT2JqZWN0KSA6
IGpzTnVsbCgpIjsKICAgICB9Ci0gICAgCi0gICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBw
ZXJUeXBlKCR0eXBlKSAmJiAhJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBl
KSkgewotICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRpbnRl
cmZhY2UtPnR5cGUpIG9yICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJTVkdWaWV3U3BlYyIg
YW5kICR0eXBlLT5uYW1lIGVxICJTVkdUcmFuc2Zvcm1MaXN0IikpIHsKLSAgICAgICAgICAgICMg
Q29udmVydCBmcm9tIGFic3RyYWN0IFJlZlB0cjxMaXN0UHJvcGVydHk+IHRvIHJlYWwgdHlwZSwg
c28gdGhlIHJpZ2h0IHRvSlMoKSBtZXRob2QgY2FuIGJlIGludm9rZWQuCi0gICAgICAgICAgICAk
dmFsdWUgPSAic3RhdGljX2Nhc3Q8IiAuIEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUp
IC4gIj4oJHZhbHVlLmdldCgpKSI7Ci0gICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgZXEgIlNWR1ZpZXdTcGVjIikgewotICAgICAgICAgICAgIyBDb252ZXJ0IGZyb20gYWJz
dHJhY3QgU1ZHUHJvcGVydHkgdG8gcmVhbCB0eXBlLCBzbyB0aGUgcmlnaHQgdG9KUygpIG1ldGhv
ZCBjYW4gYmUgaW52b2tlZC4KLSAgICAgICAgICAgICR2YWx1ZSA9ICJzdGF0aWNfY2FzdDwiIC4g
R2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSkgLiAiPigkdmFsdWUpIjsKLSAgICAgICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKSBh
bmQgbm90ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgPX4gL0xpc3QkLykgewotICAgICAgICAgICAg
bXkgJHRlYXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9m
ZigkdHlwZSk7Ci0gICAgICAgICAgICBpZiAoJHRlYXJPZmZUeXBlID1+IC9TVkdTdGF0aWNMaXN0
UHJvcGVydHlUZWFyT2ZmLykgewotICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIke3RlYXJPZmZU
eXBlfTo6Y3JlYXRlKGltcGwsICR2YWx1ZSkiOwotICAgICAgICAgICAgfSBlbHNpZiAobm90ICR0
ZWFyT2ZmVHlwZSA9fiAvU1ZHKFBvaW50fFBhdGhTZWcpTGlzdC8pIHsKLSAgICAgICAgICAgICAg
ICAkdmFsdWUgPSAiJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZSgkdmFsdWUpIjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KIAogICAgICR2YWx1ZSA9ICJCaW5kaW5nU2VjdXJpdHk6OmNo
ZWNrU2VjdXJpdHlGb3JOb2RlKCRzdGF0ZVJlZmVyZW5jZSwgJHZhbHVlKSIgaWYgJGNvbnRleHQt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHlGb3JOb2RlfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHJldmlz
aW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlNW
R1Jlc291cmNlc0NhY2hlLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1
ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlN0cm9rZVN0eWxlQXBwbGllci5oIgog
I2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJTVkdSZXNvdXJjZXNDYWNoZS5oIgogI2luY2x1
ZGUgIlNWR1Jvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJTVkdUZXh0RWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5o
IgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0UGF0aC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2
IEBACiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdSb290SW5saW5l
Qm94LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dFBhdGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVHJh
bnNmb3JtTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCisjaW5jbHVk
ZSAiU1ZHUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUG9seWdvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdQb2x5bGluZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdSZWN0RWxlbWVudC5oIgpA
QCAtODksNyArOTAsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVQYXRoRnJvbVBhdGhFbGVtZW50KFNW
CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZVBhdGhGcm9tUG9seWdvbkVsZW1lbnQoU1ZHRWxlbWVudCog
ZWxlbWVudCwgUGF0aCYgcGF0aCkKIHsKLSAgICBTVkdQb2ludExpc3QmIHBvaW50cyA9IGRvd25j
YXN0PFNWR1BvbHlnb25FbGVtZW50PihlbGVtZW50KS0+YW5pbWF0ZWRQb2ludHMoKS0+dmFsdWVz
KCk7CisgICAgYXV0byYgcG9pbnRzID0gZG93bmNhc3Q8U1ZHUG9seWdvbkVsZW1lbnQ+KGVsZW1l
bnQpLT5hbmltYXRlZFBvaW50cygpLT52YWx1ZXMoKTsKICAgICBpZiAocG9pbnRzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDQsNyArMTA1LDcgQEAgc3RhdGljIHZvaWQgdXBk
YXRlUGF0aEZyb21Qb2x5Z29uRWxlbWVudAogCiBzdGF0aWMgdm9pZCB1cGRhdGVQYXRoRnJvbVBv
bHlsaW5lRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50LCBQYXRoJiBwYXRoKQogewotICAgIFNW
R1BvaW50TGlzdCYgcG9pbnRzID0gZG93bmNhc3Q8U1ZHUG9seWxpbmVFbGVtZW50PihlbGVtZW50
KS0+YW5pbWF0ZWRQb2ludHMoKS0+dmFsdWVzKCk7CisgICAgYXV0byYgcG9pbnRzID0gZG93bmNh
c3Q8U1ZHUG9seWxpbmVFbGVtZW50PihlbGVtZW50KS0+YW5pbWF0ZWRQb2ludHMoKS0+dmFsdWVz
KCk7CiAgICAgaWYgKHBvaW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBA
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKICNp
bmNsdWRlICJTVkdQb2x5RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1JlY3RFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHUm9vdElubGluZUJveC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsNyArMTU3LDcgQEAgdm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmJ1aQog
ICAgICAgICBmaWxsQ2hhcmFjdGVyRGF0YU1hcChtX3RleHRQb3NpdGlvbnNbaV0pOwogfQogCi1z
dGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlQ2hhcmFjdGVyRGF0YSh1bnNpZ25lZCBpLCBmbG9hdCYg
bGFzdFJvdGF0aW9uLCBTVkdDaGFyYWN0ZXJEYXRhJiBkYXRhLCBjb25zdCBTVkdMZW5ndGhDb250
ZXh0JiBsZW5ndGhDb250ZXh0LCBjb25zdCBTVkdMZW5ndGhMaXN0KiB4TGlzdCwgY29uc3QgU1ZH
TGVuZ3RoTGlzdCogeUxpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3QqIGR4TGlzdCwgY29uc3QgU1ZH
TGVuZ3RoTGlzdCogZHlMaXN0LCBjb25zdCBTVkdOdW1iZXJMaXN0KiByb3RhdGVMaXN0KQorc3Rh
dGljIGlubGluZSB2b2lkIHVwZGF0ZUNoYXJhY3RlckRhdGEodW5zaWduZWQgaSwgZmxvYXQmIGxh
c3RSb3RhdGlvbiwgU1ZHQ2hhcmFjdGVyRGF0YSYgZGF0YSwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4
dCYgbGVuZ3RoQ29udGV4dCwgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogeExpc3QsIGNvbnN0
IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHlMaXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzKiBk
eExpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIGR5TGlzdCwgY29uc3QgU1ZHTnVtYmVy
TGlzdFZhbHVlcyogcm90YXRlTGlzdCkKIHsKICAgICBpZiAoeExpc3QpCiAgICAgICAgIGRhdGEu
eCA9IHhMaXN0LT5hdChpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKQEAgLTE3NSwxMSArMTc1LDEx
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVDaGFyYWN0ZXJEYXRhKHUKIAogdm9pZCBTVkdU
ZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmZpbGxDaGFyYWN0ZXJEYXRhTWFwKGNvbnN0IFRl
eHRQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0gICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCYgeExpc3Qg
PSBwb3NpdGlvbi5lbGVtZW50LT54KCk7Ci0gICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCYgeUxpc3Qg
PSBwb3NpdGlvbi5lbGVtZW50LT55KCk7Ci0gICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCYgZHhMaXN0
ID0gcG9zaXRpb24uZWxlbWVudC0+ZHgoKTsKLSAgICBjb25zdCBTVkdMZW5ndGhMaXN0JiBkeUxp
c3QgPSBwb3NpdGlvbi5lbGVtZW50LT5keSgpOwotICAgIGNvbnN0IFNWR051bWJlckxpc3QmIHJv
dGF0ZUxpc3QgPSBwb3NpdGlvbi5lbGVtZW50LT5yb3RhdGUoKTsKKyAgICBjb25zdCBhdXRvJiB4
TGlzdCA9IHBvc2l0aW9uLmVsZW1lbnQtPngoKTsKKyAgICBjb25zdCBhdXRvJiB5TGlzdCA9IHBv
c2l0aW9uLmVsZW1lbnQtPnkoKTsKKyAgICBjb25zdCBhdXRvJiBkeExpc3QgPSBwb3NpdGlvbi5l
bGVtZW50LT5keCgpOworICAgIGNvbnN0IGF1dG8mIGR5TGlzdCA9IHBvc2l0aW9uLmVsZW1lbnQt
PmR5KCk7CisgICAgY29uc3QgYXV0byYgcm90YXRlTGlzdCA9IHBvc2l0aW9uLmVsZW1lbnQtPnJv
dGF0ZSgpOwogCiAgICAgdW5zaWduZWQgeExpc3RTaXplID0geExpc3Quc2l6ZSgpOwogICAgIHVu
c2lnbmVkIHlMaXN0U2l6ZSA9IHlMaXN0LnNpemUoKTsKQEAgLTE5MiwxMSArMTkyLDExIEBAIHZv
aWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpmaWwKICAgICBmbG9hdCBsYXN0Um90
YXRpb24gPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1ZSgpOwogICAgIFNWR0xl
bmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChwb3NpdGlvbi5lbGVtZW50KTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcG9zaXRpb24ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgY29uc3Qg
U1ZHTGVuZ3RoTGlzdCogeExpc3RQdHIgPSBpIDwgeExpc3RTaXplID8gJnhMaXN0IDogMDsKLSAg
ICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCogeUxpc3RQdHIgPSBpIDwgeUxpc3RTaXplID8gJnlM
aXN0IDogMDsKLSAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCogZHhMaXN0UHRyID0gaSA8IGR4
TGlzdFNpemUgPyAmZHhMaXN0IDogMDsKLSAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdCogZHlM
aXN0UHRyID0gaSA8IGR5TGlzdFNpemUgPyAmZHlMaXN0IDogMDsKLSAgICAgICAgY29uc3QgU1ZH
TnVtYmVyTGlzdCogcm90YXRlTGlzdFB0ciA9IGkgPCByb3RhdGVMaXN0U2l6ZSA/ICZyb3RhdGVM
aXN0IDogMDsKKyAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogeExpc3RQdHIgPSBp
IDwgeExpc3RTaXplID8gJnhMaXN0IDogMDsKKyAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZh
bHVlcyogeUxpc3RQdHIgPSBpIDwgeUxpc3RTaXplID8gJnlMaXN0IDogMDsKKyAgICAgICAgY29u
c3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHhMaXN0UHRyID0gaSA8IGR4TGlzdFNpemUgPyAmZHhM
aXN0IDogMDsKKyAgICAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHlMaXN0UHRyID0g
aSA8IGR5TGlzdFNpemUgPyAmZHlMaXN0IDogMDsKKyAgICAgICAgY29uc3QgU1ZHTnVtYmVyTGlz
dFZhbHVlcyogcm90YXRlTGlzdFB0ciA9IGkgPCByb3RhdGVMaXN0U2l6ZSA/ICZyb3RhdGVMaXN0
IDogMDsKICAgICAgICAgaWYgKCF4TGlzdFB0ciAmJiAheUxpc3RQdHIgJiYgIWR4TGlzdFB0ciAm
JiAhZHlMaXN0UHRyICYmICFyb3RhdGVMaXN0UHRyKQogICAgICAgICAgICAgYnJlYWs7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcg
KzExMyw3IEBACiAjaW5jbHVkZSAiU1ZHSW1hZ2VMb2FkZXIuY3BwIgogI2luY2x1ZGUgIlNWR0xh
bmdTcGFjZS5jcHAiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoQ29udGV4dC5jcHAiCi0jaW5jbHVkZSAi
U1ZHTGVuZ3RoTGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAiCiAj
aW5jbHVkZSAiU1ZHTGluZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmNwcCIKQEAgLTEyMiw3ICsxMjIs
NyBAQAogI2luY2x1ZGUgIlNWR01hc2tFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdNZXRhZGF0
YUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIgotI2lu
Y2x1ZGUgIlNWR051bWJlckxpc3QuY3BwIgorI2luY2x1ZGUgIlNWR051bWJlckxpc3RWYWx1ZXMu
Y3BwIgogI2luY2x1ZGUgIlNWR1BhaW50LmNwcCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRp
ZXMuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhCbGVuZGVyLmNwcCIKQEAgLTEzNCwxMiArMTM0LDEz
IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuY3BwIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdM
aXN0QnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwIgorI2lu
Y2x1ZGUgIlNWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU3RyaW5n
QnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAiCiAjaW5jbHVk
ZSAiU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0
aWxpdGllcy5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0dGVybkVsZW1lbnQuY3BwIgotI2luY2x1ZGUg
IlNWR1BvaW50TGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcCIKICNp
bmNsdWRlICJTVkdQb2x5RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9seWdvbkVsZW1lbnQu
Y3BwIgogI2luY2x1ZGUgIlNWR1BvbHlsaW5lRWxlbWVudC5jcHAiCkBAIC0xNTAsNyArMTUxLDcg
QEAKICNpbmNsdWRlICJTVkdTY3JpcHRFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdTZXRFbGVt
ZW50LmNwcCIKICNpbmNsdWRlICJTVkdTdG9wRWxlbWVudC5jcHAiCi0jaW5jbHVkZSAiU1ZHU3Ry
aW5nTGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAiCiAjaW5jbHVk
ZSAiU1ZHU3R5bGVFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdTd2l0Y2hFbGVtZW50LmNwcCIK
ICNpbmNsdWRlICJTVkdTeW1ib2xFbGVtZW50LmNwcCIKQEAgLTE2NCw3ICsxNjUsNyBAQAogI2lu
Y2x1ZGUgIlNWR1RpdGxlRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmNwcCIK
ICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAiCi0jaW5jbHVkZSAiU1ZHVHJhbnNm
b3JtTGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAiCiAjaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5jcHAiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmNw
cCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmdsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5o
CShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNWR0FuZ2xlIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVlPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdBbmdsZT4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVy
dHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdBbmdsZVZhbHVl
JiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0FuZ2xlVmFs
dWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmdsZShhbmltYXRlZFByb3BlcnR5LCByb2xl
LCB2YWx1ZSkpOwogICAgIH0KIApAQCAtMTM4LDggKzEzNyw4IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgU1ZHQW5nbGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9w
ZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0FuZ2xlVmFsdWUmIHZhbHVlKQotICAgICAg
ICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVlPihhbmltYXRlZFByb3BlcnR5LCBy
b2xlLCB2YWx1ZSkKKyAgICBTVkdBbmdsZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFBy
b3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUpCisgICAg
ICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KCZhbmltYXRlZFByb3BlcnR5
LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJTVkdQYXRoRGF0YS5oIgogI2luY2x1ZGUg
IlNWR1BhdGhFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgotI2luY2x1
ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNw
cAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVu
Z3RoTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0QW5pbWF0b3I6OlNWR0FuaW1hdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoTGlzdChzdGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aExp
c3Q+KCkpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVM
ZW5ndGhMaXN0KHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4oKSk7CiAgICAg
YW5pbWF0ZWRUeXBlLT5sZW5ndGhMaXN0KCkucGFyc2Uoc3RyaW5nLCBtX2xlbmd0aE1vZGUpOwog
ICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEEKICAgICAgICAgdG9MZW5ndGhMaXN0W2ldLnNl
dFZhbHVlKHRvTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21MZW5ndGhM
aXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpLCBsZW5ndGhDb250ZXh0KTsKIH0KIAotc3RhdGlj
IFNWR0xlbmd0aExpc3QgcGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVt
ZW50KiBhbmltYXRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0YXRpYyBTVkdM
ZW5ndGhMaXN0VmFsdWVzIHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxl
bWVudCogYW5pbWF0aW9uRWxlbWVudCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgU1ZH
TGVuZ3RoTGlzdCBsZW5ndGhMaXN0OworICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbGVuZ3RoTGlz
dDsKICAgICBsZW5ndGhMaXN0LnBhcnNlKHN0cmluZywgU1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1v
ZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhbmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVO
YW1lKCkpKTsKICAgICByZXR1cm4gbGVuZ3RoTGlzdDsKIH0KQEAgLTk4LDEwICs5OCwxMCBAQCB2
b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjCiAgICAgYXV0byYgYW5pbWF0
ZWRMZW5ndGhMaXN0ID0gYW5pbWF0ZWQtPmxlbmd0aExpc3QoKTsKIAogICAgIC8vIEFwcGx5IENT
UyBpbmhlcml0YW5jZSBydWxlcy4KLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvcklu
aGVyaXRhbmNlPFNWR0xlbmd0aExpc3Q+KHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmcsIG1fYW5p
bWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBlKCksIGZyb21MZW5ndGhMaXN0LCBt
X2NvbnRleHRFbGVtZW50KTsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVy
aXRhbmNlPFNWR0xlbmd0aExpc3Q+KHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmcsIG1fYW5pbWF0
aW9uRWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlwZSgpLCB0b0xlbmd0aExpc3QsIG1fY29udGV4
dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8
U1ZHTGVuZ3RoTGlzdFZhbHVlcz4ocGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZywgbV9hbmltYXRp
b25FbGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSwgZnJvbUxlbmd0aExpc3QsIG1fY29u
dGV4dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFu
Y2U8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4ocGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZywgbV9hbmlt
YXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBlKCksIHRvTGVuZ3RoTGlzdCwgbV9jb250
ZXh0RWxlbWVudCk7CiAKLSAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRv
TGlzdFZhbHVlczxTVkdMZW5ndGhMaXN0Pihmcm9tTGVuZ3RoTGlzdCwgdG9MZW5ndGhMaXN0LCBh
bmltYXRlZExlbmd0aExpc3QsIHBlcmNlbnRhZ2UpKQorICAgIGlmICghbV9hbmltYXRpb25FbGVt
ZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR0xlbmd0aExpc3RWYWx1ZXM+KGZyb21MZW5n
dGhMaXN0LCB0b0xlbmd0aExpc3QsIGFuaW1hdGVkTGVuZ3RoTGlzdCwgcGVyY2VudGFnZSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGZyb21MZW5ndGhMaXN0U2l6ZSA9IGZyb21M
ZW5ndGhMaXN0LnNpemUoKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdEFuaW1hdG9yOjpjYWxjCiAKIGZsb2F0IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNW
R0xlbmd0aExpc3QgcmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBmb3IgZXZlcnkgc2lu
Z2xlIHZhbHVlLgorICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9z
c2libGUgZm9yIFNWR0xlbmd0aExpc3RWYWx1ZXMgcmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0
YW5jZSBmb3IgZXZlcnkgc2luZ2xlIHZhbHVlLgogICAgIHJldHVybiAtMTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAkocmV2aXNpb24gMjA4
Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiwxNCArMjIsMTUgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgog
I2luY2x1ZGUgIlNWR0xlbmd0aC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZjxTVkdMZW5ndGhMaXN0PiBTVkdBbmltYXRlZExlbmd0aExpc3Q7Cit1c2luZyBTVkdBbmltYXRl
ZExlbmd0aExpc3QgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoTGlz
dFZhbHVlcz47CiAKIC8vIEhlbHBlciBtYWNyb3MgdG8gZGVjbGFyZS9kZWZpbmUgYSBTVkdBbmlt
YXRlZExlbmd0aExpc3Qgb2JqZWN0CiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJ
U1QoVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVDTEFSRV9BTklNQVRFRF9MSVNU
X1BST1BFUlRZKFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShTVkdB
bmltYXRlZExlbmd0aExpc3QsIFNWR0xlbmd0aExpc3RWYWx1ZXMsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBERUZJ
TkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRMZW5ndGhMaXN0LCBPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlz
dC5pZGwJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZExlbmd0aExpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw0ICsyOSwzIEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFNWR0xlbmd0aExpc3QgYmFzZVZhbDsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgU1ZHTGVuZ3RoTGlzdCBhbmltVmFsOwogfTsKLQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBAIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpTVkdBbmlt
YXQKIAogc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJM
aXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
Ci0gICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxp
c3Qoc3RkOjptYWtlX3VuaXF1ZTxTVkdOdW1iZXJMaXN0PigpKTsKKyAgICBhdXRvIGFuaW1hdGVk
VHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyTGlzdChzdGQ6Om1ha2VfdW5pcXVl
PFNWR051bWJlckxpc3RWYWx1ZXM+KCkpOwogICAgIGFuaW1hdGVkVHlwZS0+bnVtYmVyTGlzdCgp
LnBhcnNlKHN0cmluZyk7CiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KQEAgLTY3LDggKzY3
LDggQEAgdm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6YWRkQQogICAgIEFTU0VS
VChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWROdW1iZXJMaXN0KTsKICAgICBBU1NFUlQoZnJvbS0+
dHlwZSgpID09IHRvLT50eXBlKCkpOwogCi0gICAgY29uc3QgU1ZHTnVtYmVyTGlzdCYgZnJvbU51
bWJlckxpc3QgPSBmcm9tLT5udW1iZXJMaXN0KCk7Ci0gICAgU1ZHTnVtYmVyTGlzdCYgdG9OdW1i
ZXJMaXN0ID0gdG8tPm51bWJlckxpc3QoKTsKKyAgICBjb25zdCBhdXRvJiBmcm9tTnVtYmVyTGlz
dCA9IGZyb20tPm51bWJlckxpc3QoKTsKKyAgICBhdXRvJiB0b051bWJlckxpc3QgPSB0by0+bnVt
YmVyTGlzdCgpOwogCiAgICAgdW5zaWduZWQgZnJvbU51bWJlckxpc3RTaXplID0gZnJvbU51bWJl
ckxpc3Quc2l6ZSgpOwogICAgIGlmICghZnJvbU51bWJlckxpc3RTaXplIHx8IGZyb21OdW1iZXJM
aXN0U2l6ZSAhPSB0b051bWJlckxpc3Quc2l6ZSgpKQpAQCAtODIsMTEgKzgyLDExIEBAIHZvaWQg
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGMKIHsKICAgICBBU1NFUlQobV9hbmlt
YXRpb25FbGVtZW50KTsKIAotICAgIGNvbnN0IFNWR051bWJlckxpc3QmIGZyb21OdW1iZXJMaXN0
ID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBh
bmltYXRlZC0+bnVtYmVyTGlzdCgpIDogZnJvbS0+bnVtYmVyTGlzdCgpOwotICAgIGNvbnN0IFNW
R051bWJlckxpc3QmIHRvTnVtYmVyTGlzdCA9IHRvLT5udW1iZXJMaXN0KCk7Ci0gICAgY29uc3Qg
U1ZHTnVtYmVyTGlzdCYgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJMaXN0ID0gdG9BdEVuZE9mRHVy
YXRpb24tPm51bWJlckxpc3QoKTsKLSAgICBTVkdOdW1iZXJMaXN0JiBhbmltYXRlZE51bWJlckxp
c3QgPSBhbmltYXRlZC0+bnVtYmVyTGlzdCgpOwotICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50
LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR051bWJlckxpc3Q+KGZyb21OdW1iZXJMaXN0LCB0
b051bWJlckxpc3QsIGFuaW1hdGVkTnVtYmVyTGlzdCwgcGVyY2VudGFnZSkpCisgICAgY29uc3Qg
YXV0byYgZnJvbU51bWJlckxpc3QgPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUo
KSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5udW1iZXJMaXN0KCkgOiBmcm9tLT5udW1iZXJM
aXN0KCk7CisgICAgY29uc3QgYXV0byYgdG9OdW1iZXJMaXN0ID0gdG8tPm51bWJlckxpc3QoKTsK
KyAgICBjb25zdCBhdXRvJiB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlckxpc3QgPSB0b0F0RW5kT2ZE
dXJhdGlvbi0+bnVtYmVyTGlzdCgpOworICAgIGF1dG8mIGFuaW1hdGVkTnVtYmVyTGlzdCA9IGFu
aW1hdGVkLT5udW1iZXJMaXN0KCk7CisgICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVz
dEZyb21Ub0xpc3RWYWx1ZXM8U1ZHTnVtYmVyTGlzdFZhbHVlcz4oZnJvbU51bWJlckxpc3QsIHRv
TnVtYmVyTGlzdCwgYW5pbWF0ZWROdW1iZXJMaXN0LCBwZXJjZW50YWdlKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgdW5zaWduZWQgZnJvbU51bWJlckxpc3RTaXplID0gZnJvbU51bWJlckxpc3Qu
c2l6ZSgpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5p
bWF0b3I6OmNhbGMKIAogZmxvYXQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1
bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgLy8gRklY
TUU6IERpc3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBwb3NzaWJsZSBmb3IgU1ZHTnVtYmVyTGlz
dCByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIGZvciBldmVyeSBzaW5nbGUgdmFsdWUu
CisgICAgLy8gRklYTUU6IERpc3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBwb3NzaWJsZSBmb3Ig
U1ZHTnVtYmVyTGlzdFZhbHVlcyByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIGZvciBl
dmVyeSBzaW5nbGUgdmFsdWUuCiAgICAgcmV0dXJuIC0xOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDExICsyNiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIFNWR0Fu
aW1hdGVkTnVtYmVyTGlzdCA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdOdW1i
ZXJMaXN0PjsKK3VzaW5nIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCA9IFNWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZjxTVkdOdW1iZXJMaXN0VmFsdWVzPjsKIAogLy8gSGVscGVyIG1hY3JvcyB0
byBkZWNsYXJlL2RlZmluZSBhIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBvYmplY3QKICNkZWZpbmUg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5
KSBcCi1ERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
LCBTVkdOdW1iZXJMaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVDTEFSRV9B
TklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkTnVtYmVyTGlzdCwgU1ZHTnVtYmVyTGlz
dFZhbHVlcywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVf
QU5JTUFURURfTlVNQkVSX0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpIFwKIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51
bWJlckxpc3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1l
KCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQYXRoLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDkgQEAg
dm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6c3RvcEFuaW1WYQogdm9pZCBTVkdBbmltYXRl
ZFBhdGhBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHUGF0aEJ5dGVTdHJlYW0qIGJ5dGVT
dHJlYW0pCiB7CiAgICAgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogcHJv
cGVydHkgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxTVkdBbmltYXRlZFBhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihhbmltYXRlZFR5cGVzWzBdLnByb3BlcnRpZXNbMF0uZ2V0
KCkpOwotICAgIGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBiYXNlVmFsdWUgPSBwcm9wZXJ0eS0+Y3Vy
cmVudEJhc2VWYWx1ZSgpOworICAgIGNvbnN0IGF1dG8mIGJhc2VWYWx1ZSA9IHByb3BlcnR5LT5j
dXJyZW50QmFzZVZhbHVlKCk7CiAKLSAgICBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1Bh
dGhTZWdMaXN0KGJhc2VWYWx1ZSwgKmJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpOworICAg
IGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoYmFzZVZhbHVl
LCAqYnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+PiByZXN1bHQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAkocmV2aXNpb24gMjA4
Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50
QmFzZS5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1Bv
aW50LmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0
VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNyArMzQsNyBAQCBTVkdB
bmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpTVkdBbmltYXRlCiAKIHN0ZDo6dW5pcXVlX3B0cjxT
VkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgYXV0byBhbmltYXRlZFR5cGUg
PSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBvaW50TGlzdChzdGQ6Om1ha2VfdW5pcXVlPFNWR1Bv
aW50TGlzdD4oKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZVBvaW50TGlzdChzdGQ6Om1ha2VfdW5pcXVlPFNWR1BvaW50TGlzdFZhbHVlcz4oKSk7CiAg
ICAgcG9pbnRzTGlzdEZyb21TVkdEYXRhKGFuaW1hdGVkVHlwZS0+cG9pbnRMaXN0KCksIHN0cmlu
Zyk7CiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KQEAgLTY5LDggKzY5LDggQEAgdm9pZCBT
VkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjphZGRBbgogICAgIEFTU0VSVChmcm9tLT50eXBl
KCkgPT0gQW5pbWF0ZWRQb2ludHMpOwogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5
cGUoKSk7CiAKLSAgICBjb25zdCBTVkdQb2ludExpc3QmIGZyb21Qb2ludExpc3QgPSBmcm9tLT5w
b2ludExpc3QoKTsKLSAgICBTVkdQb2ludExpc3QmIHRvUG9pbnRMaXN0ID0gdG8tPnBvaW50TGlz
dCgpOworICAgIGNvbnN0IGF1dG8mIGZyb21Qb2ludExpc3QgPSBmcm9tLT5wb2ludExpc3QoKTsK
KyAgICBhdXRvJiB0b1BvaW50TGlzdCA9IHRvLT5wb2ludExpc3QoKTsKIAogICAgIHVuc2lnbmVk
IGZyb21Qb2ludExpc3RTaXplID0gZnJvbVBvaW50TGlzdC5zaXplKCk7CiAgICAgaWYgKCFmcm9t
UG9pbnRMaXN0U2l6ZSB8fCBmcm9tUG9pbnRMaXN0U2l6ZSAhPSB0b1BvaW50TGlzdC5zaXplKCkp
CkBAIC04NCwxMSArODQsMTEgQEAgdm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpj
YWxjdQogewogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogCi0gICAgY29uc3QgU1ZH
UG9pbnRMaXN0JiBmcm9tUG9pbnRMaXN0ID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25N
b2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+cG9pbnRMaXN0KCkgOiBmcm9tLT5wb2lu
dExpc3QoKTsKLSAgICBjb25zdCBTVkdQb2ludExpc3QmIHRvUG9pbnRMaXN0ID0gdG8tPnBvaW50
TGlzdCgpOwotICAgIGNvbnN0IFNWR1BvaW50TGlzdCYgdG9BdEVuZE9mRHVyYXRpb25Qb2ludExp
c3QgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+cG9pbnRMaXN0KCk7Ci0gICAgU1ZHUG9pbnRMaXN0JiBh
bmltYXRlZFBvaW50TGlzdCA9IGFuaW1hdGVkLT5wb2ludExpc3QoKTsKLSAgICBpZiAoIW1fYW5p
bWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdQb2ludExpc3Q+KGZyb21Q
b2ludExpc3QsIHRvUG9pbnRMaXN0LCBhbmltYXRlZFBvaW50TGlzdCwgcGVyY2VudGFnZSkpCisg
ICAgY29uc3QgYXV0byYgZnJvbVBvaW50TGlzdCA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPnBvaW50TGlzdCgpIDogZnJvbS0+
cG9pbnRMaXN0KCk7CisgICAgY29uc3QgYXV0byYgdG9Qb2ludExpc3QgPSB0by0+cG9pbnRMaXN0
KCk7CisgICAgY29uc3QgYXV0byYgdG9BdEVuZE9mRHVyYXRpb25Qb2ludExpc3QgPSB0b0F0RW5k
T2ZEdXJhdGlvbi0+cG9pbnRMaXN0KCk7CisgICAgYXV0byYgYW5pbWF0ZWRQb2ludExpc3QgPSBh
bmltYXRlZC0+cG9pbnRMaXN0KCk7CisgICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVz
dEZyb21Ub0xpc3RWYWx1ZXM8U1ZHUG9pbnRMaXN0VmFsdWVzPihmcm9tUG9pbnRMaXN0LCB0b1Bv
aW50TGlzdCwgYW5pbWF0ZWRQb2ludExpc3QsIHBlcmNlbnRhZ2UpKQogICAgICAgICByZXR1cm47
CiAKICAgICB1bnNpZ25lZCBmcm9tUG9pbnRMaXN0U2l6ZSA9IGZyb21Qb2ludExpc3Quc2l6ZSgp
OwpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6
Y2FsY3UKIAogZmxvYXQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlz
dGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKIHsKLSAgICAvLyBGSVhNRTogRGlz
dGFuY2UgY2FsY3VsYXRpb24gaXMgbm90IHBvc3NpYmxlIGZvciBTVkdQb2ludExpc3QgcmlnaHQg
bm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBvZiBmb3IgZXZlcnkgc2luZ2xlIHZhbHVlLgorICAg
IC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR1Bv
aW50TGlzdFZhbHVlcyByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIG9mIGZvciBldmVy
eSBzaW5nbGUgdmFsdWUuCiAgICAgcmV0dXJuIC0xOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDcgKzI1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+IFNWR0FuaW1hdGVkUG9pbnRMaXN0Owor
dXNpbmcgU1ZHQW5pbWF0ZWRQb2ludExpc3QgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmY8U1ZHUG9pbnRMaXN0VmFsdWVzPiA7CiAKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Qu
Y3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6U1ZHQW5pCiAKIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGF1dG8gYW5pbWF0ZWRUeXBl
ID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVUcmFuc2Zvcm1MaXN0KHN0ZDo6bWFrZV91bmlxdWU8
U1ZHVHJhbnNmb3JtTGlzdD4oKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZVRyYW5zZm9ybUxpc3Qoc3RkOjptYWtlX3VuaXF1ZTxTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzPigpKTsKICAgICBhbmltYXRlZFR5cGUtPnRyYW5zZm9ybUxpc3QoKS5wYXJzZSht
X3RyYW5zZm9ybVR5cGVTdHJpbmcgKyBzdHJpbmcgKyAnKScpOwogICAgIEFTU0VSVChhbmltYXRl
ZFR5cGUtPnRyYW5zZm9ybUxpc3QoKS5zaXplKCkgPD0gMSk7CiAgICAgcmV0dXJuIGFuaW1hdGVk
VHlwZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFu
aW1hdG9yOjpjCiAgICAgYXV0byYgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gYW5pbWF0ZWQtPnRy
YW5zZm9ybUxpc3QoKTsKIAogICAgIC8vIFBhc3MgZmFsc2UgdG8gJ3Jlc2l6ZUFuaW1hdGVkTGlz
dElmTmVlZGVkJyBoZXJlLCBhcyB0aGUgc3BlY2lhbCBwb3N0LW11bHRpcGxpY2F0aW9uIGJlaGF2
aW9yIG9mIDxhbmltYXRlVHJhbnNmb3JtPiBuZWVkcyB0byBiZSByZXNwZWN0ZWQgYmVsb3cuCi0g
ICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHVHJh
bnNmb3JtTGlzdD4oZnJvbVRyYW5zZm9ybUxpc3QsIHRvVHJhbnNmb3JtTGlzdCwgYW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LCBwZXJjZW50YWdlLCBmYWxzZSkpCisgICAgaWYgKCFtX2FuaW1hdGlvbkVs
ZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4oZnJv
bVRyYW5zZm9ybUxpc3QsIHRvVHJhbnNmb3JtTGlzdCwgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBw
ZXJjZW50YWdlLCBmYWxzZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5ldmVyIHJlc2l6
ZSB0aGUgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHRvIHRoZSB0b1RyYW5zZm9ybUxpc3Qgc2l6ZSwg
aW5zdGVhZCBlaXRoZXIgY2xlYXIgdGhlIGxpc3Qgb3IgYXBwZW5kIHRvIGl0LgpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24g
MjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNCArMjEsMTUgQEAKIAogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlU
ZWFyT2ZmIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDsKK3VzaW5nIFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdCA9IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZjsKIAogLy8g
SGVscGVyIG1hY3JvcyB0byBkZWNsYXJlL2RlZmluZSBhIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dCBvYmplY3QKICNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFko
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KQorREVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdCwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcywgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1Qo
T3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwK
IERFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFRyYW5zZm9ybUxpc3QsIE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNw
cAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVM
ZW5ndGhMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdMZW5ndGhMaXN0PiBsZW5ndGhMaXN0KQorc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5n
dGhMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdMZW5ndGhMaXN0VmFsdWVzPiBsZW5ndGhMaXN0KQog
ewogICAgIEFTU0VSVChsZW5ndGhMaXN0KTsKICAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZExlbmd0aExpc3QpOwpAQCAtMTYy
LDcgKzE2Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW0KICAg
ICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3Qoc3RkOjp1bmlxdWVfcHRyPFNW
R051bWJlckxpc3Q+IG51bWJlckxpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3Qoc3RkOjp1bmlxdWVfcHRyPFNWR051
bWJlckxpc3RWYWx1ZXM+IG51bWJlckxpc3QpCiB7CiAgICAgQVNTRVJUKG51bWJlckxpc3QpOwog
ICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+
KEFuaW1hdGVkTnVtYmVyTGlzdCk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbQogICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
UG9pbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdQb2ludExpc3Q+IHBvaW50TGlzdCkKK3N0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUG9pbnRM
aXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdQb2ludExpc3RWYWx1ZXM+IHBvaW50TGlzdCkKIHsKICAg
ICBBU1NFUlQocG9pbnRMaXN0KTsKICAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZFBvaW50cyk7CkBAIC0yMTgsNyArMjE4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbQogICAgIHJldHVybiBh
bmltYXRlZFR5cGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3JtTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHVHJhbnNm
b3JtTGlzdD4gdHJhbnNmb3JtTGlzdCkKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3JtTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZH
VHJhbnNmb3JtTGlzdFZhbHVlcz4gdHJhbnNmb3JtTGlzdCkKIHsKICAgICBBU1NFUlQodHJhbnNm
b3JtTGlzdCk7CiAgICAgYXV0byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkVHlwZT4oQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTMgKzIyLDEzIEBACiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5nbGVWYWx1ZS5oIgogI2luY2x1
ZGUgIlNWR0NvbG9yLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1ZGUgIlNW
R0xlbmd0aExpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgotI2luY2x1
ZGUgIlNWR051bWJlckxpc3QuaCIKLSNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKKyNpbmNsdWRl
ICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFsdWVzLmgi
CiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZH
UHJvcGVydHlJbmZvLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgorI2luY2x1ZGUg
IlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
NywxNiArNDcsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBjcmVhdGVJbnRlZ2VyKHN0ZDo6dW5pcXVlX3B0cjxpbnQ+KTsKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlSW50ZWdlck9wdGlvbmFs
SW50ZWdlcihzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpwYWlyPGludCwgaW50Pj4pOwogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoc3RkOjp1bmlx
dWVfcHRyPFNWR0xlbmd0aFZhbHVlPik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IGNyZWF0ZUxlbmd0aExpc3Qoc3RkOjp1bmlxdWVfcHRyPFNWR0xlbmd0aExp
c3Q+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRl
TGVuZ3RoTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4pOwogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXIoc3RkOjp1
bmlxdWVfcHRyPGZsb2F0Pik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRl
ZFR5cGU+IGNyZWF0ZU51bWJlckxpc3Qoc3RkOjp1bmlxdWVfcHRyPFNWR051bWJlckxpc3Q+KTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVy
TGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHTnVtYmVyTGlzdFZhbHVlcz4pOwogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXJPcHRpb25hbE51bWJl
cihzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+KTsKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUGF0aChzdGQ6OnVuaXF1ZV9w
dHI8U1ZHUGF0aEJ5dGVTdHJlYW0+KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlUG9pbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdQb2ludExpc3Q+
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUG9p
bnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdQb2ludExpc3RWYWx1ZXM+KTsKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUHJlc2VydmVBc3BlY3RSYXRp
byhzdGQ6OnVuaXF1ZV9wdHI8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPik7CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVJlY3Qoc3RkOjp1bmlx
dWVfcHRyPEZsb2F0UmVjdD4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjcmVhdGVTdHJpbmcoc3RkOjp1bmlxdWVfcHRyPFN0cmluZz4pOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVUcmFuc2Zvcm1MaXN0KHN0
ZDo6dW5pcXVlX3B0cjxTVkdUcmFuc2Zvcm1MaXN0Pik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVRyYW5zZm9ybUxpc3Qoc3RkOjp1bmlxdWVfcHRy
PFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FuaW1W
YWwoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuICptX2RhdGEubGVuZ3RoOwogICAgIH0KIAotICAgIGNvbnN0IFNWR0xl
bmd0aExpc3QmIGxlbmd0aExpc3QoKSBjb25zdAorICAgIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1
ZXMmIGxlbmd0aExpc3QoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBB
bmltYXRlZExlbmd0aExpc3QpOwogICAgICAgICByZXR1cm4gKm1fZGF0YS5sZW5ndGhMaXN0OwpA
QCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX2RhdGEubnVtYmVy
OwogICAgIH0KIAotICAgIGNvbnN0IFNWR051bWJlckxpc3QmIG51bWJlckxpc3QoKSBjb25zdAor
ICAgIGNvbnN0IFNWR051bWJlckxpc3RWYWx1ZXMmIG51bWJlckxpc3QoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlckxpc3QpOwogICAgICAgICBy
ZXR1cm4gKm1fZGF0YS5udW1iZXJMaXN0OwpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fZGF0YS5wYXRoOwogICAgIH0KIAotICAgIGNvbnN0IFNWR1BvaW50TGlz
dCYgcG9pbnRMaXN0KCkgY29uc3QKKyAgICBjb25zdCBTVkdQb2ludExpc3RWYWx1ZXMmIHBvaW50
TGlzdCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUG9p
bnRzKTsKICAgICAgICAgcmV0dXJuICptX2RhdGEucG9pbnRMaXN0OwpAQCAtMTU4LDcgKzE1OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX2RhdGEuc3RyaW5nOwogICAgIH0KIAotICAg
IGNvbnN0IFNWR1RyYW5zZm9ybUxpc3QmIHRyYW5zZm9ybUxpc3QoKSBjb25zdAorICAgIGNvbnN0
IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHRyYW5zZm9ybUxpc3QoKSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwogICAgICAgICBy
ZXR1cm4gKm1fZGF0YS50cmFuc2Zvcm1MaXN0OwpAQCAtMjA3LDcgKzIwNyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuICptX2RhdGEubGVuZ3RoOwogICAgIH0KIAotICAgIFNWR0xlbmd0aExp
c3QmIGxlbmd0aExpc3QoKQorICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMmIGxlbmd0aExpc3QoKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZExlbmd0aExpc3QpOwogICAg
ICAgICByZXR1cm4gKm1fZGF0YS5sZW5ndGhMaXN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICptX2RhdGEubnVtYmVyOwogICAgIH0KIAotICAgIFNWR051bWJl
ckxpc3QmIG51bWJlckxpc3QoKQorICAgIFNWR051bWJlckxpc3RWYWx1ZXMmIG51bWJlckxpc3Qo
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlckxpc3QpOwog
ICAgICAgICByZXR1cm4gKm1fZGF0YS5udW1iZXJMaXN0OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZGF0YS5wYXRoOwogICAgIH0KIAotICAgIFNWR1BvaW50
TGlzdCYgcG9pbnRMaXN0KCkKKyAgICBTVkdQb2ludExpc3RWYWx1ZXMmIHBvaW50TGlzdCgpCiAg
ICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUG9pbnRzKTsKICAgICAgICAg
cmV0dXJuICptX2RhdGEucG9pbnRMaXN0OwpAQCAtMjYxLDcgKzI2MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICptX2RhdGEuc3RyaW5nOwogICAgIH0KIAotICAgIFNWR1RyYW5zZm9ybUxp
c3QmIHRyYW5zZm9ybUxpc3QoKQorICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHRyYW5zZm9y
bUxpc3QoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFRyYW5zZm9y
bUxpc3QpOwogICAgICAgICByZXR1cm4gKm1fZGF0YS50cmFuc2Zvcm1MaXN0OwpAQCAtMjg2LDE2
ICsyODYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgaW50KiBpbnRlZ2VyOwogICAgICAgICBzdGQ6
OnBhaXI8aW50LCBpbnQ+KiBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOwogICAgICAgICBTVkdMZW5n
dGhWYWx1ZSogbGVuZ3RoOwotICAgICAgICBTVkdMZW5ndGhMaXN0KiBsZW5ndGhMaXN0OworICAg
ICAgICBTVkdMZW5ndGhMaXN0VmFsdWVzKiBsZW5ndGhMaXN0OwogICAgICAgICBmbG9hdCogbnVt
YmVyOwotICAgICAgICBTVkdOdW1iZXJMaXN0KiBudW1iZXJMaXN0OworICAgICAgICBTVkdOdW1i
ZXJMaXN0VmFsdWVzKiBudW1iZXJMaXN0OwogICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0
PiogbnVtYmVyT3B0aW9uYWxOdW1iZXI7CiAgICAgICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBwYXRo
OwogICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUqIHByZXNlcnZlQXNwZWN0UmF0
aW87Ci0gICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRMaXN0OworICAgICAgICBTVkdQb2ludExp
c3RWYWx1ZXMqIHBvaW50TGlzdDsKICAgICAgICAgRmxvYXRSZWN0KiByZWN0OwogICAgICAgICBT
dHJpbmcqIHN0cmluZzsKLSAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCogdHJhbnNmb3JtTGlzdDsK
KyAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyogdHJhbnNmb3JtTGlzdDsKICAgICB9IG1f
ZGF0YTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNl
clV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTY4NSw0ICs2ODYsMTkgQEAgdm9pZCBTVkdBbmlt
YXRpb25FbGVtZW50OjpjaGVja0ludmFsaWRDUwogICAgIG1faGFzSW52YWxpZENTU0F0dHJpYnV0
ZVR5cGUgPSB0YXJnZXQgJiYgaGFzVmFsaWRBdHRyaWJ1dGVOYW1lKCkgJiYgYXR0cmlidXRlVHlw
ZSgpID09IEF0dHJpYnV0ZVR5cGU6OkNTUyAmJiAhaXNUYXJnZXRBdHRyaWJ1dGVDU1NQcm9wZXJ0
eSh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUoKSk7CiB9CiAKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdB
bmltYXRpb25FbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVzKCkKK3sKKyAgICByZXR1cm4gU1ZHVGVz
dHM6OnJlcXVpcmVkRmVhdHVyZXMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZH
QW5pbWF0aW9uRWxlbWVudDo6cmVxdWlyZWRFeHRlbnNpb25zKCkKK3sgCisgICAgcmV0dXJuIFNW
R1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlz
dD4gU1ZHQW5pbWF0aW9uRWxlbWVudDo6c3lzdGVtTGFuZ3VhZ2UoKQoreworICAgIHJldHVybiBT
VkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
Niw2ICsxNDYsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgYW5pbWF0ZWROdW1iZXIgPSBudW1i
ZXI7CiAgICAgfQogCisgICAgLy8gU1ZHVGVzdHMKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gcmVx
dWlyZWRGZWF0dXJlcygpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4dGVuc2lv
bnMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVtTGFuZ3VhZ2UoKTsKKwogcHJvdGVj
dGVkOgogICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CiAKQEAgLTIwOCw5ICsyMTMsOSBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIAogICAgIC8vIFNWR1Rlc3RzCi0gICAgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRmVhdHVyZXMoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXModGhpcyk7IH0KLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
dGhpcyk7IH0KLSAgICB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSBvdmVycmlkZSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CisgICAgdm9pZCBz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRmVhdHVyZXMoKnRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIGZpbmFs
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOyB9CiAKICAgICB2
b2lkIHNldENhbGNNb2RlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNs
dWRlICJTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCi0jaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgorI2luY2x1ZGUgIlNWR051bWJlckxpc3RW
YWx1ZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtODIsNyArODIsNyBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRhYmxlVmFsdWVz
QXR0cikgewotICAgICAgICBTVkdOdW1iZXJMaXN0IG5ld0xpc3Q7CisgICAgICAgIFNWR051bWJl
ckxpc3RWYWx1ZXMgbmV3TGlzdDsKICAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSk7CiAgICAg
ICAgIGRldGFjaEFuaW1hdGVkVGFibGVWYWx1ZXNMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkp
OwogICAgICAgICBzZXRUYWJsZVZhbHVlc0Jhc2VWYWx1ZShuZXdMaXN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5n
TGlzdC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIApAQCAtMTIyLDQgKzEyMywxOSBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0CiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChocmVmKCkpKTsKIH0KIAorUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR0N1cnNvckVs
ZW1lbnQ6OnJlcXVpcmVkRmVhdHVyZXMoKQoreworICAgIHJldHVybiBTVkdUZXN0czo6cmVxdWly
ZWRGZWF0dXJlcygqdGhpcyk7Cit9CisKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdDdXJzb3JFbGVt
ZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMoKQoreyAKKyAgICByZXR1cm4gU1ZHVGVzdHM6OnJlcXVp
cmVkRXh0ZW5zaW9ucygqdGhpcyk7Cit9CisKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdDdXJzb3JF
bGVtZW50OjpzeXN0ZW1MYW5ndWFnZSgpCit7CisgICAgcmV0dXJuIFNWR1Rlc3RzOjpzeXN0ZW1M
YW5ndWFnZSgqdGhpcyk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJz
b3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlOwogCi1jbGFzcyBTVkdDdXJzb3JF
bGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UgeworY2xhc3MgU1ZHQ3Vyc29yRWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJsaWMgU1ZHVGVzdHMsIHB1YmxpYyBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR0N1cnNvckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApAQCAtNDQsNiArNDEsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkQ2xpZW50KENTU0N1cnNvckltYWdlVmFsdWUmKTsKICAgICB2b2lkIHJlbW92ZUNs
aWVudChDU1NDdXJzb3JJbWFnZVZhbHVlJik7CiAKKyAgICAvLyBTVkdUZXN0cworICAgIFJlZjxT
VkdTdHJpbmdMaXN0PiByZXF1aXJlZEZlYXR1cmVzKCk7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+
IHJlcXVpcmVkRXh0ZW5zaW9ucygpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiBzeXN0ZW1MYW5n
dWFnZSgpOworCiBwcml2YXRlOgogICAgIFNWR0N1cnNvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTY1LDkgKzY3LDkgQEAgcHJpdmF0ZToKICAgICBFTkRf
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBTVkdUZXN0cwotICAgIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25p
emVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgZmluYWwg
eyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQorICAgIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25p
emVSZXF1aXJlZEZlYXR1cmVzKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5z
aW9ucygqdGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSBmaW5h
bCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCp0aGlzKTsgfQogCiAgICAg
SGFzaFNldDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4gbV9jbGllbnRzOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24g
MjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50OjpwYXJzZUF0dHJpCiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnZh
bHVlc0F0dHIpIHsKLSAgICAgICAgU1ZHTnVtYmVyTGlzdCBuZXdMaXN0OworICAgICAgICBTVkdO
dW1iZXJMaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUpOwog
ICAgICAgICBkZXRhY2hBbmltYXRlZFZhbHVlc0xpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7
CiAgICAgICAgIHNldFZhbHVlc0Jhc2VWYWx1ZShuZXdMaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24g
MjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkludFNpemUu
aCIKICNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
KyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRp
bGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEyNCw3ICsxMjUsNyBAQCB2b2lk
IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0CiAgICAgfQogCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIpIHsKLSAgICAgICAgU1ZHTnVtYmVyTGlz
dCBuZXdMaXN0OworICAgICAgICBTVkdOdW1iZXJMaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAg
IG5ld0xpc3QucGFyc2UodmFsdWUpOwogICAgICAgICBkZXRhY2hBbmltYXRlZEtlcm5lbE1hdHJp
eExpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAgIHNldEtlcm5lbE1hdHJpeEJh
c2VWYWx1ZShuZXdMaXN0KTsKQEAgLTIzMyw3ICsyMzQsNyBAQCB2b2lkIFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpzdmdBdHRyCiAKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBG
aWx0ZXImIGZpbHRlcikKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIGF1dG8qIGlucHV0MSA9IGZpbHRlckJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYgKCFpbnB1dDEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjQ3LDcgKzI0OCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFQ29udm9sdmVNYXRyaXgKICAgICAvLyBTcGVjIHNheXMgb3JkZXIgbXVzdCBiZSA+IDAuIEJh
aWwgaWYgaXQgaXMgbm90LgogICAgIGlmIChvcmRlclhWYWx1ZSA8IDEgfHwgb3JkZXJZVmFsdWUg
PCAxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBTVkdOdW1iZXJMaXN0JiBrZXJuZWxN
YXRyaXggPSB0aGlzLT5rZXJuZWxNYXRyaXgoKTsKKyAgICBhdXRvJiBrZXJuZWxNYXRyaXggPSB0
aGlzLT5rZXJuZWxNYXRyaXgoKTsKICAgICBpbnQga2VybmVsTWF0cml4U2l6ZSA9IGtlcm5lbE1h
dHJpeC5zaXplKCk7CiAgICAgLy8gVGhlIHNwZWMgc2F5cyB0aGlzIGlzIGEgcmVxdWlyZW1lbnQs
IGFuZCBzaG91bGQgYmFpbCBvdXQgaWYgZmFpbHMKICAgICBpZiAob3JkZXJYVmFsdWUgKiBvcmRl
cllWYWx1ZSAhPSBrZXJuZWxNYXRyaXhTaXplKQpAQCAtMjg2LDEyICsyODcsOSBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4CiAgICAgICAgICAgICBkaXZpc29yVmFs
dWUgPSAxOwogICAgIH0KIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29u
dm9sdmVNYXRyaXg6OmNyZWF0ZShmaWx0ZXIsCi0gICAgICAgICAgICAgICAgICAgIEludFNpemUo
b3JkZXJYVmFsdWUsIG9yZGVyWVZhbHVlKSwgZGl2aXNvclZhbHVlLAotICAgICAgICAgICAgICAg
ICAgICBiaWFzKCksIEludFBvaW50KHRhcmdldFhWYWx1ZSwgdGFyZ2V0WVZhbHVlKSwgZWRnZU1v
ZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgRmxvYXRQb2ludChrZXJuZWxVbml0TGVuZ3RoWFZh
bHVlLCBrZXJuZWxVbml0TGVuZ3RoWVZhbHVlKSwgcHJlc2VydmVBbHBoYSgpLCBrZXJuZWxNYXRy
aXgpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb252b2x2ZU1hdHJpeDo6Y3JlYXRlKGZpbHRlciwg
SW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFsdWUpLCBkaXZpc29yVmFsdWUsIGJpYXMoKSwg
SW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFsdWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBv
aW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtlcm5lbFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVz
ZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7CiAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5h
cHBlbmQoaW5wdXQxKTsKLSAgICByZXR1cm4gZWZmZWN0OworICAgIHJldHVybiBXVEZNb3ZlKGVm
ZmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0b3BFbGVtZW50LmgiCi0jaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1
ZXMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNv
bHZlci5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBT
VkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogICAgIH0KIAogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgU1ZHVHJhbnNm
b3JtTGlzdCBuZXdMaXN0OworICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIG5ld0xpc3Q7
CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUpOwogICAgICAgICBkZXRhY2hBbmltYXRlZEdy
YWRpZW50VHJhbnNmb3JtTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0
R3JhZGllbnRUcmFuc2Zvcm1CYXNlVmFsdWUobmV3TGlzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhEYXRh
LmgiCiAjaW5jbHVkZSAiU1ZHUmVjdC5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTIxLDcgKzEyMiw3IEBAIGJvb2wgU1ZHR3JhcGhpY3NFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHIK
IHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIFNWR1RyYW5zZm9ybUxpc3QgbmV3
TGlzdDsKKyAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyBuZXdMaXN0OwogICAgICAgICBu
ZXdMaXN0LnBhcnNlKHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRUcmFuc2Zvcm1CYXNlVmFsdWUo
bmV3TGlzdCk7CkBAIC0xODksNCArMTkwLDE5IEBAIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50Ojp0
b0NsaXBQYXRoKFBhdGgKICAgICBwYXRoLnRyYW5zZm9ybShhbmltYXRlZExvY2FsVHJhbnNmb3Jt
KCkpOwogfQogCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHR3JhcGhpY3NFbGVtZW50OjpyZXF1aXJl
ZEZlYXR1cmVzKCkKK3sKKyAgICByZXR1cm4gU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKnRo
aXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHR3JhcGhpY3NFbGVtZW50OjpyZXF1aXJl
ZEV4dGVuc2lvbnMoKQoreyAKKyAgICByZXR1cm4gU1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9u
cygqdGhpcyk7Cit9CisKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdHcmFwaGljc0VsZW1lbnQ6OnN5
c3RlbUxhbmd1YWdlKCkKK3sKKyAgICByZXR1cm4gU1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlKCp0
aGlzKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
aAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSwxMSBAQCBwdWJsaWM6CiAKICAgICBz
aXplX3QgYXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2l6
ZW9mKCp0aGlzKTsgfQogCisgICAgLy8gU1ZHVGVzdHMKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4g
cmVxdWlyZWRGZWF0dXJlcygpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4dGVu
c2lvbnMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVtTGFuZ3VhZ2UoKTsKKwogcHJv
dGVjdGVkOgogICAgIFNWR0dyYXBoaWNzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIApAQCAtNzksOSArODQsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIC8vIFNWR1Rl
c3RzCi0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBvdmVycmlkZSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KLSAgICB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KLSAgICB2b2lkIHN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKHRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBmaW5h
bCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKnRoaXMpOyB9CisgICAg
dm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSgpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UoKnRoaXMpOyB9CiAKICAgICAvLyBVc2VkIGJ5IDxhbmltYXRlTW90aW9uPgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCw4IEBAIHB1
YmxpYzoKICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEMgPSBMZW5ndGhUeXBlUEMKICAgICB9Owog
Ci0gICAgc3RhdGljIFJlZjxTVkdMZW5ndGg+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5KiBh
bmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTGVuZ3RoVmFsdWUmIHZh
bHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0aFZhbHVl
JiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnR5KTsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoKGFuaW1hdGVkUHJvcGVydHksIHJvbGUs
IHZhbHVlKSk7CiAgICAgfQogCkBAIC0xNTUsOCArMTU0LDggQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBTVkdMZW5ndGgoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9w
ZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0aFZhbHVlJiB2YWx1ZSkKLSAgICAg
ICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoVmFsdWU+KGFuaW1hdGVkUHJvcGVydHks
IHJvbGUsIHZhbHVlKQorICAgIFNWR0xlbmd0aChTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRl
ZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTGVuZ3RoVmFsdWUmIHZhbHVlKQor
ICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdMZW5ndGhWYWx1ZT4oJmFuaW1hdGVkUHJv
cGVydHksIHJvbGUsIHZhbHVlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoTGlzdC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGhMaXN0LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0xlbmd0
aExpc3QuaCIKLQotI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFNW
R0xlbmd0aExpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9k
ZSkKLXsKLSAgICBjbGVhcigpOwotCi0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBT
dHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hh
ciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBw
dHIgKyB2YWx1ZS5sZW5ndGgoKTsKLSAgICB3aGlsZSAocHRyIDwgZW5kKSB7Ci0gICAgICAgIGNv
bnN0IFVDaGFyKiBzdGFydCA9IHB0cjsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRy
ICE9ICcsJyAmJiAhaXNTVkdTcGFjZSgqcHRyKSkKLSAgICAgICAgICAgIHB0cisrOwotICAgICAg
ICBpZiAocHRyID09IHN0YXJ0KQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgU1ZHTGVu
Z3RoVmFsdWUgbGVuZ3RoKG1vZGUpOwotICAgICAgICBTdHJpbmcgdmFsdWVTdHJpbmcoc3RhcnQs
IHB0ciAtIHN0YXJ0KTsKLSAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGxlbmd0aC5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVl
U3RyaW5nKS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXBw
ZW5kKGxlbmd0aCk7Ci0gICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0
ciwgZW5kKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBTVkdMZW5ndGhMaXN0Ojp2YWx1ZUFzU3RyaW5n
KCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0KLSAgICB1bnNpZ25lZCBz
aXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKLSAgICAgICAgaWYgKGkgPiAwKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAn
KTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChhdChpKS52YWx1ZUFzU3RyaW5nKCkpOwotICAg
IH0KLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLX0KClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaAko
cmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjAsMjUgKzIwLDI3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiU1ZHTGVuZ3RoVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3Ro
TGlzdFZhbHVlcy5oIgorI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdMZW5ndGg7Ci0KLWNsYXNzIFNWR0xlbmd0aExp
c3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiB7CitjbGFzcyBTVkdMZW5n
dGhMaXN0IDogcHVibGljIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoTGlzdFZhbHVl
cz4gewogcHVibGljOgotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHTGVu
Z3RoTW9kZSk7Ci0gICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKLX07Ci0KLXRlbXBs
YXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3Q+IHsKLSAgICB1c2lu
ZyBMaXN0SXRlbVR5cGUgPSBTVkdMZW5ndGhWYWx1ZTsKLSAgICB1c2luZyBMaXN0SXRlbVRlYXJP
ZmYgPSBTVkdMZW5ndGg7CisgICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0g
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aExpc3RWYWx1ZXM+OworICAg
IHVzaW5nIExpc3RXcmFwcGVyQ2FjaGUgPSBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6Okxp
c3RXcmFwcGVyQ2FjaGU7CiAKLSAgICBzdGF0aWMgU1ZHTGVuZ3RoTGlzdCBpbml0aWFsVmFsdWUo
KSB7IHJldHVybiAgeyB9OyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdM
ZW5ndGhMaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorICAgIHN0
YXRpYyBSZWY8U1ZHTGVuZ3RoTGlzdD4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0aExpc3RW
YWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGhMaXN0KGFuaW1hdGVkUHJvcGVydHksIHJv
bGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU1ZHTGVuZ3Ro
TGlzdChBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1By
b3BlcnR5Um9sZSByb2xlLCBTVkdMZW5ndGhMaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVy
Q2FjaGUmIHdyYXBwZXJzKQorICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVu
Z3RoTGlzdFZhbHVlcz4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykK
KyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmlkbAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw5
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi1pbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCB7Citb
CisgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KK10gaW50ZXJmYWNlIFNWR0xlbmd0aExpc3Qgewog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSXRlbXM7CiAKICAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNSkJKGZyb20gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuY3BwOjIwODcwNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTVkdMZW5ndGhMaXN0LmgiCisKKyNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBTVkdMZW5ndGhMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlLCBTVkdM
ZW5ndGhNb2RlIG1vZGUpCit7CisgICAgY2xlYXIoKTsKKworICAgIGF1dG8gdXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzID0gU3RyaW5nVmlldyh2YWx1ZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Cisg
ICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICBjb25zdCBV
Q2hhciogZW5kID0gcHRyICsgdmFsdWUubGVuZ3RoKCk7CisgICAgd2hpbGUgKHB0ciA8IGVuZCkg
eworICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBwdHI7CisgICAgICAgIHdoaWxlIChwdHIg
PCBlbmQgJiYgKnB0ciAhPSAnLCcgJiYgIWlzU1ZHU3BhY2UoKnB0cikpCisgICAgICAgICAgICBw
dHIrKzsKKyAgICAgICAgaWYgKHB0ciA9PSBzdGFydCkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aChtb2RlKTsKKyAgICAgICAgU3RyaW5nIHZhbHVl
U3RyaW5nKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisgICAgICAgIGlmICh2YWx1ZVN0cmluZy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChsZW5ndGguc2V0VmFsdWVB
c1N0cmluZyh2YWx1ZVN0cmluZykuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGFwcGVuZChsZW5ndGgpOworICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNP
ckRlbGltaXRlcihwdHIsIGVuZCk7CisgICAgfQorfQorCitTdHJpbmcgU1ZHTGVuZ3RoTGlzdDo6
dmFsdWVBc1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisg
ICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSkudmFsdWVBc1N0
cmluZygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwCShyZXZp
c2lvbiAyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDE0ICsxOSwxNCBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3Ro
TGlzdFZhbHVlcy5oIgogCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZv
aWQgU1ZHTGVuZ3RoTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHTGVuZ3RoTW9k
ZSBtb2RlKQordm9pZCBTVkdMZW5ndGhMaXN0VmFsdWVzOjpwYXJzZShjb25zdCBTdHJpbmcmIHZh
bHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUpCiB7CiAgICAgY2xlYXIoKTsKIApAQCAtNTEsNyArNTEs
NyBAQCB2b2lkIFNWR0xlbmd0aExpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgCiAgICAgfQogfQog
Ci1TdHJpbmcgU1ZHTGVuZ3RoTGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0CitTdHJpbmcgU1ZH
TGVuZ3RoTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZh
bHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFs
dWVzLmgJKHJldmlzaW9uIDIwODcwNSkJKGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aExpc3QuaDoyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdM
ZW5ndGg7CisKK2NsYXNzIFNWR0xlbmd0aExpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR0xl
bmd0aFZhbHVlPiB7CitwdWJsaWM6CisgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVl
LCBTVkdMZW5ndGhNb2RlKTsKKyAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoTGlzdD4gewor
ICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR0xlbmd0aFZhbHVlOworICAgIHVzaW5nIExpc3RJ
dGVtVGVhck9mZiA9IFNWR0xlbmd0aDsKKworICAgIHN0YXRpYyBTVkdMZW5ndGhMaXN0IGluaXRp
YWxWYWx1ZSgpIHsgcmV0dXJuICB7IH07IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNv
bnN0IFNWR0xlbmd0aExpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMZW5ndGhMaXN0VmFsdWVzLmgJKHJldmlzaW9uIDIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE5ICsyNiwy
MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdMZW5ndGg7CitjbGFzcyBTVkdM
ZW5ndGhMaXN0OwogCi1jbGFzcyBTVkdMZW5ndGhMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxT
VkdMZW5ndGhWYWx1ZT4geworY2xhc3MgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBmaW5hbCA6IHB1Ymxp
YyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHsKIHB1YmxpYzoKICAgICB2b2lkIHBhcnNlKGNvbnN0
IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUpOwogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5n
KCkgY29uc3Q7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdM
ZW5ndGhMaXN0PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5n
dGhMaXN0VmFsdWVzPiB7CiAgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU1ZHTGVuZ3RoVmFsdWU7
CiAgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHTGVuZ3RoOworICAgIHVzaW5nIExpc3RQ
cm9wZXJ0eVRlYXJPZmYgPSBTVkdMZW5ndGhMaXN0OwogCi0gICAgc3RhdGljIFNWR0xlbmd0aExp
c3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gIHsgfTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgU1ZHTGVuZ3RoTGlzdCYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3Ry
aW5nKCk7IH0KKyAgICBzdGF0aWMgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBpbml0aWFsVmFsdWUoKSB7
IHJldHVybiAgeyB9OyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdMZW5n
dGhMaXN0VmFsdWVzJiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFk
aWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVz
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFza2VyLmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5n
TGlzdC5oIgogI2luY2x1ZGUgIlNWR1VuaXRUeXBlcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2
ZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTE2Miw0ICsxNjMsMTkg
QEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hc2tFbGVtZW50OgogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcj4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKIH0KIAorUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR01hc2tFbGVtZW50OjpyZXF1aXJlZEZl
YXR1cmVzKCkKK3sKKyAgICByZXR1cm4gU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKnRoaXMp
OworfQorCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHTWFza0VsZW1lbnQ6OnJlcXVpcmVkRXh0ZW5z
aW9ucygpCit7IAorICAgIHJldHVybiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKCp0aGlz
KTsKK30KKworUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR01hc2tFbGVtZW50OjpzeXN0ZW1MYW5ndWFn
ZSgpCit7CisgICAgcmV0dXJuIFNWR1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZSgqdGhpcyk7Cit9CisK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiAyMDg3NzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTIgKzMwLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHTWFz
a0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CitjbGFzcyBTVkdNYXNrRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJsaWMgU1ZHVGVzdHMsIHB1YmxpYyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR01h
c2tFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKKyAg
ICAvLyBTVkdUZXN0cworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEZlYXR1cmVzKCk7
CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHJlcXVpcmVkRXh0ZW5zaW9ucygpOworICAgIFJlZjxT
VkdTdHJpbmdMaXN0PiBzeXN0ZW1MYW5ndWFnZSgpOworCiBwcml2YXRlOgogICAgIFNWR01hc2tF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCkBAIC02Miw5ICs2NSw5
IEBAIHByaXZhdGU6CiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiAgICAg
Ly8gU1ZHVGVzdHMKLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIGZpbmFs
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQotICAgIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQotICAgIHZvaWQgc3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSgpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UodGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIGZpbmFs
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygqdGhpcyk7IH0KKyAgICB2
b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgZmluYWwgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKnRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSgqdGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWF0cml4LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNWR01hdHJpeCA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZH
TWF0cml4VmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR01hdHJpeD4gY3JlYXRl
KFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSBy
b2xlLCBTVkdNYXRyaXhWYWx1ZSYgdmFsdWUpCisgICAgc3RhdGljIFJlZjxTVkdNYXRyaXg+IGNy
ZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgU1ZHTWF0cml4VmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFu
aW1hdGVkUHJvcGVydHkpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdNYXRyaXgo
YW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKICAgICB9CiAKQEAgLTI3OCw4ICsyNzcs
OCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHTWF0cml4KFNWR0FuaW1h
dGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdN
YXRyaXhWYWx1ZSYgdmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR01hdHJp
eFZhbHVlPihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKKyAgICBTVkdNYXRyaXgoU1ZH
QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUs
IFNWR01hdHJpeFZhbHVlJiB2YWx1ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZH
TWF0cml4VmFsdWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlci5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdOdW1iZXIgOiBwdWJsaWMgU1ZHUHJv
cGVydHlUZWFyT2ZmPGZsb2F0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdOdW1iZXI+
IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0
eVJvbGUgcm9sZSwgZmxvYXQmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHTnVtYmVyPiBjcmVh
dGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xl
IHJvbGUsIGZsb2F0JiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3Bl
cnR5KTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTnVtYmVyKGFuaW1hdGVkUHJv
cGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQogCkBAIC03Miw4ICs3MSw4IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHTnVtYmVyKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFu
aW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBmbG9hdCYgdmFsdWUpCi0gICAg
ICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPGZsb2F0PihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2
YWx1ZSkKKyAgICBTVkdOdW1iZXIoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0
eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIGZsb2F0JiB2YWx1ZSkKKyAgICAgICAgOiBTVkdQcm9w
ZXJ0eVRlYXJPZmY8ZmxvYXQ+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuY3BwCShyZXZpc2lv
biAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCi0KLSNpbmNsdWRlICJTVkdQ
YXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTVkdOdW1iZXJMaXN0OjpwYXJzZShjb25zdCBT
dHJpbmcmIHZhbHVlKQotewotICAgIGNsZWFyKCk7Ci0KLSAgICBmbG9hdCBudW1iZXIgPSAwOwot
ICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh2YWx1ZSkudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29udmVydGVkQ2hh
cmFjdGVyczsKLSAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgdmFsdWUubGVuZ3RoKCk7Ci0K
LSAgICAvLyBUaGUgc3BlYyBzdHJhbmdlbHkgZG9lc24ndCBhbGxvdyBsZWFkaW5nIHdoaXRlc3Bh
Y2UuICBXZSBtaWdodCBjaG9vc2UgdG8gdmlvbGF0ZSB0aGF0IGludGVudGlvbmFsbHkuIChzZWN0
aW9uIDQuMSkKLSAgICB3aGlsZSAocHRyIDwgZW5kKSB7Ci0gICAgICAgIGlmICghcGFyc2VOdW1i
ZXIocHRyLCBlbmQsIG51bWJlcikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFwcGVu
ZChudW1iZXIpOwotICAgIH0KLX0KLQotU3RyaW5nIFNWR051bWJlckxpc3Q6OnZhbHVlQXNTdHJp
bmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAgIHVuc2lnbmVk
IHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
ICcpOwotCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGF0KGkpKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgJKHJldmlzaW9u
IDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDI1ICsyMCwyNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNW
R1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHTnVtYmVyOwotCi1jbGFzcyBTVkdOdW1iZXJMaXN0IGZp
bmFsIDogcHVibGljIFZlY3RvcjxmbG9hdD4geworY2xhc3MgU1ZHTnVtYmVyTGlzdCA6IHB1Ymxp
YyBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR051bWJlckxpc3RWYWx1ZXM+IHsKIHB1YmxpYzoK
LSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5n
KCkgY29uc3Q7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdO
dW1iZXJMaXN0PiB7Ci0gICAgc3RhdGljIFNWR051bWJlckxpc3QgaW5pdGlhbFZhbHVlKCkgeyBy
ZXR1cm4gU1ZHTnVtYmVyTGlzdCgpOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBTVkdOdW1iZXJMaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQor
ICAgIHVzaW5nIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZjxTVkdOdW1iZXJMaXN0VmFsdWVzPjsKKyAgICB1c2luZyBMaXN0V3JhcHBl
ckNhY2hlID0gQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpMaXN0V3JhcHBlckNhY2hlOwog
Ci0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gZmxvYXQ7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFy
T2ZmID0gU1ZHTnVtYmVyOworICAgIHN0YXRpYyBSZWY8U1ZHTnVtYmVyTGlzdD4gY3JlYXRlKEFu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlS
b2xlIHJvbGUsIFNWR051bWJlckxpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYg
d3JhcHBlcnMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdOdW1iZXJM
aXN0KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgU1ZHTnVtYmVyTGlzdChBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdOdW1iZXJMaXN0VmFs
dWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQorICAgICAgICA6IFNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmY8U1ZHTnVtYmVyTGlzdFZhbHVlcz4oYW5pbWF0ZWRQcm9wZXJ0eSwg
cm9sZSwgdmFsdWVzLCB3cmFwcGVycykKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVz
LmNwcAkocmV2aXNpb24gMjA4NzA0KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVy
TGlzdC5jcHA6MjA4NzA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKKwor
I2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNWR051bWJlckxpc3Q6
OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgY2xlYXIoKTsKKworICAgIGZsb2F0
IG51bWJlciA9IDA7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3
KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogcHRyID0g
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyB2YWx1
ZS5sZW5ndGgoKTsKKworICAgIC8vIFRoZSBzcGVjIHN0cmFuZ2VseSBkb2Vzbid0IGFsbG93IGxl
YWRpbmcgd2hpdGVzcGFjZS4gIFdlIG1pZ2h0IGNob29zZSB0byB2aW9sYXRlIHRoYXQgaW50ZW50
aW9uYWxseS4gKHNlY3Rpb24gNC4xKQorICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKKyAgICAgICAg
aWYgKCFwYXJzZU51bWJlcihwdHIsIGVuZCwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgYXBwZW5kKG51bWJlcik7CisgICAgfQorfQorCitTdHJpbmcgU1ZHTnVtYmVyTGlz
dDo6dmFsdWVBc1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
CisgICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcgJyk7CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoYXQoaSkp
OworICAgIH0KKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIw
ODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTksMTQgKzE5LDE0IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKKyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0VmFs
dWVzLmgiCiAKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTVkdO
dW1iZXJMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdOdW1iZXJMaXN0
VmFsdWVzOjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNsZWFyKCk7CiAKQEAg
LTQzLDcgKzQzLDcgQEAgdm9pZCBTVkdOdW1iZXJMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIAog
ICAgIH0KIH0KIAotU3RyaW5nIFNWR051bWJlckxpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAor
U3RyaW5nIFNWR051bWJlckxpc3RWYWx1ZXM6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051
bWJlckxpc3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVt
YmVyTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdOdW1iZXJMaXN0Lmg6MjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJl
ckxpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMu
aCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU1ZHTnVtYmVyOworCitjbGFzcyBTVkdOdW1iZXJMaXN0IGZpbmFsIDogcHVibGljIFZlY3Rv
cjxmbG9hdD4geworcHVibGljOgorICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CisgICAg
U3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNW
R1Byb3BlcnR5VHJhaXRzPFNWR051bWJlckxpc3Q+IHsKKyAgICBzdGF0aWMgU1ZHTnVtYmVyTGlz
dCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdOdW1iZXJMaXN0KCk7IH0KKyAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR051bWJlckxpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUu
dmFsdWVBc1N0cmluZygpOyB9CisKKyAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBmbG9hdDsKKyAg
ICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdOdW1iZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmgJ
KHJldmlzaW9uIDIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFs
dWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE5ICsyNiwyMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTVkdOdW1iZXI7CitjbGFzcyBTVkdOdW1iZXJMaXN0OwogCi1jbGFzcyBT
VkdOdW1iZXJMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxmbG9hdD4geworY2xhc3MgU1ZHTnVt
YmVyTGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8ZmxvYXQ+IHsKIHB1YmxpYzoKICAg
ICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkg
Y29uc3Q7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdOdW1i
ZXJMaXN0PiB7Ci0gICAgc3RhdGljIFNWR051bWJlckxpc3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1
cm4gU1ZHTnVtYmVyTGlzdCgpOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBT
VkdOdW1iZXJMaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQordGVt
cGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTnVtYmVyTGlzdFZhbHVlcz4gewor
ICAgIHN0YXRpYyBTVkdOdW1iZXJMaXN0VmFsdWVzIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsg
fTsgfQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHTnVtYmVyTGlzdFZhbHVl
cyYgbGlzdCkgeyByZXR1cm4gbGlzdC52YWx1ZUFzU3RyaW5nKCk7IH0KIAogICAgIHVzaW5nIExp
c3RJdGVtVHlwZSA9IGZsb2F0OwogICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR051bWJl
cjsKKyAgICB1c2luZyBMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHTnVtYmVyTGlzdDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJz
ZXJVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJz
ZXJVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRl
ICJTVkdQb2ludExpc3QuaCIKKyNpbmNsdWRlICJTVkdQb2ludExpc3RWYWx1ZXMuaCIKICNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBwYXJzZVJlY3QoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIEZsbwogICAgIHJldHVybiB2YWxpZDsKIH0KIAotYm9vbCBwb2lu
dHNMaXN0RnJvbVNWR0RhdGEoU1ZHUG9pbnRMaXN0JiBwb2ludHNMaXN0LCBjb25zdCBTdHJpbmcm
IHBvaW50cykKK2Jvb2wgcG9pbnRzTGlzdEZyb21TVkdEYXRhKFNWR1BvaW50TGlzdFZhbHVlcyYg
cG9pbnRzTGlzdCwgY29uc3QgU3RyaW5nJiBwb2ludHMpCiB7CiAgICAgaWYgKHBvaW50cy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhcnNlclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXJzZXJVdGlsaXRpZXMuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhcnNlclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UmVjdDsK
LWNsYXNzIFNWR1BvaW50TGlzdDsKK2NsYXNzIFNWR1BvaW50TGlzdFZhbHVlczsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBib29sIHBhcnNlU1ZHTnVtYmVyKENoYXJhY3Rl
clR5cGUqIHB0ciwgc2l6ZV90IGxlbmd0aCwgZG91YmxlJiBudW1iZXIpOwpAQCAtODAsNyArODAs
NyBAQCBpbmxpbmUgYm9vbCBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltCiAgICAgcmV0dXJu
IHB0ciA8IGVuZDsKIH0KIAotYm9vbCBwb2ludHNMaXN0RnJvbVNWR0RhdGEoU1ZHUG9pbnRMaXN0
JiBwb2ludHNMaXN0LCBjb25zdCBTdHJpbmcmIHBvaW50cyk7Citib29sIHBvaW50c0xpc3RGcm9t
U1ZHRGF0YShTVkdQb2ludExpc3RWYWx1ZXMmLCBjb25zdCBTdHJpbmcmIHBvaW50cyk7CiBWZWN0
b3I8U3RyaW5nPiBwYXJzZURlbGltaXRlZFN0cmluZyhjb25zdCBTdHJpbmcmIGlucHV0LCBjb25z
dCBjaGFyIHNlcGVyYXRvcik7CiBib29sIHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBpbnB1dCwgVW5pY29kZVJhbmdlcyYsIEhhc2hTZXQ8U3RyaW5nPiYgc3RyaW5nTGlz
dCk7CiBib29sIHBhcnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXQsIEhhc2hTZXQ8U3Ry
aW5nPiYgdmFsdWVzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlNWR1BhdGhTZWdM
aW5ldG9WZXJ0aWNhbEFicy5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJl
bC5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRvQWJzLmgiCiAj
aW5jbHVkZSAiU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIgogI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRp
ZXMuaCIKQEAgLTI1Myw4ICsyNTIsOCBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkCiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRBdHRyKSB7CiAgICAg
ICAgIGlmIChtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplICYmICFTVkdBbmltYXRlZFBy
b3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRlZFBhdGhTZWdM
aXN0UHJvcGVydHlUZWFyT2ZmPih0aGlzLCBkUHJvcGVydHlJbmZvKCkpLT5pc0FuaW1hdGluZygp
KSB7Ci0gICAgICAgICAgICBTVkdQYXRoU2VnTGlzdCBuZXdMaXN0KFBhdGhTZWdVbmFsdGVyZWRS
b2xlKTsKLSAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX3Bh
dGhCeXRlU3RyZWFtLCAqdGhpcywgbmV3TGlzdCwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAg
ICAgICBTVkdQYXRoU2VnTGlzdFZhbHVlcyBuZXdMaXN0KFBhdGhTZWdVbmFsdGVyZWRSb2xlKTsK
KyAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RWYWx1ZXNGcm9tQnl0ZVN0cmVhbShtX3Bh
dGhCeXRlU3RyZWFtLCAqdGhpcywgbmV3TGlzdCwgVW5hbHRlcmVkUGFyc2luZyk7CiAgICAgICAg
ICAgICBtX3BhdGhTZWdMaXN0LnZhbHVlID0gbmV3TGlzdDsKICAgICAgICAgfQogCkBAIC0zMTUs
MTAgKzMxNCw5IEBAIFJlZjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdQYXRoRWxlbWVudDoKICAg
ICAgICAgcmV0dXJuICpwcm9wZXJ0eTsKIAogICAgIGlmIChvd25lclR5cGUubV9wYXRoU2VnTGlz
dC52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0
cmVhbShvd25lclR5cGUubV9wYXRoQnl0ZVN0cmVhbSwgb3duZXJUeXBlLCBvd25lclR5cGUubV9w
YXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgIGJ1aWxkU1ZHUGF0
aFNlZ0xpc3RWYWx1ZXNGcm9tQnl0ZVN0cmVhbShvd25lclR5cGUubV9wYXRoQnl0ZVN0cmVhbSwg
b3duZXJUeXBlLCBvd25lclR5cGUubV9wYXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVkUGFyc2lu
Zyk7CiAKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFw
cGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2Zm
LCBTVkdQYXRoU2VnTGlzdD4KLSAgICAgICAgKCZvd25lclR5cGUsIGRQcm9wZXJ0eUluZm8oKSwg
b3duZXJUeXBlLm1fcGF0aFNlZ0xpc3QudmFsdWUpOworICAgIHJldHVybiBTVkdBbmltYXRlZFBy
b3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHUGF0aEVsZW1lbnQsIFNWR0FuaW1hdGVk
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYsIFNWR1BhdGhTZWdMaXN0VmFsdWVzPigmb3duZXJU
eXBlLCBkUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS5tX3BhdGhTZWdMaXN0LnZhbHVlKTsKIH0K
IAogdm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVEKFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KQpAQCAtMzM5LDI2ICszMzcsMjYgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6YW5pbWF0
ZWRQcm9wZXJ0eVdpbAogICAgIG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUgPSBmYWxz
ZTsKIH0KIAotUmVmUHRyPFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPiBTVkdQYXRoRWxl
bWVudDo6cGF0aFNlZ0xpc3QoKQorUmVmPFNWR1BhdGhTZWdMaXN0PiBTVkdQYXRoRWxlbWVudDo6
cGF0aFNlZ0xpc3QoKQogewogICAgIG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUgPSB0
cnVlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zio+KHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmPihsb29rdXBPckNyZWF0ZURXcmFwcGVyKHRoaXMpKS0+YmFzZVZhbCgpLmdldCgpKTsK
KyAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodGhpcykpLT5iYXNlVmFsKCk7
CiB9CiAKLVJlZlB0cjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gU1ZHUGF0aEVsZW1l
bnQ6Om5vcm1hbGl6ZWRQYXRoU2VnTGlzdCgpCitSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IFNWR1Bh
dGhFbGVtZW50Ojpub3JtYWxpemVkUGF0aFNlZ0xpc3QoKQogewogICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTIgLSBJbXBsZW1lbnQgbm9y
bWFsaXplZCBwYXRoIHNlZ21lbnQgbGlzdHMhCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJl
ZlB0cjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gU1ZHUGF0aEVsZW1lbnQ6OmFuaW1h
dGVkUGF0aFNlZ0xpc3QoKQorUmVmPFNWR1BhdGhTZWdMaXN0PiBTVkdQYXRoRWxlbWVudDo6YW5p
bWF0ZWRQYXRoU2VnTGlzdCgpCiB7CiAgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6
ZSA9IHRydWU7CiAgICAgbV9pc0FuaW1WYWxPYnNlcnZlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKj4oc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3Jl
YXRlRFdyYXBwZXIodGhpcykpLT5hbmltVmFsKCkuZ2V0KCkpOworICAgIHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4obG9v
a3VwT3JDcmVhdGVEV3JhcHBlcih0aGlzKSktPmFuaW1WYWwoKTsKIH0KIAotUmVmUHRyPFNWR1Bh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPiBTVkdQYXRoRWxlbWVudDo6YW5pbWF0ZWROb3JtYWxp
emVkUGF0aFNlZ0xpc3QoKQorUmVmUHRyPFNWR1BhdGhTZWdMaXN0PiBTVkdQYXRoRWxlbWVudDo6
YW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QoKQogewogICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTIgLSBJbXBsZW1lbnQgbm9ybWFs
aXplZCBwYXRoIHNlZ21lbnQgbGlzdHMhCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zODMsNyAr
MzgxLDcgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3RDaGFuZ2VkKAogICAgICAg
ICAgICAgQVNTRVJUKCFtX3BhdGhTZWdMaXN0LnZhbHVlLmlzRW1wdHkoKSk7CiAgICAgICAgICAg
ICBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKG1fcGF0aFNlZ0xpc3QudmFs
dWUubGFzdCgpLmNvcHlSZWYoKSwgbV9wYXRoQnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZyk7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21T
VkdQYXRoU2VnTGlzdChtX3BhdGhTZWdMaXN0LnZhbHVlLCBtX3BhdGhCeXRlU3RyZWFtLCBVbmFs
dGVyZWRQYXJzaW5nKTsKKyAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZH
UGF0aFNlZ0xpc3RWYWx1ZXMobV9wYXRoU2VnTGlzdC52YWx1ZSwgbV9wYXRoQnl0ZVN0cmVhbSwg
VW5hbHRlcmVkUGFyc2luZyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGF0aFNlZ1VuZGVm
aW5lZFJvbGU6CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIlNWR0dy
YXBoaWNzRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0
aEJ5dGVTdHJlYW0uaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgorI2luY2x1ZGUgIlNW
R1BhdGhTZWdMaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNyAr
NDksNyBAQCBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOwogY2xhc3MgU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbDsKIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljU21vb3RoQWJzOwogY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhS
ZWw7Ci1jbGFzcyBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjsKK2NsYXNzIFNWR1BhdGhT
ZWdMaXN0OwogY2xhc3MgU1ZHUG9pbnQ7CiAKIGNsYXNzIFNWR1BhdGhFbGVtZW50IGZpbmFsIDog
cHVibGljIFNWR0dyYXBoaWNzRWxlbWVudCwKQEAgLTgyLDEwICs4MiwxMCBAQCBwdWJsaWM6CiAg
ICAgUmVmPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsPiBjcmVhdGVTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2Vn
Um9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKIAogICAgIC8vIFVzZWQgaW4gdGhlIGJpbmRp
bmdzIG9ubHkuCi0gICAgUmVmUHRyPFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPiBwYXRo
U2VnTGlzdCgpOwotICAgIFJlZlB0cjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gYW5p
bWF0ZWRQYXRoU2VnTGlzdCgpOwotICAgIFJlZlB0cjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZj4gbm9ybWFsaXplZFBhdGhTZWdMaXN0KCk7Ci0gICAgUmVmUHRyPFNWR1BhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmPiBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCgpOworICAgIFJl
ZjxTVkdQYXRoU2VnTGlzdD4gcGF0aFNlZ0xpc3QoKTsKKyAgICBSZWY8U1ZHUGF0aFNlZ0xpc3Q+
IGFuaW1hdGVkUGF0aFNlZ0xpc3QoKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IG5vcm1h
bGl6ZWRQYXRoU2VnTGlzdCgpOworICAgIFJlZlB0cjxTVkdQYXRoU2VnTGlzdD4gYW5pbWF0ZWRO
b3JtYWxpemVkUGF0aFNlZ0xpc3QoKTsKIAogICAgIGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBw
YXRoQnl0ZVN0cmVhbSgpIGNvbnN0OwogCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKIAog
cHJpdmF0ZToKICAgICBTVkdQYXRoQnl0ZVN0cmVhbSBtX3BhdGhCeXRlU3RyZWFtOwotICAgIG11
dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1BhdGhTZWdMaXN0PiBt
X3BhdGhTZWdMaXN0OworICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3Bl
cnR5PFNWR1BhdGhTZWdMaXN0VmFsdWVzPiBtX3BhdGhTZWdMaXN0OwogICAgIFdlYWtQdHJGYWN0
b3J5PFNWR1BhdGhFbGVtZW50PiBtX3dlYWtQdHJGYWN0b3J5OwogICAgIGJvb2wgbV9pc0FuaW1W
YWxPYnNlcnZlZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJ
KHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw0IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMywyMyArMjAsMTEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKIAorI2luY2x1ZGUg
IlNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFV0
aWxpdGllcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdXaXRoQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVN0cmluZyBTVkdQYXRoU2VnTGlzdDo6dmFsdWVBc1N0cmluZygpIGNv
bnN0Cit2b2lkIFNWR1BhdGhTZWdMaXN0OjpjbGVhckNvbnRleHRBbmRSb2xlcygpCiB7Ci0gICAg
U3RyaW5nIHBhdGhTdHJpbmc7Ci0gICAgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoKnRo
aXMsIHBhdGhTdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpOwotICAgIHJldHVybiBwYXRoU3RyaW5n
OworICAgIEFTU0VSVChtX3ZhbHVlcyk7CisgICAgZm9yIChhdXRvJiBpdGVtIDogKm1fdmFsdWVz
KSB7CisgICAgICAgIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4dCo+KGl0ZW0uZ2V0
KCkpLT5zZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Cisg
ICAgfQogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24gbGlzdE1vZGlmaWNhdGlvbikKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IFNWR1BhdGhTZWdMaXN0OjpjbGVhcigpCiB7CisgICAgQVNTRVJUKG1fdmFs
dWVzKTsKKyAgICBpZiAobV92YWx1ZXMtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIGNsZWFyQ29udGV4dEFuZFJvbGVzKCk7CisgICAgcmV0dXJuIEJhc2U6OmNsZWFyVmFs
dWVzKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFNWR1BhdGhTZWdMaXN0OjpQdHJMaXN0SXRlbVR5cGU+
IFNWR1BhdGhTZWdMaXN0OjpnZXRJdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIHJldHVybiBC
YXNlOjpnZXRJdGVtVmFsdWVzKGluZGV4KTsKK30KKworRXhjZXB0aW9uT3I8U1ZHUGF0aFNlZ0xp
c3Q6OlB0ckxpc3RJdGVtVHlwZT4gU1ZHUGF0aFNlZ0xpc3Q6OnJlcGxhY2VJdGVtKFB0ckxpc3RJ
dGVtVHlwZSBuZXdJdGVtLCB1bnNpZ25lZCBpbmRleCkKK3sKKyAgICAvLyBOb3Qgc3BlY2lmaWVk
LCBidXQgRkYvT3BlcmEgZG8gaXQgdGhpcyB3YXksIGFuZCBpdCdzIGp1c3Qgc2FuZS4KKyAgICBp
ZiAoIW5ld0l0ZW0pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTVkdFeGNlcHRpb246OlNW
R19XUk9OR19UWVBFX0VSUiB9OworCisgICAgaWYgKGluZGV4IDwgbV92YWx1ZXMtPnNpemUoKSkg
eworICAgICAgICBMaXN0SXRlbVR5cGUgcmVwbGFjZWRJdGVtID0gbV92YWx1ZXMtPmF0KGluZGV4
KTsKKyAgICAgICAgQVNTRVJUKHJlcGxhY2VkSXRlbSk7CisgICAgICAgIHN0YXRpY19jYXN0PFNW
R1BhdGhTZWdXaXRoQ29udGV4dCo+KHJlcGxhY2VkSXRlbS5nZXQoKSktPnNldENvbnRleHRBbmRS
b2xlKG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
QmFzZTo6cmVwbGFjZUl0ZW1WYWx1ZXMobmV3SXRlbSwgaW5kZXgpOworfQorCitFeGNlcHRpb25P
cjxTVkdQYXRoU2VnTGlzdDo6UHRyTGlzdEl0ZW1UeXBlPiBTVkdQYXRoU2VnTGlzdDo6cmVtb3Zl
SXRlbSh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IEJhc2U6OnJlbW92ZUl0
ZW1WYWx1ZXMoaW5kZXgpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgYXV0byByZW1vdmVkSXRlbSA9IHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKKyAgICBpZiAocmVtb3ZlZEl0ZW0pCisgICAgICAgIHN0YXRpY19jYXN0PFNW
R1BhdGhTZWdXaXRoQ29udGV4dCY+KCpyZW1vdmVkSXRlbSkuc2V0Q29udGV4dEFuZFJvbGUobnVs
bHB0ciwgUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIHJldHVybiBXVEZNb3ZlKHJlbW92ZWRJ
dGVtKTsKK30KKworU1ZHUGF0aEVsZW1lbnQqIFNWR1BhdGhTZWdMaXN0Ojpjb250ZXh0RWxlbWVu
dCgpIGNvbnN0Cit7CisgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBtX2FuaW1hdGVk
UHJvcGVydHktPmNvbnRleHRFbGVtZW50KCk7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsK
LSAgICBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4oY29udGV4dEVsZW1lbnQpLT5wYXRoU2VnTGlz
dENoYW5nZWQobV9yb2xlLCBsaXN0TW9kaWZpY2F0aW9uKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
U1ZHUGF0aEVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KTsKK30KKworYm9vbCBTVkdQYXRoU2VnTGlz
dDo6cHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0
ZW0sIHVuc2lnbmVkKiBpbmRleFRvTW9kaWZ5KQoreworICAgIFNWR1BhdGhTZWdXaXRoQ29udGV4
dCogbmV3SXRlbVdpdGhDb250ZXh0ID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0
Kj4obmV3SXRlbS5nZXQoKSk7CisgICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGFuaW1h
dGVkUHJvcGVydHlPZkl0ZW0gPSBuZXdJdGVtV2l0aENvbnRleHQtPmFuaW1hdGVkUHJvcGVydHko
KTsKKworICAgIC8vIEFsdGVyIHRoZSByb2xlLCBhZnRlciBjYWxsaW5nIGFuaW1hdGVkUHJvcGVy
dHkoKSwgYXMgdGhhdCBtYXkgaW5mbHVlbmNlIHRoZSByZXR1cm5lZCBhbmltYXRlZCBwcm9wZXJ0
eS4KKyAgICBuZXdJdGVtV2l0aENvbnRleHQtPnNldENvbnRleHRBbmRSb2xlKGNvbnRleHRFbGVt
ZW50KCksIG1fcGF0aFNlZ1JvbGUpOworCisgICAgaWYgKCFhbmltYXRlZFByb3BlcnR5T2ZJdGVt
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG5ld0l0ZW0gYmVsb25ncyB0byBhIFNW
R1BhdGhFbGVtZW50LCBidXQgaXRzIGFzc29jaWF0ZWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSBpcyBu
b3QgYW4gYW5pbWF0ZWQgbGlzdCB0ZWFyIG9mZi4KKyAgICAvLyAoZm9yIGV4YW1wbGU6ICJwYXRo
RWxlbWVudC5wYXRoU2VnTGlzdC5hcHBlbmRJdGVtKHBhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhT
ZWdDbG9zZXBhdGgoKSkiKQorICAgIGlmICghYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbS0+aXNBbmlt
YXRlZExpc3RUZWFyT2ZmKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gU3BlYzog
SWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgaXQgaXMgcmVtb3ZlZCBmcm9tIGl0cyBw
cmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMgbGlzdC4KKyAgICAv
LyAnbmV3SXRlbScgaXMgYWxyZWFkeSBsaXZpbmcgaW4gYW5vdGhlciBsaXN0LiBJZiBpdCdzIG5v
dCBvdXIgbGlzdCwgc3luY2hyb25pemUgdGhlIG90aGVyIGxpc3RzIHdyYXBwZXJzIGFmdGVyIHRo
ZSByZW1vdmFsLgorICAgIGJvb2wgbGl2ZXNJbk90aGVyTGlzdCA9IGFuaW1hdGVkUHJvcGVydHlP
Zkl0ZW0gIT0gbV9hbmltYXRlZFByb3BlcnR5OworICAgIFJlZlB0cjxTVkdBbmltYXRlZFBhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmPiBwcm9wZXJ0eVRlYXJPZmYgPSBzdGF0aWNfcG9pbnRlcl9j
YXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGFuaW1hdGVkUHJvcGVy
dHlPZkl0ZW0pOworICAgIGludCBpbmRleFRvUmVtb3ZlID0gcHJvcGVydHlUZWFyT2ZmLT5maW5k
SXRlbShuZXdJdGVtLmdldCgpKTsKKyAgICBBU1NFUlQoaW5kZXhUb1JlbW92ZSAhPSAtMSk7CisK
KyAgICAvLyBEbyBub3QgcmVtb3ZlIG5ld0l0ZW0gaWYgYWxyZWFkeSBpbiB0aGlzIGxpc3QgYXQg
dGhlIHRhcmdldCBpbmRleC4KKyAgICBpZiAoIWxpdmVzSW5PdGhlckxpc3QgJiYgaW5kZXhUb01v
ZGlmeSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhUb1JlbW92ZSkgPT0gKmluZGV4VG9N
b2RpZnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHByb3BlcnR5VGVhck9mZi0+cmVt
b3ZlSXRlbUZyb21MaXN0KGluZGV4VG9SZW1vdmUsIGxpdmVzSW5PdGhlckxpc3QpOworCisgICAg
aWYgKCFpbmRleFRvTW9kaWZ5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIElmIHRo
ZSBpdGVtIGxpdmVkIGluIG91ciBsaXN0LCBhZGp1c3QgdGhlIGluc2VydGlvbiBpbmRleC4KKyAg
ICBpZiAoIWxpdmVzSW5PdGhlckxpc3QpIHsKKyAgICAgICAgdW5zaWduZWQmIGluZGV4ID0gKmlu
ZGV4VG9Nb2RpZnk7CisgICAgICAgIC8vIFNwZWM6IElmIHRoZSBpdGVtIGlzIGFscmVhZHkgaW4g
dGhpcyBsaXN0LCBub3RlIHRoYXQgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIChyZXBsYWNlfGlu
c2VydCBiZWZvcmUpIGlzIGJlZm9yZSB0aGUgcmVtb3ZhbCBvZiB0aGUgaXRlbS4KKyAgICAgICAg
aWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleFRvUmVtb3ZlKSA8IGluZGV4KQorICAgICAg
ICAgICAgLS1pbmRleDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xOSw0MCArMTksMTQz
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5LmgiCi0jaW5j
bHVkZSAiU1ZHUGF0aFNlZy5oIgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR1Bh
dGhTZWdMaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRWxl
bWVudDsKK2NsYXNzIFNWR1BhdGhFbGVtZW50OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLWNs
YXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKLQotY2xhc3MgU1ZHUGF0aFNlZ0xpc3QgOiBwdWJsaWMg
VmVjdG9yPFJlZlB0cjxTVkdQYXRoU2VnPj4geworY2xhc3MgU1ZHUGF0aFNlZ0xpc3QgZmluYWwg
OiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5PFNWR1BhdGhTZWdMaXN0VmFsdWVzPiB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgU1ZHUGF0aFNlZ0xpc3QoU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKLSAgICAg
ICAgOiBtX3JvbGUocm9sZSkKKyAgICB1c2luZyBCYXNlID0gU1ZHTGlzdFByb3BlcnR5PFNWR1Bh
dGhTZWdMaXN0VmFsdWVzPjsKKyAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYg
PSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUGF0aFNlZ0xpc3RWYWx1ZXM+Owor
ICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1BhdGhTZWdMaXN0
VmFsdWVzPjo6TGlzdEl0ZW1UeXBlOworICAgIHVzaW5nIFB0ckxpc3RJdGVtVHlwZSA9IFJlZlB0
cjxTVkdQYXRoU2VnPjsKKworICAgIHN0YXRpYyBSZWY8U1ZHUGF0aFNlZ0xpc3Q+IGNyZWF0ZShB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5
Um9sZSByb2xlLCBTVkdQYXRoU2VnUm9sZSBwYXRoU2VnUm9sZSwgU1ZHUGF0aFNlZ0xpc3RWYWx1
ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQYXRoU2VnTGlzdChhbmltYXRlZFByb3BlcnR5LCByb2xl
LCBwYXRoU2VnUm9sZSwgdmFsdWVzLCB3cmFwcGVycykpOworICAgIH0KKworICAgIHN0YXRpYyBS
ZWY8U1ZHUGF0aFNlZ0xpc3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFu
aW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQYXRoU2VnTGlzdFZhbHVl
cyYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQYXRo
U2VnTGlzdChhbmltYXRlZFByb3BlcnR5LCByb2xlLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSwgdmFs
dWVzLCB3cmFwcGVycykpOworICAgIH0KKworICAgIGludCBmaW5kSXRlbShjb25zdCBMaXN0SXRl
bVR5cGUmIGl0ZW0pIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV92YWx1ZXMpOworCisg
ICAgICAgIHVuc2lnbmVkIHNpemUgPSBtX3ZhbHVlcy0+c2l6ZSgpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbV92
YWx1ZXMtPmF0KGkpKQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlSXRlbUZyb21MaXN0KHNp
emVfdCBpdGVtSW5kZXgsIGJvb2wgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycykKICAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGl0ZW1JbmRleCA8IG1fdmFsdWVzLT5zaXplKCkpOworCisgICAgICAgIG1fdmFs
dWVzLT5yZW1vdmUoaXRlbUluZGV4KTsKKworICAgICAgICBpZiAoc2hvdWxkU3luY2hyb25pemVX
cmFwcGVycykKKyAgICAgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgIH0KKworICAgIC8vIFNW
R0xpc3QgQVBJCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xlYXIoKTsKKworICAgIEV4Y2VwdGlv
bk9yPFB0ckxpc3RJdGVtVHlwZT4gaW5pdGlhbGl6ZShQdHJMaXN0SXRlbVR5cGUgbmV3SXRlbSkK
KyAgICB7CisgICAgICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1dCBGRi9PcGVyYSBkbyBpdCB0aGlz
IHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgorICAgICAgICBpZiAoIW5ld0l0ZW0pCisgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlIg
fTsKKworICAgICAgICBjbGVhckNvbnRleHRBbmRSb2xlcygpOworICAgICAgICByZXR1cm4gQmFz
ZTo6aW5pdGlhbGl6ZVZhbHVlcyhuZXdJdGVtKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxQ
dHJMaXN0SXRlbVR5cGU+IGdldEl0ZW0odW5zaWduZWQgaW5kZXgpOworCisgICAgRXhjZXB0aW9u
T3I8UHRyTGlzdEl0ZW1UeXBlPiBpbnNlcnRJdGVtQmVmb3JlKFB0ckxpc3RJdGVtVHlwZSBuZXdJ
dGVtLCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1
dCBGRi9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgorICAgICAgICBp
ZiAoIW5ld0l0ZW0pCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0aW9u
OjpTVkdfV1JPTkdfVFlQRV9FUlIgfTsKKworICAgICAgICByZXR1cm4gQmFzZTo6aW5zZXJ0SXRl
bUJlZm9yZVZhbHVlcyhuZXdJdGVtLCBpbmRleCk7CiAgICAgfQogCi0gICAgU3RyaW5nIHZhbHVl
QXNTdHJpbmcoKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxQdHJMaXN0SXRlbVR5cGU+IHJlcGxh
Y2VJdGVtKFB0ckxpc3RJdGVtVHlwZSwgdW5zaWduZWQgaW5kZXgpOwogCi0gICAgLy8gT25seSB1
c2VkIGJ5IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLgotICAgIHZvaWQgY29tbWl0Q2hh
bmdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uKTsKKyAgICBF
eGNlcHRpb25PcjxQdHJMaXN0SXRlbVR5cGU+IHJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpOwor
CisgICAgRXhjZXB0aW9uT3I8UHRyTGlzdEl0ZW1UeXBlPiBhcHBlbmRJdGVtKFB0ckxpc3RJdGVt
VHlwZSBuZXdJdGVtKQorICAgIHsKKyAgICAgICAgLy8gTm90IHNwZWNpZmllZCwgYnV0IEZGL09w
ZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBqdXN0IHNhbmUuCisgICAgICAgIGlmICghbmV3
SXRlbSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTVkdFeGNlcHRpb246OlNWR19X
Uk9OR19UWVBFX0VSUiB9OworCisgICAgICAgIHJldHVybiBCYXNlOjphcHBlbmRJdGVtVmFsdWVz
KG5ld0l0ZW0pOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdQYXRoU2VnUm9sZSBtX3JvbGU7
Ci19OworICAgIFNWR1BhdGhTZWdMaXN0KEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5p
bWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1BhdGhTZWdSb2xlIHBhdGhT
ZWdSb2xlLCBTVkdQYXRoU2VnTGlzdFZhbHVlcyYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3
cmFwcGVycykKKyAgICAgICAgOiBTVkdMaXN0UHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3RWYWx1ZXM+
KHJvbGUsIHZhbHVlcywgJndyYXBwZXJzKQorICAgICAgICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eSgm
YW5pbWF0ZWRQcm9wZXJ0eSkKKyAgICAgICAgLCBtX3BhdGhTZWdSb2xlKHBhdGhTZWdSb2xlKQor
ICAgIHsKKyAgICB9CiAKLXRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1Bh
dGhTZWdMaXN0PiB7Ci0gICAgc3RhdGljIFNWR1BhdGhTZWdMaXN0IGluaXRpYWxWYWx1ZSgpIHsg
cmV0dXJuIFNWR1BhdGhTZWdMaXN0KFBhdGhTZWdVbmRlZmluZWRSb2xlKTsgfQorICAgIHZpcnR1
YWwgflNWR1BhdGhTZWdMaXN0KCkKKyAgICB7CisgICAgICAgIGlmIChtX2FuaW1hdGVkUHJvcGVy
dHkpCisgICAgICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPnByb3BlcnR5V2lsbEJlRGVsZXRl
ZCgqdGhpcyk7CisgICAgfQorCisgICAgU1ZHUGF0aEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkg
Y29uc3Q7CiAKLSAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBSZWZQdHI8U1ZHUGF0aFNlZz47Ci0g
ICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2ZmPFJlZlB0cjxTVkdQ
YXRoU2VnPj47CisgICAgdm9pZCBjbGVhckNvbnRleHRBbmRSb2xlcygpOworCisgICAgdXNpbmcg
QmFzZTo6bV9yb2xlOworCisgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIGlmIChtX3JvbGUgPT0gQW5pbVZhbFJvbGUpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eSAmJiBtX2FuaW1hdGVkUHJvcGVy
dHktPmlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBjb21taXRDaGFuZ2UoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsKKyAgICAgICAgbV92YWx1ZXMtPmNvbW1pdENoYW5n
ZSgqbV9hbmltYXRlZFByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgpLCBMaXN0TW9kaWZpY2F0aW9u
VW5rbm93bik7CisgICAgfQorCisgICAgdm9pZCBjb21taXRDaGFuZ2UoTGlzdE1vZGlmaWNhdGlv
biBsaXN0TW9kaWZpY2F0aW9uKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsdWVz
KTsKKyAgICAgICAgbV92YWx1ZXMtPmNvbW1pdENoYW5nZSgqbV9hbmltYXRlZFByb3BlcnR5LT5j
b250ZXh0RWxlbWVudCgpLCBsaXN0TW9kaWZpY2F0aW9uKTsKKyAgICB9CisKKyAgICBib29sIHBy
b2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiBuZXdJdGVtLCB1
bnNpZ25lZCogaW5kZXhUb01vZGlmeSkgZmluYWw7CisgICAgYm9vbCBwcm9jZXNzSW5jb21pbmdM
aXN0SXRlbVdyYXBwZXIoUmVmPExpc3RJdGVtVGVhck9mZj4mLCB1bnNpZ25lZCopIGZpbmFsCisg
ICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmY+IG1fYW5pbWF0ZWRQcm9wZXJ0eTsKKyAgICBTVkdQYXRoU2VnUm9sZSBtX3BhdGhTZWdSb2xl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MiwxMyArNDIsMTMgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnTGluZXRvUmVsLmgiCiAjaW5j
bHVkZSAiU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNl
Z0xpbmV0b1ZlcnRpY2FsUmVsLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKKyNpbmNs
dWRlICJTVkdQYXRoU2VnTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG9B
YnMuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRvUmVsLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoU1ZH
UGF0aEVsZW1lbnQmIHBhdGhFbGVtZW50LCBTVkdQYXRoU2VnTGlzdCYgcGF0aFNlZ0xpc3QsIFNW
R1BhdGhTZWdSb2xlIHJvbGUpCitTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OlNWR1BhdGhTZWdMaXN0
QnVpbGRlcihTVkdQYXRoRWxlbWVudCYgcGF0aEVsZW1lbnQsIFNWR1BhdGhTZWdMaXN0VmFsdWVz
JiBwYXRoU2VnTGlzdCwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKICAgICA6IG1fcGF0aEVsZW1lbnQo
cGF0aEVsZW1lbnQpCiAgICAgLCBtX3BhdGhTZWdMaXN0KHBhdGhTZWdMaXN0KQogICAgICwgbV9w
YXRoU2VnUm9sZShyb2xlKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0
QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlz
dEJ1aWxkZXIuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0QnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgiCi0jaW5j
bHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdFZhbHVlcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU1ZHUGF0
aEVsZW1lbnQ7CiAKIGNsYXNzIFNWR1BhdGhTZWdMaXN0QnVpbGRlciBmaW5hbCA6IHB1YmxpYyBT
VkdQYXRoQ29uc3VtZXIgewogcHVibGljOgotICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlcihTVkdQ
YXRoRWxlbWVudCYsIFNWR1BhdGhTZWdMaXN0JiwgU1ZHUGF0aFNlZ1JvbGUpOworICAgIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlcihTVkdQYXRoRWxlbWVudCYsIFNWR1BhdGhTZWdMaXN0VmFsdWVzJiwg
U1ZHUGF0aFNlZ1JvbGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21l
bnRDb3VudCgpIGZpbmFsIHsgfQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXJjVG8oZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBG
bGFnLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBmaW5hbDsKIAogICAg
IFNWR1BhdGhFbGVtZW50JiBtX3BhdGhFbGVtZW50OwotICAgIFNWR1BhdGhTZWdMaXN0JiBtX3Bh
dGhTZWdMaXN0OworICAgIFNWR1BhdGhTZWdMaXN0VmFsdWVzJiBtX3BhdGhTZWdMaXN0OwogICAg
IFNWR1BhdGhTZWdSb2xlIG1fcGF0aFNlZ1JvbGUgeyBQYXRoU2VnVW5kZWZpbmVkUm9sZSB9Owog
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3Bw
CShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RT
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6OlNWR1BhdGhTZWdMaXN0U291cmNlKGNv
bnN0IFNWR1BhdGhTZWdMaXN0JiBwYXRoU2VnTGlzdCkKK1NWR1BhdGhTZWdMaXN0U291cmNlOjpT
VkdQYXRoU2VnTGlzdFNvdXJjZShjb25zdCBTVkdQYXRoU2VnTGlzdFZhbHVlcyYgcGF0aFNlZ0xp
c3QpCiAgICAgOiBtX3BhdGhTZWdMaXN0KHBhdGhTZWdMaXN0KQogewogICAgIG1faXRlbUN1cnJl
bnQgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgJ
KHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdM
aXN0LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdQ
YXRoU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC0yOSw3ICsyOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUGF0aFNlZ0xpc3RTb3VyY2UgZmluYWwg
OiBwdWJsaWMgU1ZHUGF0aFNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU1ZHUGF0aFNl
Z0xpc3RTb3VyY2UoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmKTsKKyAgICBleHBsaWNpdCBTVkdQYXRo
U2VnTGlzdFNvdXJjZShjb25zdCBTVkdQYXRoU2VnTGlzdFZhbHVlcyYpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdCBmaW5hbDsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoRmxvYXRQ
b2ludCYpIGZpbmFsOwogICAgIGJvb2wgcGFyc2VBcmNUb1NlZ21lbnQoZmxvYXQmLCBmbG9hdCYs
IGZsb2F0JiwgYm9vbCYsIGJvb2wmLCBGbG9hdFBvaW50JikgZmluYWw7CiAKLSAgICBjb25zdCBT
VkdQYXRoU2VnTGlzdCYgbV9wYXRoU2VnTGlzdDsKKyAgICBjb25zdCBTVkdQYXRoU2VnTGlzdFZh
bHVlcyYgbV9wYXRoU2VnTGlzdDsKICAgICBSZWZQdHI8U1ZHUGF0aFNlZz4gbV9zZWdtZW50Owog
ICAgIGludCBtX2l0ZW1DdXJyZW50OwogICAgIGludCBtX2l0ZW1FbmQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcDoyMDg3MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKKworI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoVXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIFNW
R1BhdGhTZWdMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcGF0aFN0
cmluZzsKKyAgICBidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdCgqdGhpcywgcGF0aFN0cmlu
ZywgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgcmV0dXJuIHBhdGhTdHJpbmc7Cit9CisKK3ZvaWQg
U1ZHUGF0aFNlZ0xpc3Q6OmNvbW1pdENoYW5nZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwg
TGlzdE1vZGlmaWNhdGlvbiBsaXN0TW9kaWZpY2F0aW9uKQoreworICAgIEFTU0VSVChjb250ZXh0
RWxlbWVudCk7CisgICAgZG93bmNhc3Q8U1ZHUGF0aEVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KS0+
cGF0aFNlZ0xpc3RDaGFuZ2VkKG1fcm9sZSwgbGlzdE1vZGlmaWNhdGlvbik7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcAkocmV2aXNp
b24gMjA4NzA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdM
aXN0VmFsdWVzLmgiCiAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhF
bGVtZW50LmgiCkBAIC0yOSwxNyArMjksMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
dHJpbmcgU1ZHUGF0aFNlZ0xpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAorU3RyaW5nIFNWR1Bh
dGhTZWdMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmcgcGF0
aFN0cmluZzsKLSAgICBidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdCgqdGhpcywgcGF0aFN0
cmluZywgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xp
c3RWYWx1ZXMoKnRoaXMsIHBhdGhTdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgIHJldHVy
biBwYXRoU3RyaW5nOwogfQogCi12b2lkIFNWR1BhdGhTZWdMaXN0Ojpjb21taXRDaGFuZ2UoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24gbGlzdE1vZGlmaWNhdGlv
bikKK3ZvaWQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXM6OmNvbW1pdENoYW5nZShTVkdFbGVtZW50JiBj
b250ZXh0RWxlbWVudCwgTGlzdE1vZGlmaWNhdGlvbiBsaXN0TW9kaWZpY2F0aW9uKQogewotICAg
IEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgZG93bmNhc3Q8U1ZHUGF0aEVsZW1lbnQ+KGNv
bnRleHRFbGVtZW50KS0+cGF0aFNlZ0xpc3RDaGFuZ2VkKG1fcm9sZSwgbGlzdE1vZGlmaWNhdGlv
bik7CisgICAgZG93bmNhc3Q8U1ZHUGF0aEVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KS5wYXRoU2Vn
TGlzdENoYW5nZWQobV9yb2xlLCBsaXN0TW9kaWZpY2F0aW9uKTsKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmgJKHJldmlzaW9uIDIwODcwNCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0Lmg6MjA4NzA0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eS5o
IgorI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5o
IgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdFbGVtZW50OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiAKK2NsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKKworY2xhc3MgU1ZHUGF0
aFNlZ0xpc3QgOiBwdWJsaWMgVmVjdG9yPFJlZlB0cjxTVkdQYXRoU2VnPj4geworcHVibGljOgor
ICAgIGV4cGxpY2l0IFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhTZWdSb2xlIHJvbGUpCisgICAgICAg
IDogbV9yb2xlKHJvbGUpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5n
KCkgY29uc3Q7CisKKyAgICAvLyBPbmx5IHVzZWQgYnkgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYuCisgICAgdm9pZCBjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQs
IExpc3RNb2RpZmljYXRpb24pOworCitwcml2YXRlOgorICAgIFNWR1BhdGhTZWdSb2xlIG1fcm9s
ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1BhdGhTZWdM
aXN0PiB7CisgICAgc3RhdGljIFNWR1BhdGhTZWdMaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJu
IFNWR1BhdGhTZWdMaXN0KFBhdGhTZWdVbmRlZmluZWRSb2xlKTsgfQorCisgICAgdXNpbmcgTGlz
dEl0ZW1UeXBlID0gUmVmUHRyPFNWR1BhdGhTZWc+OworICAgIHVzaW5nIExpc3RJdGVtVGVhck9m
ZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxSZWZQdHI8U1ZHUGF0aFNlZz4+OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0
VmFsdWVzLmgJKHJldmlzaW9uIDIwODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwzMSArMjgsMzIgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsKK2NsYXNzIFNWR1BhdGhTZWdMaXN0
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKIGNsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKIAot
Y2xhc3MgU1ZHUGF0aFNlZ0xpc3QgOiBwdWJsaWMgVmVjdG9yPFJlZlB0cjxTVkdQYXRoU2VnPj4g
eworY2xhc3MgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMgOiBwdWJsaWMgVmVjdG9yPFJlZlB0cjxTVkdQ
YXRoU2VnPj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhT
ZWdSb2xlIHJvbGUpCisgICAgZXhwbGljaXQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoU1ZHUGF0aFNl
Z1JvbGUgcm9sZSkKICAgICAgICAgOiBtX3JvbGUocm9sZSkKICAgICB7CiAgICAgfQogCiAgICAg
U3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKIAotICAgIC8vIE9ubHkgdXNlZCBieSBTVkdQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi4KLSAgICB2b2lkIGNvbW1pdENoYW5nZShTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCwgTGlzdE1vZGlmaWNhdGlvbik7CisgICAgdm9pZCBjb21taXRD
aGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24pOwogCiBw
cml2YXRlOgogICAgIFNWR1BhdGhTZWdSb2xlIG1fcm9sZTsKIH07CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1BhdGhTZWdMaXN0PiB7Ci0gICAgc3RhdGljIFNWR1Bh
dGhTZWdMaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1BhdGhTZWdMaXN0KFBhdGhTZWdV
bmRlZmluZWRSb2xlKTsgfQordGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
UGF0aFNlZ0xpc3RWYWx1ZXM+IHsKKyAgICBzdGF0aWMgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMgaW5p
dGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoUGF0aFNlZ1VuZGVmaW5l
ZFJvbGUpOyB9CiAKICAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBSZWZQdHI8U1ZHUGF0aFNlZz47
CiAgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2ZmPFJlZlB0cjxT
VkdQYXRoU2VnPj47CisgICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR1BhdGhTZWdM
aXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3
IEBAIGJvb2wgYnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGQKICAgICByZXR1cm4g
U1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNlLCBidWlsZGVyKTsKIH0KIAotYm9vbCBidWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBs
aXN0LCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01v
ZGUpCitib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMo
Y29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIGxpc3QsIFNWR1BhdGhCeXRlU3RyZWFtJiByZXN1
bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKIHsKICAgICByZXN1bHQuY2xlYXIoKTsK
ICAgICBpZiAobGlzdC5pc0VtcHR5KCkpCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgYXBwZW5kU1ZH
UGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFMKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEyIC0gSW1wbGVtZW50IG5vcm1hbGl6ZWQgcGF0
aCBzZWdtZW50IGxpc3RzIQogICAgIEFTU0VSVChwYXJzaW5nTW9kZSA9PSBVbmFsdGVyZWRQYXJz
aW5nKTsKIAotICAgIFNWR1BhdGhTZWdMaXN0IGFwcGVuZGVkSXRlbUxpc3QoUGF0aFNlZ1VuYWx0
ZXJlZFJvbGUpOworICAgIFNWR1BhdGhTZWdMaXN0VmFsdWVzIGFwcGVuZGVkSXRlbUxpc3QoUGF0
aFNlZ1VuYWx0ZXJlZFJvbGUpOwogICAgIGFwcGVuZGVkSXRlbUxpc3QuYXBwZW5kKFdURk1vdmUo
cGF0aFNlZykpOwogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0gYXBwZW5kZWRCeXRlU3RyZWFtOwpA
QCAtODcsNyArODcsNyBAQCBib29sIGJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKGNvbnN0IFNWR1Bh
CiAgICAgcmV0dXJuIFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CiB9CiAK
LWJvb2wgYnVpbGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRl
U3RyZWFtJiBzdHJlYW0sIFNWR1BhdGhFbGVtZW50JiBlbGVtZW50LCBTVkdQYXRoU2VnTGlzdCYg
cmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCitib29sIGJ1aWxkU1ZHUGF0aFNl
Z0xpc3RWYWx1ZXNGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgc3RyZWFt
LCBTVkdQYXRoRWxlbWVudCYgZWxlbWVudCwgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIHJlc3VsdCwg
UGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQogewogICAgIGlmIChzdHJlYW0uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIGJ1aWxkU3Ry
aW5nRnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHCiAgICAgcmV0dXJuIFNWR1BhdGhQYXJzZXI6OnBh
cnNlVG9TdHJpbmcoc291cmNlLCByZXN1bHQsIHBhcnNpbmdNb2RlKTsKIH0KIAotYm9vbCBidWls
ZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlzdCYgbGlzdCwgU3Ry
aW5nJiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKK2Jvb2wgYnVpbGRTdHJp
bmdGcm9tU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIGxp
c3QsIFN0cmluZyYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiB7CiAgICAg
cmVzdWx0ID0gU3RyaW5nKCk7CiAgICAgaWYgKGxpc3QuaXNFbXB0eSgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwyMyAr
MzAsMjMgQEAgY2xhc3MgUGF0aDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwogY2xhc3MgU1ZH
UGF0aEVsZW1lbnQ7CiBjbGFzcyBTVkdQYXRoU2VnOwotY2xhc3MgU1ZHUGF0aFNlZ0xpc3Q7Citj
bGFzcyBTVkdQYXRoU2VnTGlzdFZhbHVlczsKIAogLy8gU3RyaW5nL1NWR1BhdGhCeXRlU3RyZWFt
IC0+IFBhdGgKIGJvb2wgYnVpbGRQYXRoRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBQYXRoJik7
CiBib29sIGJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiwg
UGF0aCYpOwogCi0vLyBTVkdQYXRoU2VnTGlzdC9TdHJpbmcgLT4gU1ZHUGF0aEJ5dGVTdHJlYW0K
LWJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQ
YXRoU2VnTGlzdCYsIFNWR1BhdGhCeXRlU3RyZWFtJiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSk7
CisvLyBTVkdQYXRoU2VnTGlzdFZhbHVlcy9TdHJpbmcgLT4gU1ZHUGF0aEJ5dGVTdHJlYW0KK2Jv
b2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdFZhbHVlcyhjb25zdCBT
VkdQYXRoU2VnTGlzdFZhbHVlcyYsIFNWR1BhdGhCeXRlU3RyZWFtJiByZXN1bHQsIFBhdGhQYXJz
aW5nTW9kZSk7CiBib29sIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUmVm
UHRyPFNWR1BhdGhTZWc+JiYsIFNWR1BhdGhCeXRlU3RyZWFtJiwgUGF0aFBhcnNpbmdNb2RlKTsK
IGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgU1ZH
UGF0aEJ5dGVTdHJlYW0mLCBQYXRoUGFyc2luZ01vZGUpOwogCi0vLyBTVkdQYXRoQnl0ZVN0cmVh
bS9TVkdQYXRoU2VnTGlzdCAtPiBTdHJpbmcKKy8vIFNWR1BhdGhCeXRlU3RyZWFtL1NWR1BhdGhT
ZWdMaXN0VmFsdWVzIC0+IFN0cmluZwogYm9vbCBidWlsZFN0cmluZ0Zyb21CeXRlU3RyZWFtKGNv
bnN0IFNWR1BhdGhCeXRlU3RyZWFtJiwgU3RyaW5nJiwgUGF0aFBhcnNpbmdNb2RlKTsKLWJvb2wg
YnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmLCBTdHJp
bmcmLCBQYXRoUGFyc2luZ01vZGUpOworYm9vbCBidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlz
dFZhbHVlcyhjb25zdCBTVkdQYXRoU2VnTGlzdFZhbHVlcyYsIFN0cmluZyYsIFBhdGhQYXJzaW5n
TW9kZSk7CiAKLS8vIFNWR1BhdGhCeXRlU3RyZWFtIC0+IFNWR1BhdGhTZWdMaXN0Ci1ib29sIGJ1
aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYs
IFNWR1BhdGhFbGVtZW50JiwgU1ZHUGF0aFNlZ0xpc3QmLCBQYXRoUGFyc2luZ01vZGUpOworLy8g
U1ZHUGF0aEJ5dGVTdHJlYW0gLT4gU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMKK2Jvb2wgYnVpbGRTVkdQ
YXRoU2VnTGlzdFZhbHVlc0Zyb21CeXRlU3RyZWFtKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiwg
U1ZHUGF0aEVsZW1lbnQmLCBTVkdQYXRoU2VnTGlzdFZhbHVlcyYsIFBhdGhQYXJzaW5nTW9kZSk7
CiAKIGJvb2wgY2FuQmxlbmRTVkdQYXRoQnl0ZVN0cmVhbXMoY29uc3QgU1ZHUGF0aEJ5dGVTdHJl
YW0mIGZyb20sIGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiB0byk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNWR0dyYXBoaWNzRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgorI2luY2x1ZGUgIlNW
R1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCiAjaW5jbHVkZSAi
WExpbmtOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTIzLDcg
KzEyNCw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVyblRyYW5z
Zm9ybUF0dHIpIHsKLSAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCBuZXdMaXN0OworICAgICAgICBT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFs
dWUpOwogICAgICAgICBkZXRhY2hBbmltYXRlZFBhdHRlcm5UcmFuc2Zvcm1MaXN0V3JhcHBlcnMo
bmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRQYXR0ZXJuVHJhbnNmb3JtQmFzZVZhbHVlKG5l
d0xpc3QpOwpAQCAtMjMwLDQgKzIzMSwxOSBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHUGF0dGVybkVs
ZW1lbnQ6OmxvY2FsCiAgICAgcmV0dXJuIG1hdHJpeDsKIH0KIAorUmVmPFNWR1N0cmluZ0xpc3Q+
IFNWR1BhdHRlcm5FbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVzKCkKK3sKKyAgICByZXR1cm4gU1ZH
VGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlzdD4g
U1ZHUGF0dGVybkVsZW1lbnQ6OnJlcXVpcmVkRXh0ZW5zaW9ucygpCit7IAorICAgIHJldHVybiBT
VkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKCp0aGlzKTsKK30KKworUmVmPFNWR1N0cmluZ0xp
c3Q+IFNWR1BhdHRlcm5FbGVtZW50OjpzeXN0ZW1MYW5ndWFnZSgpCit7CisgICAgcmV0dXJuIFNW
R1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZSgqdGhpcyk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUGF0dGVybkF0dHJpYnV0ZXM7CiAg
Ci1jbGFzcyBTVkdQYXR0ZXJuRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94
IHsKK2NsYXNzIFNWR1BhdHRlcm5FbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsIHB1
YmxpYyBTVkdVUklSZWZlcmVuY2UsIHB1YmxpYyBTVkdUZXN0cywgcHVibGljIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3ggewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8U1ZHUGF0dGVybkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIApAQCAtNTAsNiArNDYsMTEgQEAgcHVibGljOgogCiAgICAgQWZmaW5l
VHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RN
U2NvcGUpIGNvbnN0IGZpbmFsOwogCisgICAgLy8gU1ZHVGVzdHMKKyAgICBSZWY8U1ZHU3RyaW5n
TGlzdD4gcmVxdWlyZWRGZWF0dXJlcygpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJl
ZEV4dGVuc2lvbnMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVtTGFuZ3VhZ2UoKTsK
KwogcHJpdmF0ZToKICAgICBTVkdQYXR0ZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKICAgICAKQEAgLTgwLDkgKzgxLDkgQEAgcHJpdmF0ZToKICAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBTVkdUZXN0cwotICAgIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgZmluYWwgeyBT
VkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQorICAgIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cygqdGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSBmaW5hbCB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCp0aGlzKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmgJKHJldmlzaW9uIDIw
ODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw5ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUG9pbnQgOiBw
dWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFNWR1BvaW50PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9w
ZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UG9pbnQmIHZhbHVlKQorICAgIHN0YXRp
YyBSZWY8U1ZHUG9pbnQ+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3Bl
cnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCiAgICAgewotICAg
ICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR1BvaW50KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQogCkBA
IC0xMDEsOCArMTAwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBTVkdQ
b2ludChTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2Zm
PEZsb2F0UG9pbnQ+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIFNWR1BvaW50
KFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSBy
b2xlLCBGbG9hdFBvaW50JiB2YWx1ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8Rmxv
YXRQb2ludD4oJmFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIHsKKyAgICB9CisK
KyAgICBTVkdQb2ludChTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCisg
ICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+KG51bGxwdHIsIHJvbGUsIHZh
bHVlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmlkbAkocmV2aXNp
b24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMTksNiArMTksNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgogICovCisKIFsKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRl
cmZhY2UgU1ZHUG9pbnQgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5jcHAJKHJl
dmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwCShu
b25leGlzdGVudCkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCi0KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU3RyaW5nIFNWR1BvaW50TGlzdDo6dmFsdWVBc1N0
cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWdu
ZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7IC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UgdXNlIGNvbW1hcyB0byBzZXBlcmF0ZT8KLQot
ICAgICAgICBjb25zdCBhdXRvJiBwb2ludCA9IGF0KGkpOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihwb2ludC54KCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihwb2ludC55KCkpOwotICAgIH0KLQotICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAkocmV2aXNpb24gMjA4Nzc1KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwy
NCArMjAsMjggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0j
aW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZH
TGlzdFByb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR1BvaW50LmgiCisjaW5jbHVkZSAi
U1ZHUG9pbnRMaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZH
UG9pbnQ7Ci0KLWNsYXNzIFNWR1BvaW50TGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8RmxvYXRQ
b2ludD4geworY2xhc3MgU1ZHUG9pbnRMaXN0IDogcHVibGljIFNWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmY8U1ZHUG9pbnRMaXN0VmFsdWVzPiB7CiBwdWJsaWM6Ci0gICAgU3RyaW5nIHZhbHVlQXNTdHJp
bmcoKSBjb25zdDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R1BvaW50TGlzdD4gewotICAgIHN0YXRpYyBTVkdQb2ludExpc3QgaW5pdGlhbFZhbHVlKCkgeyBy
ZXR1cm4gU1ZHUG9pbnRMaXN0KCk7IH0KKyAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0VmFsdWVz
PjsKKyAgICB1c2luZyBMaXN0V3JhcHBlckNhY2hlID0gQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmOjpMaXN0V3JhcHBlckNhY2hlOwogCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gRmxvYXRQ
b2ludDsKLSAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdQb2ludDsKKyAgICBzdGF0aWMg
UmVmPFNWR1BvaW50TGlzdD4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5p
bWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1BvaW50TGlzdFZhbHVlcyYg
dmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR1BvaW50TGlzdChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1
ZXMsIHdyYXBwZXJzKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNWR1BvaW50TGlzdChBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9s
ZSByb2xlLCBTVkdQb2ludExpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3Jh
cHBlcnMpCisgICAgICAgIDogU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3RWYWx1
ZXM+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpCisgICAgeworICAg
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMDg3MDUpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwOjIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNW
R1BvaW50TGlzdC5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0
cmluZyBTVkdQb2ludExpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKworICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoaSA+IDAp
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOyAvLyBGSVhNRTogU2hvdWxkbid0IHdl
IHVzZSBjb21tYXMgdG8gc2VwZXJhdGU/CisKKyAgICAgICAgY29uc3QgYXV0byYgcG9pbnQgPSBh
dChpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocG9pbnQueCgpKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocG9pbnQu
eSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAkocmV2aXNpb24g
MjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5LDE0ICsxOSwxNCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKKyNpbmNsdWRlICJTVkdQb2ludExpc3RWYWx1
ZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgU1ZH
UG9pbnRMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK1N0cmluZyBTVkdQb2ludExpc3RWYWx1
ZXM6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaAkocmV2aXNpb24g
MjA4NzA1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0Lmg6MjA4NzA1KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U1ZHUG9pbnQ7CisKK2NsYXNzIFNWR1BvaW50TGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8Rmxv
YXRQb2ludD4geworcHVibGljOgorICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQb2ludExpc3Q+IHsK
KyAgICBzdGF0aWMgU1ZHUG9pbnRMaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1BvaW50
TGlzdCgpOyB9CisKKyAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBGbG9hdFBvaW50OworICAgIHVz
aW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1BvaW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaAkocmV2aXNp
b24gMjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU1ZHUG9pbnQ7CitjbGFzcyBTVkdQb2ludExpc3Q7CiAKLWNsYXNzIFNWR1BvaW50TGlz
dCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8RmxvYXRQb2ludD4geworY2xhc3MgU1ZHUG9pbnRMaXN0
VmFsdWVzIGZpbmFsIDogcHVibGljIFZlY3RvcjxGbG9hdFBvaW50PiB7CiBwdWJsaWM6CiAgICAg
U3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IFNW
R1Byb3BlcnR5VHJhaXRzPFNWR1BvaW50TGlzdD4gewotICAgIHN0YXRpYyBTVkdQb2ludExpc3Qg
aW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHUG9pbnRMaXN0KCk7IH0KK3RlbXBsYXRlPD4gc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1BvaW50TGlzdFZhbHVlcz4geworICAgIHN0YXRpYyBT
VkdQb2ludExpc3RWYWx1ZXMgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9CiAKICAgICB1
c2luZyBMaXN0SXRlbVR5cGUgPSBGbG9hdFBvaW50OwogICAgIHVzaW5nIExpc3RJdGVtVGVhck9m
ZiA9IFNWR1BvaW50OworICAgIHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdQb2ludExp
c3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQb2x5RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIlNWR1BvaW50LmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjQsNyArNjUsNyBAQCBTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVs
ZW1lbnQoY29uc3QgUXVhCiB2b2lkIFNWR1BvbHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKSB7Ci0gICAgICAgIFNWR1BvaW50TGlz
dCBuZXdMaXN0OworICAgICAgICBTVkdQb2ludExpc3RWYWx1ZXMgbmV3TGlzdDsKICAgICAgICAg
aWYgKCFwb2ludHNMaXN0RnJvbVNWR0RhdGEobmV3TGlzdCwgdmFsdWUpKQogICAgICAgICAgICAg
ZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIlByb2JsZW0gcGFy
c2luZyBwb2ludHM9XCIiICsgdmFsdWUgKyAiXCIiKTsKIApAQCAtMTE0LDIwICsxMTUsMTkgQEAg
UmVmPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1BvbHlFbGVtZW50OgogewogICAgIEFTU0VSVChj
b250ZXh0RWxlbWVudCk7CiAgICAgU1ZHUG9seUVsZW1lbnQmIG93bmVyVHlwZSA9IGRvd25jYXN0
PFNWR1BvbHlFbGVtZW50PigqY29udGV4dEVsZW1lbnQpOwotICAgIHJldHVybiBTVkdBbmltYXRl
ZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHUG9seUVsZW1lbnQsIFNWR0FuaW1h
dGVkUG9pbnRMaXN0LCBTVkdQb2ludExpc3Q+Ci0gICAgICAgICgmb3duZXJUeXBlLCBwb2ludHNQ
cm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLm1fcG9pbnRzLnZhbHVlKTsKKyAgICByZXR1cm4gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BvbHlFbGVtZW50LCBT
VkdBbmltYXRlZFBvaW50TGlzdCwgU1ZHUG9pbnRMaXN0VmFsdWVzPigmb3duZXJUeXBlLCBwb2lu
dHNQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLm1fcG9pbnRzLnZhbHVlKTsKIH0KIAotUmVmUHRy
PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pj4gU1ZHUG9seUVsZW1lbnQ6OnBv
aW50cygpCitSZWY8U1ZHUG9pbnRMaXN0PiBTVkdQb2x5RWxlbWVudDo6cG9pbnRzKCkKIHsKICAg
ICBtX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxTVkdBbmltYXRlZFBvaW50TGlzdD4obG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVy
KHRoaXMpKS0+YmFzZVZhbCgpLmdldCgpKTsKKyAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9j
YXN0PFNWR0FuaW1hdGVkUG9pbnRMaXN0Pihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhp
cykpLT5iYXNlVmFsKCk7CiB9CiAKLVJlZlB0cjxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50TGlzdD4+IFNWR1BvbHlFbGVtZW50OjphbmltYXRlZFBvaW50cygpCitSZWY8U1ZHUG9pbnRM
aXN0PiBTVkdQb2x5RWxlbWVudDo6YW5pbWF0ZWRQb2ludHMoKQogewogICAgIG1fcG9pbnRzLnNo
b3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFBy
b3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4oc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0Fu
aW1hdGVkUG9pbnRMaXN0Pihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5hbmlt
VmFsKCkuZ2V0KCkpOworICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0
ZWRQb2ludExpc3Q+KGxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcih0aGlzKSktPmFuaW1WYWwo
KTsKIH0KIAogc2l6ZV90IFNWR1BvbHlFbGVtZW50OjphcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHJldmlzaW9uIDIwODc3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCwxNiArMjQsMTYgQEAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKLSNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKKyNpbmNsdWRlICJTVkdQb2ludExpc3RW
YWx1ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQb2x5RWxlbWVudCA6
IHB1YmxpYyBTVkdHcmFwaGljc0VsZW1lbnQsIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkIHsKIHB1YmxpYzoKLSAgICBSZWZQdHI8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQ
b2ludExpc3Q+PiBwb2ludHMoKTsKLSAgICBSZWZQdHI8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdQb2ludExpc3Q+PiBhbmltYXRlZFBvaW50cygpOworICAgIFJlZjxTVkdQb2ludExpc3Q+IHBv
aW50cygpOworICAgIFJlZjxTVkdQb2ludExpc3Q+IGFuaW1hdGVkUG9pbnRzKCk7CiAKLSAgICBT
VkdQb2ludExpc3QmIHBvaW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLnZhbHVlOyB9
CisgICAgU1ZHUG9pbnRMaXN0VmFsdWVzJiBwb2ludExpc3QoKSBjb25zdCB7IHJldHVybiBtX3Bv
aW50cy52YWx1ZTsgfQogCiAgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcG9pbnRz
UHJvcGVydHlJbmZvKCk7CiAKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIHByb3RlY3RlZDoKLSAgICBtdXRhYmxlIFNWR1N5
bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdQb2ludExpc3Q+IG1fcG9pbnRzOworICAg
IG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1BvaW50TGlzdFZh
bHVlcz4gbV9wb2ludHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHJldmlzaW9uIDIwODc3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLworCiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTMyLDkgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9m
ZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmlt
YXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IGNy
ZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnR5KTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyhhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkp
OwogICAgIH0KIApAQCAtOTIsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQ
cm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZSYgdmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZT4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCisgICAgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbyhTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQ
cm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiB2YWx1ZSkKKyAg
ICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPigm
YW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAgICAgewogICAgIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5j
bHVkZSAiU1ZHU3RvcEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAj
aW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3QuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1JlY3QgOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFy
T2ZmPEZsb2F0UmVjdD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHUmVjdD4gY3JlYXRl
KFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSBy
b2xlLCBGbG9hdFJlY3QmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHUmVjdD4gY3JlYXRlKFNW
R0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xl
LCBGbG9hdFJlY3QmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVy
dHkpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdSZWN0KGFuaW1hdGVkUHJvcGVy
dHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQogCkBAIC0xMTQsOCArMTEzLDggQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdSZWN0KFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1h
dGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFJlY3QmIHZhbHVlKQotICAg
ICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFJlY3Q+KGFuaW1hdGVkUHJvcGVydHksIHJv
bGUsIHZhbHVlKQorICAgIFNWR1JlY3QoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9w
ZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UmVjdCYgdmFsdWUpCisgICAgICAgIDog
U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UmVjdD4oJmFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZh
bHVlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5j
cHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKLQotI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBTVkdTdHJpbmdMaXN0Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBjb250ZXh0RWxlbWVu
dC0+aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICBjb250ZXh0RWxlbWVudC0+c3ZnQXR0
cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0ZU5hbWUpOwotfQotCi12b2lkIFNWR1N0cmluZ0xpc3Q6
OnJlc2V0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHBhcnNlKHN0cmluZywgJyAnKTsK
LQotICAgIC8vIEFkZCBlbXB0eSBzdHJpbmcsIGlmIGxpc3QgaXMgZW1wdHkuCi0gICAgaWYgKGlz
RW1wdHkoKSkKLSAgICAgICAgYXBwZW5kKGVtcHR5U3RyaW5nKCkpOwotfQotCi12b2lkIFNWR1N0
cmluZ0xpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyKQotewot
ICAgIC8vIFRPRE8gOiBtb3JlIGVycm9yIGNoZWNraW5nL3JlcG9ydGluZwotICAgIGNsZWFyKCk7
Ci0KLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcoZGF0YSkudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29udmVydGVk
Q2hhcmFjdGVyczsKLSAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgZGF0YS5sZW5ndGgoKTsK
LSAgICB3aGlsZSAocHRyIDwgZW5kKSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHB0
cjsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRyICE9IGRlbGltaXRlciAmJiAhaXNT
VkdTcGFjZSgqcHRyKSkKLSAgICAgICAgICAgIHB0cisrOwotICAgICAgICBpZiAocHRyID09IHN0
YXJ0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGFwcGVuZChTdHJpbmcoc3RhcnQsIHB0
ciAtIHN0YXJ0KSk7Ci0gICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0
ciwgZW5kLCBkZWxpbWl0ZXIpOwotICAgIH0KLX0KLQotU3RyaW5nIFNWR1N0cmluZ0xpc3Q6OnZh
bHVlQXNTdHJpbmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAg
IHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnICcpOwotCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0KGkpKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5jcHAKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgJKHJldmlz
aW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNTggKzEsNTEgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVy
dHlUcmFpdHMuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5VGVhck9m
Zi5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTVkdFbGVtZW50OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLWNsYXNz
IFNWR1Byb3BlcnR5VGVhck9mZjsKLQotY2xhc3MgU1ZHU3RyaW5nTGlzdCBmaW5hbCA6IHB1Ymxp
YyBWZWN0b3I8U3RyaW5nPiB7CitjbGFzcyBTVkdTdHJpbmdMaXN0IGZpbmFsIDogcHVibGljIFNW
R1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdFZhbHVlcz4gewogcHVibGlj
OgotICAgIFNWR1N0cmluZ0xpc3QoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
LSAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKKyAgICB1c2luZyBBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8
U1ZHU3RyaW5nTGlzdFZhbHVlcz47CisgICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKKworICAgIHN0YXRpYyBS
ZWY8U1ZHU3RyaW5nTGlzdD4gY3JlYXRlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBTVkdT
dHJpbmdMaXN0VmFsdWVzJiB2YWx1ZXMpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTVkdTdHJpbmdMaXN0KGNvbnRleHRFbGVtZW50LCB2YWx1ZXMpKTsKICAgICB9CiAKLSAg
ICB2b2lkIHJlc2V0KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5n
JiwgVUNoYXIgZGVsaW1pdGVyID0gJywnKTsKLQotICAgIC8vIE9ubHkgdXNlZCBieSBTVkdTdHJp
bmdMaXN0UHJvcGVydHlUZWFyT2ZmLgotICAgIHZvaWQgY29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KTsKLQotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Ci0K
IHByaXZhdGU6Ci0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9hdHRyaWJ1dGVOYW1lOwotfTsK
LQotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3RyaW5nTGlzdD4gewot
ICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFN0cmluZzsKLSAgICB1c2luZyBMaXN0SXRlbVRlYXJP
ZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8U3RyaW5nPjsKKyAgICBTVkdTdHJpbmdMaXN0KFNWR0Vs
ZW1lbnQmIGNvbnRleHRFbGVtZW50LCBTVkdTdHJpbmdMaXN0VmFsdWVzJiB2YWx1ZXMpCisgICAg
ICAgIDogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdMaXN0VmFsdWVzPihj
b250ZXh0RWxlbWVudCwgdmFsdWVzKQorICAgIHsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMu
Y3BwCShyZXZpc2lvbiAyMDg3MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdM
aXN0LmNwcDoyMDg3MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgorCisj
aW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFNWR1N0cmluZ0xpc3Q6OmNvbW1pdENoYW5nZShTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIGNvbnRleHRFbGVt
ZW50LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOworICAgIGNvbnRleHRFbGVtZW50LT5zdmdB
dHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlTmFtZSk7Cit9CisKK3ZvaWQgU1ZHU3RyaW5nTGlz
dDo6cmVzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcGFyc2Uoc3RyaW5nLCAnICcp
OworCisgICAgLy8gQWRkIGVtcHR5IHN0cmluZywgaWYgbGlzdCBpcyBlbXB0eS4KKyAgICBpZiAo
aXNFbXB0eSgpKQorICAgICAgICBhcHBlbmQoZW1wdHlTdHJpbmcoKSk7Cit9CisKK3ZvaWQgU1ZH
U3RyaW5nTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCit7
CisgICAgLy8gVE9ETyA6IG1vcmUgZXJyb3IgY2hlY2tpbmcvcmVwb3J0aW5nCisgICAgY2xlYXIo
KTsKKworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhkYXRhKS51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzOworICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyBkYXRhLmxlbmd0aCgp
OworICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0g
cHRyOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICpwdHIgIT0gZGVsaW1pdGVyICYmICFp
c1NWR1NwYWNlKCpwdHIpKQorICAgICAgICAgICAgcHRyKys7CisgICAgICAgIGlmIChwdHIgPT0g
c3RhcnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgYXBwZW5kKFN0cmluZyhzdGFydCwg
cHRyIC0gc3RhcnQpKTsKKyAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIo
cHRyLCBlbmQsIGRlbGltaXRlcik7CisgICAgfQorfQorCitTdHJpbmcgU1ZHU3RyaW5nTGlzdDo6
dmFsdWVBc1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisg
ICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSkpOworICAgIH0K
KworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTksNyArMTksNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJTVkdTdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIgogCiAj
aW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgpA
QCAtMjcsMTQgKzI3LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTVkdTdHJp
bmdMaXN0Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCit2b2lkIFNW
R1N0cmluZ0xpc3RWYWx1ZXM6OmNvbW1pdENoYW5nZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVu
dCkKIHsKLSAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgIGNvbnRleHRFbGVtZW50LT5p
bnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwotICAgIGNvbnRleHRFbGVtZW50LT5zdmdBdHRyaWJ1
dGVDaGFuZ2VkKG1fYXR0cmlidXRlTmFtZSk7CisgICAgY29udGV4dEVsZW1lbnQuaW52YWxpZGF0
ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBjb250ZXh0RWxlbWVudC5zdmdBdHRyaWJ1dGVDaGFuZ2Vk
KG1fYXR0cmlidXRlTmFtZSk7CiB9CiAKLXZvaWQgU1ZHU3RyaW5nTGlzdDo6cmVzZXQoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCit2b2lkIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnJlc2V0KGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewogICAgIHBhcnNlKHN0cmluZywgJyAnKTsKIApAQCAtNDMsNyArNDIs
NyBAQCB2b2lkIFNWR1N0cmluZ0xpc3Q6OnJlc2V0KGNvbnN0IFN0cmluZyYgCiAgICAgICAgIGFw
cGVuZChlbXB0eVN0cmluZygpKTsKIH0KIAotdm9pZCBTVkdTdHJpbmdMaXN0OjpwYXJzZShjb25z
dCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKK3ZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVl
czo6cGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCiB7CiAgICAgLy8g
VE9ETyA6IG1vcmUgZXJyb3IgY2hlY2tpbmcvcmVwb3J0aW5nCiAgICAgY2xlYXIoKTsKQEAgLTYy
LDcgKzYxLDcgQEAgdm9pZCBTVkdTdHJpbmdMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIAogICAg
IH0KIH0KIAotU3RyaW5nIFNWR1N0cmluZ0xpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAorU3Ry
aW5nIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmlu
Z0xpc3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5n
TGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHJpbmdMaXN0Lmg6MjA4NzA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5o
IgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0VsZW1lbnQ7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IAorY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2ZmOworCitjbGFzcyBTVkdTdHJp
bmdMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxTdHJpbmc+IHsKK3B1YmxpYzoKKyAgICBTVkdT
dHJpbmdMaXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAgIDog
bV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgIH0KKworICAgIHZvaWQg
cmVzZXQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmLCBVQ2hh
ciBkZWxpbWl0ZXIgPSAnLCcpOworCisgICAgLy8gT25seSB1c2VkIGJ5IFNWR1N0cmluZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuCisgICAgdm9pZCBjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpOworCisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBtX2F0dHJpYnV0ZU5hbWU7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTdHJpbmdMaXN0PiB7CisgICAgdXNp
bmcgTGlzdEl0ZW1UeXBlID0gU3RyaW5nOworICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNW
R1Byb3BlcnR5VGVhck9mZjxTdHJpbmc+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAy
MDg3MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU1ZHRWxlbWVudDsKK2NsYXNzIFNWR1N0cmluZ0xpc3Q7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IAogY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2ZmOwogCi1jbGFzcyBTVkdTdHJpbmdMaXN0IGZp
bmFsIDogcHVibGljIFZlY3RvcjxTdHJpbmc+IHsKK2NsYXNzIFNWR1N0cmluZ0xpc3RWYWx1ZXMg
ZmluYWwgOiBwdWJsaWMgVmVjdG9yPFN0cmluZz4gewogcHVibGljOgotICAgIFNWR1N0cmluZ0xp
c3QoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICBTVkdTdHJpbmdMaXN0
VmFsdWVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgIDogbV9h
dHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCiAgICAgewogICAgIH0KQEAgLTQxLDggKzQyLDgg
QEAgcHVibGljOgogICAgIHZvaWQgcmVzZXQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwYXJz
ZShjb25zdCBTdHJpbmcmLCBVQ2hhciBkZWxpbWl0ZXIgPSAnLCcpOwogCi0gICAgLy8gT25seSB1
c2VkIGJ5IFNWR1N0cmluZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuCi0gICAgdm9pZCBjb21taXRDaGFu
Z2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOworICAgIC8vIE9ubHkgdXNlZCBieSBTVkdT
dHJpbmdMaXN0LgorICAgIHZvaWQgY29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVt
ZW50KTsKIAogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAKQEAgLTUwLDkgKzUx
LDEwIEBAIHByaXZhdGU6CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9hdHRyaWJ1dGVOYW1l
OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3RyaW5nTGlz
dD4gewordGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3RyaW5nTGlzdFZh
bHVlcz4gewogICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFN0cmluZzsKICAgICB1c2luZyBMaXN0
SXRlbVRlYXJPZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8U3RyaW5nPjsKKyAgICB1c2luZyBMaXN0
UHJvcGVydHlUZWFyT2ZmID0gU1ZHU3RyaW5nTGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDQ1
ICsyMDQsNDQgQEAgdm9pZCBTVkdUZXN0czo6YWRkU3VwcG9ydGVkQXR0cmlidXRlcyhIYQogICAg
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuYWRkKHN5c3RlbUxhbmd1YWdlQXR0cik7CiB9CiAKLXZvaWQg
U1ZHVGVzdHM6OnN5bmNocm9uaXplQXR0cmlidXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4mIHByb3Bl
cnR5LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQordm9pZCBTVkdUZXN0czo6
c3luY2hyb25pemVBdHRyaWJ1dGUoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIFNWR1N5bmNo
cm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJpbmdMaXN0VmFsdWVzPiYgcHJvcGVydHks
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgQVNTRVJUKGNvbnRl
eHRFbGVtZW50KTsKICAgICBpZiAoIXByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9yZXF1aXJlZEZlYXR1cmVzLnN5bmNocm9uaXplKGNvbnRleHRFbGVt
ZW50LCBhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eS52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOworICAg
IG1fcmVxdWlyZWRGZWF0dXJlcy5zeW5jaHJvbml6ZSgmY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0
ZU5hbWUsIHByb3BlcnR5LnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7CiB9CiAKLXZvaWQgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCkKK3ZvaWQgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50
JiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShjb250ZXh0RWxl
bWVudCwgbV9yZXF1aXJlZEZlYXR1cmVzLCByZXF1aXJlZEZlYXR1cmVzQXR0cik7CiB9CiAKLXZv
aWQgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KQordm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lv
bnMoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpCiB7CiAgICAgc3luY2hyb25pemVBdHRyaWJ1
dGUoY29udGV4dEVsZW1lbnQsIG1fcmVxdWlyZWRFeHRlbnNpb25zLCByZXF1aXJlZEV4dGVuc2lv
bnNBdHRyKTsKIH0KIAotdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKK3ZvaWQgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpCiB7CiAgICAgc3luY2hyb25p
emVBdHRyaWJ1dGUoY29udGV4dEVsZW1lbnQsIG1fc3lzdGVtTGFuZ3VhZ2UsIHN5c3RlbUxhbmd1
YWdlQXR0cik7CiB9CiAKLVNWR1N0cmluZ0xpc3QmIFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVz
KCkKK1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVt
ZW50JiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBtX3JlcXVpcmVkRmVhdHVyZXMuc2hvdWxkU3lu
Y2hyb25pemUgPSB0cnVlOwotICAgIHJldHVybiBtX3JlcXVpcmVkRmVhdHVyZXMudmFsdWU7Cisg
ICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShjb250ZXh0RWxlbWVudCwgbV9yZXF1aXJl
ZEZlYXR1cmVzLnZhbHVlKTsKIH0KIAotU1ZHU3RyaW5nTGlzdCYgU1ZHVGVzdHM6OnJlcXVpcmVk
RXh0ZW5zaW9ucygpCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5z
aW9ucyhTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBtX3JlcXVpcmVkRXh0ZW5z
aW9ucy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7ICAgIAotICAgIHJldHVybiBtX3JlcXVpcmVk
RXh0ZW5zaW9ucy52YWx1ZTsKKyAgICByZXR1cm4gU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKGNvbnRl
eHRFbGVtZW50LCBtX3JlcXVpcmVkRXh0ZW5zaW9ucy52YWx1ZSk7CiB9CiAKLVNWR1N0cmluZ0xp
c3QmIFNWR1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZSgpCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVGVz
dHM6OnN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KQogewogICAgIG1f
c3lzdGVtTGFuZ3VhZ2Uuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgIHJldHVybiBtX3N5
c3RlbUxhbmd1YWdlLnZhbHVlOworICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUoY29u
dGV4dEVsZW1lbnQsIG1fc3lzdGVtTGFuZ3VhZ2UudmFsdWUpOwogfQogCiBib29sIFNWR1Rlc3Rz
OjpoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAkocmV2aXNpb24gMjA4
Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIxLDE4ICsyMSwxNSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdBbmltYXRlZFBy
b3BlcnR5TWFjcm9zLmgiCi0jaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIlNW
R1N0cmluZ0xpc3RWYWx1ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdF
bGVtZW50OworY2xhc3MgU1ZHU3RyaW5nTGlzdDsKIAogY2xhc3MgU1ZHVGVzdHMgewogcHVibGlj
OgotICAgIFNWR1N0cmluZ0xpc3QmIHJlcXVpcmVkRmVhdHVyZXMoKTsKLSAgICBTVkdTdHJpbmdM
aXN0JiByZXF1aXJlZEV4dGVuc2lvbnMoKTsKLSAgICBTVkdTdHJpbmdMaXN0JiBzeXN0ZW1MYW5n
dWFnZSgpOwotCiAgICAgc3RhdGljIGJvb2wgaGFzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOwog
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCkBAIC01MCwxNiArNDcsMjAgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIFNWR1Rlc3RzKCk7CiAKLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRGZWF0dXJlcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7Ci0gICAgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7Ci0gICAg
dm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gcmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50Jik7
CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50Jik7
CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQmKTsKKwor
ICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQmKTsKKyAgICB2
b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKFNWR0VsZW1lbnQmKTsKKyAgICB2b2lk
IHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCYpOwogCiBwcml2YXRlOgotICAg
IHZvaWQgc3luY2hyb25pemVBdHRyaWJ1dGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFNW
R1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJpbmdMaXN0PiYsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOworICAgIHZvaWQgc3luY2hyb25pemVBdHRyaWJ1
dGUoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQ
cm9wZXJ0eTxTVkdTdHJpbmdMaXN0VmFsdWVzPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpOwogCi0gICAgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0
cmluZ0xpc3Q+IG1fcmVxdWlyZWRGZWF0dXJlczsKLSAgICBTVkdTeW5jaHJvbml6YWJsZUFuaW1h
dGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7Ci0gICAgU1ZH
U3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1fc3lzdGVtTGFu
Z3VhZ2U7CisgICAgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xp
c3RWYWx1ZXM+IG1fcmVxdWlyZWRGZWF0dXJlczsKKyAgICBTVkdTeW5jaHJvbml6YWJsZUFuaW1h
dGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdFZhbHVlcz4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7Cisg
ICAgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3RWYWx1ZXM+
IG1fc3lzdGVtTGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXN0cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAKICAgICBO
b0ludGVyZmFjZU9iamVjdCwKICAgICBTdXBwcmVzc1RvSlNPYmplY3QsCiBdIGludGVyZmFjZSBT
VkdUZXN0cyB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3QgcmVxdWlyZWRG
ZWF0dXJlczsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEV4
dGVuc2lvbnM7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3Qgc3lzdGVtTGFu
Z3VhZ2U7CisgICAgW05ld09iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3Qg
cmVxdWlyZWRGZWF0dXJlczsKKyAgICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCByZXF1aXJlZEV4dGVuc2lvbnM7CisgICAgW05ld09iamVjdF0gcmVhZG9ubHkg
YXR0cmlidXRlIFNWR1N0cmluZ0xpc3Qgc3lzdGVtTGFuZ3VhZ2U7CiAKICAgICAvLyBGSVhNRTog
VXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCiAg
ICAgYm9vbGVhbiBoYXNFeHRlbnNpb24ob3B0aW9uYWwgRE9NU3RyaW5nIGV4dGVuc2lvbiA9ICJ1
bmRlZmluZWQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSAr
MjYsOSBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHVGV4dC5oIgogI2luY2x1ZGUgIlNWR0FsdEdseXBoRWxlbWVudC5oIgotI2luY2x1ZGUgIlNW
R0xlbmd0aExpc3QuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhMaXN0VmFsdWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCisjaW5jbHVkZSAiU1ZH
TnVtYmVyTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1RSZWZFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHVFNwYW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dEVsZW1lbnQuaCIKQEAgLTYw
LDcgKzYwLDcgQEAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBvc2l0aQogdm9p
ZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBTVkdMZW5ndGhMaXN0IG5ld0xpc3Q7Cisg
ICAgICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbmV3TGlzdDsKICAgICAgICAgbmV3TGlzdC5wYXJz
ZSh2YWx1ZSwgTGVuZ3RoTW9kZVdpZHRoKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRYTGlzdFdy
YXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0WEJhc2VWYWx1ZShuZXdMaXN0KTsK
QEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0
dAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBT
VkdMZW5ndGhMaXN0IG5ld0xpc3Q7CisgICAgICAgIFNWR0xlbmd0aExpc3RWYWx1ZXMgbmV3TGlz
dDsKICAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSwgTGVuZ3RoTW9kZUhlaWdodCk7CiAgICAg
ICAgIGRldGFjaEFuaW1hdGVkWUxpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAg
IHNldFlCYXNlVmFsdWUobmV3TGlzdCk7CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHQKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6ZHhBdHRyKSB7Ci0gICAgICAgIFNWR0xlbmd0aExpc3QgbmV3TGlzdDsKKyAgICAgICAg
U1ZHTGVuZ3RoTGlzdFZhbHVlcyBuZXdMaXN0OwogICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVl
LCBMZW5ndGhNb2RlV2lkdGgpOwogICAgICAgICBkZXRhY2hBbmltYXRlZER4TGlzdFdyYXBwZXJz
KG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0RHhCYXNlVmFsdWUobmV3TGlzdCk7CkBAIC04
NCw3ICs4NCw3IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHQKICAg
ICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZHlBdHRyKSB7Ci0gICAgICAgIFNWR0xl
bmd0aExpc3QgbmV3TGlzdDsKKyAgICAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBuZXdMaXN0Owog
ICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlLCBMZW5ndGhNb2RlSGVpZ2h0KTsKICAgICAgICAg
ZGV0YWNoQW5pbWF0ZWREeUxpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAgIHNl
dER5QmFzZVZhbHVlKG5ld0xpc3QpOwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQ6OnBhcnNlQXR0CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnJvdGF0ZUF0dHIpIHsKLSAgICAgICAgU1ZHTnVtYmVyTGlzdCBuZXdMaXN0OworICAgICAg
ICBTVkdOdW1iZXJMaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFs
dWUpOwogICAgICAgICBkZXRhY2hBbmltYXRlZFJvdGF0ZUxpc3RXcmFwcGVycyhuZXdMaXN0LnNp
emUoKSk7CiAgICAgICAgIHNldFJvdGF0ZUJhc2VWYWx1ZShuZXdMaXN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1RyYW5zZm9ybSA6IHB1YmxpYyBTVkdQcm9wZXJ0
eVRlYXJPZmY8U1ZHVHJhbnNmb3JtVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNW
R1RyYW5zZm9ybT4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHks
IFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1WYWx1ZSYgdmFsdWUpCisgICAgc3Rh
dGljIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRl
ZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3JtVmFsdWUmIHZhbHVl
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm0oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFs
dWUpKTsKICAgICB9CiAKQEAgLTEzNiw4ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIFNWR1RyYW5zZm9ybShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3Bl
cnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3JtVmFsdWUmIHZhbHVlKQotICAg
ICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1WYWx1ZT4oYW5pbWF0ZWRQcm9w
ZXJ0eSwgcm9sZSwgdmFsdWUpCisgICAgU1ZHVHJhbnNmb3JtKFNWR0FuaW1hdGVkUHJvcGVydHkm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1WYWx1
ZSYgdmFsdWUpCisgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybVZhbHVl
PigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAgICAgewogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24gMjA4Nzc1KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwCShub25leGlzdGVudCkK
QEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCi0jaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFi
bGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZH
VHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmIG1hdHJpeCkgY29uc3QKLXsKLSAgICByZXR1
cm4gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChtYXRyaXgpOwot
fQotCi1SZWY8U1ZHVHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25zb2xpZGF0ZSgpCi17
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeDsKLSAgICBpZiAoIWNvbmNhdGVuYXRlKG1hdHJp
eCkpCi0gICAgICAgIHJldHVybiBTVkdUcmFuc2Zvcm06OmNyZWF0ZSgpOwotCi0gICAgU1ZHVHJh
bnNmb3JtVmFsdWUgdHJhbnNmb3JtKG1hdHJpeCk7Ci0gICAgY2xlYXIoKTsKLSAgICBhcHBlbmQo
dHJhbnNmb3JtKTsKLSAgICByZXR1cm4gU1ZHVHJhbnNmb3JtOjpjcmVhdGUodHJhbnNmb3JtKTsK
LX0KLQotYm9vbCBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmF0ZShBZmZpbmVUcmFuc2Zvcm0m
IHJlc3VsdCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAg
IGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcmVzdWx0ICo9IGF0KGkpLm1hdHJpeCgpOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBTVkdUcmFuc2Zvcm1MaXN0Ojp2YWx1ZUFz
U3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgdW5zaWdu
ZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSkudmFsdWVBc1N0cmluZygpKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi12b2lkIFNWR1Ry
YW5zZm9ybUxpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdHJhbnNmb3JtKQotewotICAgIGF1dG8g
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0cmFuc2Zvcm0pLnVwY29udmVydGVk
Q2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHVwY29udmVydGVkQ2hhcmFj
dGVyczsKLSAgICBpZiAoIVNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRl
KCp0aGlzLCBzdGFydCwgc3RhcnQgKyB0cmFuc2Zvcm0ubGVuZ3RoKCkpKQotICAgICAgICBjbGVh
cigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHJl
dmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDI5ICsyMCw1OCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU1ZHVHJhbnNmb3JtTGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U1ZHVHJhbnNmb3JtVmFs
dWUsIDE+IHsKK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3QgZmluYWwgOiBwdWJsaWMgU1ZHTGlzdFBy
b3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPiB7CiBwdWJsaWM6Ci0gICAgUmVm
PFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmKSBj
b25zdDsKLSAgICBSZWY8U1ZHVHJhbnNmb3JtPiBjb25zb2xpZGF0ZSgpOworICAgIHVzaW5nIEFu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPjsKKyAgICB1c2luZyBMaXN0V3JhcHBlckNhY2hlID0g
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpMaXN0V3JhcHBlckNhY2hlOwogCi0gICAgYm9v
bCBjb25jYXRlbmF0ZShBZmZpbmVUcmFuc2Zvcm0mIHJlc3VsdCkgY29uc3Q7Ci0gCi0gICAgU3Ry
aW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKLSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYp
OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3Jt
TGlzdD4gewotICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm1MaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0
dXJuIHsgfTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHVHJhbnNmb3Jt
TGlzdCYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KLQotICAgIHVzaW5n
IExpc3RJdGVtVHlwZSA9IFNWR1RyYW5zZm9ybVZhbHVlOwotICAgIHVzaW5nIExpc3RJdGVtVGVh
ck9mZiA9IFNWR1RyYW5zZm9ybTsKKyAgICBzdGF0aWMgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+IGNy
ZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1By
b3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFw
cGVyQ2FjaGUmIHdyYXBwZXJzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1ZHVHJhbnNmb3JtTGlzdChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJz
KSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8UmVmPFNWR1RyYW5zZm9ybT4+IGNyZWF0ZVNW
R1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4JiBtYXRyaXgpCisgICAgeworICAgICAgICBB
U1NFUlQobV92YWx1ZXMpOworICAgICAgICByZXR1cm4gbV92YWx1ZXMtPmNyZWF0ZVNWR1RyYW5z
Zm9ybUZyb21NYXRyaXgobWF0cml4KTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8
U1ZHVHJhbnNmb3JtPj4gY29uc29saWRhdGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmFs
dWVzKTsKKyAgICAgICAgQVNTRVJUKG1fd3JhcHBlcnMpOworCisgICAgICAgIGF1dG8gcmVzdWx0
ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNT
RVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgQVNTRVJUKG1fdmFs
dWVzLT5zaXplKCkgPT0gbV93cmFwcGVycy0+c2l6ZSgpKTsKKworICAgICAgICAvLyBTcGVjOiBJ
ZiB0aGUgbGlzdCB3YXMgZW1wdHksIHRoZW4gYSB2YWx1ZSBvZiBudWxsIGlzIHJldHVybmVkLgor
ICAgICAgICBpZiAobV92YWx1ZXMtPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIGRldGFjaExpc3RXcmFwcGVycygwKTsKKyAgICAgICAgCisgICAgICAg
IFJlZlB0cjxTVkdUcmFuc2Zvcm0+IHdyYXBwZXIgPSBtX3ZhbHVlcy0+Y29uc29saWRhdGUoKTsK
KyAgICAgICAgbV93cmFwcGVycy0+YXBwZW5kKHdyYXBwZXIuZ2V0KCkpOworCisgICAgICAgIEFT
U0VSVChtX3ZhbHVlcy0+c2l6ZSgpID09IG1fd3JhcHBlcnMtPnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBXVEZNb3ZlKHdyYXBwZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTVkdUcmFuc2Zv
cm1MaXN0KEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZH
UHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdy
YXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgICAgIDogU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzPihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdy
YXBwZXJzKQorICAgIHsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwCShyZXZp
c2lvbiAyMDg3MDUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNw
cDoyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgorCisjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1
ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNm
b3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmIG1hdHJpeCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJv
bU1hdHJpeChtYXRyaXgpOworfQorCitSZWY8U1ZHVHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0
Ojpjb25zb2xpZGF0ZSgpCit7CisgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeDsKKyAgICBpZiAo
IWNvbmNhdGVuYXRlKG1hdHJpeCkpCisgICAgICAgIHJldHVybiBTVkdUcmFuc2Zvcm06OmNyZWF0
ZSgpOworCisgICAgU1ZHVHJhbnNmb3JtVmFsdWUgdHJhbnNmb3JtKG1hdHJpeCk7CisgICAgY2xl
YXIoKTsKKyAgICBhcHBlbmQodHJhbnNmb3JtKTsKKyAgICByZXR1cm4gU1ZHVHJhbnNmb3JtOjpj
cmVhdGUodHJhbnNmb3JtKTsKK30KKworYm9vbCBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmF0
ZShBZmZpbmVUcmFuc2Zvcm0mIHJlc3VsdCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzaXplID0g
dGhpcy0+c2l6ZSgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgcmVzdWx0ICo9
IGF0KGkpLm1hdHJpeCgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBTVkdUcmFu
c2Zvcm1MaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSku
dmFsdWVBc1N0cmluZygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OworfQorCit2b2lkIFNWR1RyYW5zZm9ybUxpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdHJhbnNm
b3JtKQoreworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0cmFu
c2Zvcm0pLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9
IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICBpZiAoIVNWR1RyYW5zZm9ybWFibGU6OnBhcnNl
VHJhbnNmb3JtQXR0cmlidXRlKCp0aGlzLCBzdGFydCwgc3RhcnQgKyB0cmFuc2Zvcm0ubGVuZ3Ro
KCkpKQorICAgICAgICBjbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwCShyZXZp
c2lvbiAyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgorI2luY2x1ZGUgIlNWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXMuaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKQEAgLTI4LDEyICsyOCwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZVNW
R1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4JiBtYXRyaXgpIGNvbnN0CitSZWY8U1ZHVHJh
bnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0
cml4KFNWR01hdHJpeCYgbWF0cml4KSBjb25zdAogewogICAgIHJldHVybiBTVkdTVkdFbGVtZW50
OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7CiB9CiAKLVJlZjxTVkdUcmFu
c2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNvbnNvbGlkYXRlKCkKK1JlZjxTVkdUcmFuc2Zvcm0+
IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNvbnNvbGlkYXRlKCkKIHsKICAgICBBZmZpbmVUcmFu
c2Zvcm0gbWF0cml4OwogICAgIGlmICghY29uY2F0ZW5hdGUobWF0cml4KSkKQEAgLTQ1LDcgKzQ1
LDcgQEAgUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y29ucwogICAgIHJldHVy
biBTVkdUcmFuc2Zvcm06OmNyZWF0ZSh0cmFuc2Zvcm0pOwogfQogCi1ib29sIFNWR1RyYW5zZm9y
bUxpc3Q6OmNvbmNhdGVuYXRlKEFmZmluZVRyYW5zZm9ybSYgcmVzdWx0KSBjb25zdAorYm9vbCBT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpjb25jYXRlbmF0ZShBZmZpbmVUcmFuc2Zvcm0mIHJlc3Vs
dCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIGlmICgh
c2l6ZSkKQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmF0
ZShBZmZpbgogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgU1ZHVHJhbnNmb3JtTGlzdDo6
dmFsdWVBc1N0cmluZygpIGNvbnN0CitTdHJpbmcgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6dmFs
dWVBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIHVu
c2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7CkBAIC03MSw3ICs3MSw3IEBAIFN0cmluZyBTVkdU
cmFuc2Zvcm1MaXN0Ojp2YWx1ZUFzU3RyaW5nKCkKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwogfQogCi12b2lkIFNWR1RyYW5zZm9ybUxpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdHJh
bnNmb3JtKQordm9pZCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpwYXJzZShjb25zdCBTdHJpbmcm
IHRyYW5zZm9ybSkKIHsKICAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1Zp
ZXcodHJhbnNmb3JtKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciog
c3RhcnQgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgJKHJldmlzaW9uIDIwODcwNSkJKGZyb20gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdQcm9w
ZXJ0eVRyYWl0cy5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0
IGZpbmFsIDogcHVibGljIFZlY3RvcjxTVkdUcmFuc2Zvcm1WYWx1ZSwgMT4geworcHVibGljOgor
ICAgIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0
cml4JikgY29uc3Q7CisgICAgUmVmPFNWR1RyYW5zZm9ybT4gY29uc29saWRhdGUoKTsKKworICAg
IGJvb2wgY29uY2F0ZW5hdGUoQWZmaW5lVHJhbnNmb3JtJiByZXN1bHQpIGNvbnN0OworIAorICAg
IFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CisgICAgdm9pZCBwYXJzZShjb25zdCBTdHJp
bmcmKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5z
Zm9ybUxpc3Q+IHsKKyAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtTGlzdCBpbml0aWFsVmFsdWUoKSB7
IHJldHVybiB7IH07IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1RyYW5z
Zm9ybUxpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9CisKKyAgICB1
c2luZyBMaXN0SXRlbVR5cGUgPSBTVkdUcmFuc2Zvcm1WYWx1ZTsKKyAgICB1c2luZyBMaXN0SXRl
bVRlYXJPZmYgPSBTVkdUcmFuc2Zvcm07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgJKHJldmlz
aW9uIDIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U1ZHVHJh
bnNmb3JtVmFsdWUsIDE+IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBTVkdMaXN0UHJv
cGVydHlUZWFyT2ZmOworCitjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0OworCitjbGFzcyBTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZlY3RvcjxTVkdUcmFuc2Zvcm1WYWx1ZSwg
MT4gewogcHVibGljOgogICAgIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZy
b21NYXRyaXgoU1ZHTWF0cml4JikgY29uc3Q7CiAgICAgUmVmPFNWR1RyYW5zZm9ybT4gY29uc29s
aWRhdGUoKTsKQEAgLTM3LDEyICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZShjb25z
dCBTdHJpbmcmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RyYW5zZm9ybUxpc3Q+IHsKLSAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtTGlzdCBpbml0aWFsVmFs
dWUoKSB7IHJldHVybiB7IH07IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNW
R1RyYW5zZm9ybUxpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
PiB7CisgICAgc3RhdGljIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgaW5pdGlhbFZhbHVlKCkgeyBy
ZXR1cm4geyB9OyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzJiBsaXN0KSB7IHJldHVybiBsaXN0LnZhbHVlQXNTdHJpbmcoKTsgfQogCiAg
ICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU1ZHVHJhbnNmb3JtVmFsdWU7CiAgICAgdXNpbmcgTGlz
dEl0ZW1UZWFyT2ZmID0gU1ZHVHJhbnNmb3JtOworICAgIHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJP
ZmYgPSBTVkdUcmFuc2Zvcm1MaXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkocmV2aXNpb24gMjA4Nzc1
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
U1ZHVHJhbnNmb3JtTGlzdC5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTE4MSw3ICsxODEsNyBAQCBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSBT
VkdUCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLWJvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VU
cmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCYgbGlzdCwgY29uc3QgVUNoYXIqJiBj
dXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW5kLCBUcmFuc2Zvcm1QYXJzaW5nTW9kZSBtb2Rl
KQorYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzJiBsaXN0LCBjb25zdCBVQ2hhciomIGN1cnJUcmFuc2Zvcm0sIGNvbnN0
IFVDaGFyKiBlbmQsIFRyYW5zZm9ybVBhcnNpbmdNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUg
PT0gQ2xlYXJMaXN0KQogICAgICAgICBsaXN0LmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1hYmxlLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLWNsYXNz
IFNWR1RyYW5zZm9ybUxpc3Q7CitjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOwogCiBjbGFz
cyBTVkdUcmFuc2Zvcm1hYmxlIDogcHVibGljIFNWR0xvY2F0YWJsZSB7CiBwdWJsaWM6CkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybWFibGUoKTsK
IAotICAgIHN0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxp
c3QmLCBjb25zdCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgVHJhbnNmb3JtUGFyc2lu
Z01vZGUgbW9kZSA9IENsZWFyTGlzdCk7CisgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1B
dHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYsIGNvbnN0IFVDaGFyKiYgcHRyLCBjb25z
dCBVQ2hhciogZW5kLCBUcmFuc2Zvcm1QYXJzaW5nTW9kZSBtb2RlID0gQ2xlYXJMaXN0KTsKICAg
ICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdU
cmFuc2Zvcm1UeXBlLCBjb25zdCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJh
bnNmb3JtVmFsdWUmKTsKICAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9y
bVR5cGUgcGFyc2VUcmFuc2Zvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIy
LDcgQEAKICNpbmNsdWRlICJTVkdWaWV3RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTEsMTAgKzUyLDE1IEBAIFJlZjxTVkdWaWV3RWxlbWVudD4gU1ZHVmlld0VsZW1lbnQ6OmNy
ZWEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdWaWV3RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVmlld0VsZW1lbnQ6OnZpZXdUYXJn
ZXQoKQoreworICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUoKnRoaXMsIG1fdmlld1Rh
cmdldCk7Cit9CisKIHZvaWQgU1ZHVmlld0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQotICAgICAgICB2aWV3VGFyZ2V0KCku
cmVzZXQodmFsdWUpOworICAgICAgICBtX3ZpZXdUYXJnZXQucmVzZXQodmFsdWUpOwogCiAgICAg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogICAgIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VBdHRyaWJ1dGUodGhpcywgbmFtZSwgdmFsdWUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHJldmlzaW9uIDIwODc3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwyMiArMjYsMjEgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5o
IgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFs
dWVzLmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUFuZFBhbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNWR1ZpZXdFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHWm9vbUFuZFBhbiB7Citj
bGFzcyBTVkdTdHJpbmdMaXN0OworCitjbGFzcyBTVkdWaWV3RWxlbWVudCBmaW5hbCA6IHB1Ymxp
YyBTVkdFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgcHVibGlj
IFNWR0ZpdFRvVmlld0JveCwgcHVibGljIFNWR1pvb21BbmRQYW4gewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8U1ZHVmlld0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAogICAgIHVzaW5nIFNWR0VsZW1lbnQ6OnJlZjsKICAgICB1c2luZyBTVkdFbGVt
ZW50OjpkZXJlZjsKIAotICAgIFNWR1N0cmluZ0xpc3QmIHZpZXdUYXJnZXQoKSB7IHJldHVybiBt
X3ZpZXdUYXJnZXQ7IH0KKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gdmlld1RhcmdldCgpOwogICAg
IFNWR1pvb21BbmRQYW5UeXBlIHpvb21BbmRQYW4oKSBjb25zdCB7IHJldHVybiBtX3pvb21BbmRQ
YW47IH0KICAgICB2b2lkIHNldFpvb21BbmRQYW4odW5zaWduZWQgc2hvcnQgem9vbUFuZFBhbikg
eyBtX3pvb21BbmRQYW4gPSBTVkdab29tQW5kUGFuOjpwYXJzZUZyb21OdW1iZXIoem9vbUFuZFBh
bik7IH0KIApAQCAtNjAsNyArNTksNyBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogICAgIFNWR1pvb21BbmRQYW5UeXBlIG1fem9vbUFuZFBhbjsKLSAg
ICBTVkdTdHJpbmdMaXN0IG1fdmlld1RhcmdldDsKKyAgICBTVkdTdHJpbmdMaXN0VmFsdWVzIG1f
dmlld1RhcmdldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmlkbAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogICovCiAKIGludGVyZmFjZSBTVkdWaWV3RWxlbWVudCA6IFNWR0VsZW1lbnQgewotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHZpZXdUYXJnZXQ7CisgICAgW05ld09i
amVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3Qgdmlld1RhcmdldDsKIH07CiAK
IFNWR1ZpZXdFbGVtZW50IGltcGxlbWVudHMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHVHJh
bnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTA3LDcgKzEwOCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR1ZpZXdT
cGVjOjpzZXRab29tQW4KIAogU3RyaW5nIFNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm1TdHJpbmcoKSBj
b25zdAogewotICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0Pjo6
dG9TdHJpbmcobV90cmFuc2Zvcm0pOworICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxTVkdU
cmFuc2Zvcm1MaXN0VmFsdWVzPjo6dG9TdHJpbmcobV90cmFuc2Zvcm0pOwogfQogCiBTdHJpbmcg
U1ZHVmlld1NwZWM6OnZpZXdCb3hTdHJpbmcoKSBjb25zdApAQCAtMTMwLDEyICsxMzEsMTIgQEAg
U1ZHRWxlbWVudCogU1ZHVmlld1NwZWM6OnZpZXdUYXJnZXQoKSBjbwogICAgIHJldHVybiBkb3du
Y2FzdDxTVkdFbGVtZW50PihlbGVtZW50KTsKIH0KIAotUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3RQ
cm9wZXJ0eVRlYXJPZmY+IFNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm0oKQorUmVmUHRyPFNWR1RyYW5z
Zm9ybUxpc3Q+IFNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm0oKQogewogICAgIGlmICghbV9jb250ZXh0
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gUmV0dXJuIHRoZSBhbmlt
VmFsIGhlcmUsIGFzIGl0cyByZWFkb25seSBieSBkZWZhdWx0IC0gd2hpY2ggaXMgZXhhY3RseSB3
aGF0IHdlIHdhbnQgaGVyZS4KLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdUcmFu
c2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmPihzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0Pihsb29rdXBPckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIodGhpcykpLT5h
bmltVmFsKCkpOworICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0Pihsb29rdXBPckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIodGhpcykpLT5hbmlt
VmFsKCk7CiB9CiAKIFJlZlB0cjxTVkdBbmltYXRlZFJlY3Q+IFNWR1ZpZXdTcGVjOjp2aWV3Qm94
QW5pbWF0ZWQoKQpAQCAtMTcwLDE1ICsxNzEsMTUgQEAgUmVmPFNWR0FuaW1hdGVkUHJvcGVydHk+
IFNWR1ZpZXdTcGVjOjpsbwogewogICAgIEFTU0VSVChvd25lclR5cGUpOwogICAgIEFTU0VSVChv
d25lclR5cGUtPm1fY29udGV4dEVsZW1lbnQpOwotICAgIHJldHVybiBTVkdBbmltYXRlZFByb3Bl
cnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHRWxlbWVudCwgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0Pihvd25lclR5cGUtPm1fY29udGV4dEVsZW1lbnQsIHRy
YW5zZm9ybVByb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fdHJhbnNmb3JtKTsKKyAgICByZXR1
cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0VsZW1lbnQs
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4ob3duZXJU
eXBlLT5tX2NvbnRleHRFbGVtZW50LCB0cmFuc2Zvcm1Qcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBl
LT5tX3RyYW5zZm9ybSk7CiB9CiAKIHZvaWQgU1ZHVmlld1NwZWM6OnJlc2V0KCkKIHsKICAgICBt
X3pvb21BbmRQYW4gPSBTVkdab29tQW5kUGFuTWFnbmlmeTsKICAgICBtX3RyYW5zZm9ybS5jbGVh
cigpOwotICAgIG1fdmlld0JveCA9IEZsb2F0UmVjdCgpOwotICAgIG1fcHJlc2VydmVBc3BlY3RS
YXRpbyA9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSgpOworICAgIG1fdmlld0JveCA9IHsg
fTsKKyAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8gPSB7IH07CiAgICAgbV92aWV3VGFyZ2V0U3Ry
aW5nID0gZW1wdHlTdHJpbmcoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zp
ZXdTcGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJ
KHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiwxMyArMjIsMTMgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFJlY3QuaCIKICNpbmNs
dWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCisj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQ
YW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50OwotY2xhc3Mg
U1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZjsKK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7
CiAKIGNsYXNzIFNWR1ZpZXdTcGVjIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHVmlld1Nw
ZWM+LCBwdWJsaWMgU1ZHWm9vbUFuZFBhbiwgcHVibGljIFNWR0ZpdFRvVmlld0JveCB7CiBwdWJs
aWM6CkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0Q29udGV4dEVsZW1l
bnQoKSB7IG1fY29udGV4dEVsZW1lbnQgPSBudWxscHRyOyB9CiAKICAgICAvLyBDdXN0b20gbm9u
LWFuaW1hdGVkICd0cmFuc2Zvcm0nIHByb3BlcnR5LgotICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm1M
aXN0UHJvcGVydHlUZWFyT2ZmPiB0cmFuc2Zvcm0oKTsKLSAgICBTVkdUcmFuc2Zvcm1MaXN0IHRy
YW5zZm9ybUJhc2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CisgICAgUmVm
UHRyPFNWR1RyYW5zZm9ybUxpc3Q+IHRyYW5zZm9ybSgpOworICAgIFNWR1RyYW5zZm9ybUxpc3RW
YWx1ZXMgdHJhbnNmb3JtQmFzZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0K
IAogICAgIC8vIEN1c3RvbSBhbmltYXRlZCAndmlld0JveCcgcHJvcGVydHkuCiAgICAgUmVmUHRy
PFNWR0FuaW1hdGVkUmVjdD4gdmlld0JveEFuaW1hdGVkKCk7CkBAIC04NCw3ICs4NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBTVkdFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50OwogICAgIFNWR1pvb21B
bmRQYW5UeXBlIG1fem9vbUFuZFBhbiB7IFNWR1pvb21BbmRQYW5NYWduaWZ5IH07Ci0gICAgU1ZH
VHJhbnNmb3JtTGlzdCBtX3RyYW5zZm9ybTsKKyAgICBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIG1f
dHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCBtX3ZpZXdCb3g7CiAgICAgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1ZhbHVlIG1fcHJlc2VydmVBc3BlY3RSYXRpbzsKICAgICBTdHJpbmcgbV92aWV3VGFy
Z2V0U3RyaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIw
ODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyNyArMzYsMzMgQEAgcHVibGlj
OgogICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRz
PFByb3BlcnR5VHlwZT46Okxpc3RJdGVtVGVhck9mZjsKICAgICB1c2luZyBMaXN0V3JhcHBlckNh
Y2hlID0gVmVjdG9yPFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+PjsKICAgICB1c2luZyBMaXN0UHJv
cGVydHkgPSBTVkdMaXN0UHJvcGVydHk8UHJvcGVydHlUeXBlPjsKLSAgICB1c2luZyBMaXN0UHJv
cGVydHlUZWFyT2ZmID0gU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+OworICAg
IHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJPZmYgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQ
cm9wZXJ0eVR5cGU+OjpMaXN0UHJvcGVydHlUZWFyT2ZmOwogICAgIHVzaW5nIENvbnRlbnRUeXBl
ID0gUHJvcGVydHlUeXBlOwogCi0gICAgdmlydHVhbCBSZWZQdHI8TGlzdFByb3BlcnR5PiBiYXNl
VmFsKCkKKyAgICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9w
ZXJ0eVR5cGU+PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJv
cGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKKyAgICB7CisgICAgICAgIEFTU0VSVChj
b250ZXh0RWxlbWVudCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgdmFsdWVzKSk7CisgICAgfQorCisgICAgdmly
dHVhbCBSZWY8TGlzdFByb3BlcnR5VGVhck9mZj4gYmFzZVZhbCgpCiAgICAgewogICAgICAgICBp
ZiAobV9iYXNlVmFsKQotICAgICAgICAgICAgcmV0dXJuIG1fYmFzZVZhbDsKKyAgICAgICAgICAg
IHJldHVybiAqbV9iYXNlVmFsOwogCi0gICAgICAgIGF1dG8gcHJvcGVydHkgPSBMaXN0UHJvcGVy
dHlUZWFyT2ZmOjpjcmVhdGUodGhpcywgQmFzZVZhbFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJz
KTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IExpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSgq
dGhpcywgQmFzZVZhbFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJzKTsKICAgICAgICAgbV9iYXNl
VmFsID0gcHJvcGVydHkucHRyKCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnR5KTsK
KyAgICAgICAgcmV0dXJuIHByb3BlcnR5OwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPExp
c3RQcm9wZXJ0eT4gYW5pbVZhbCgpCisgICAgdmlydHVhbCBSZWY8TGlzdFByb3BlcnR5VGVhck9m
Zj4gYW5pbVZhbCgpCiAgICAgewogICAgICAgICBpZiAobV9hbmltVmFsKQotICAgICAgICAgICAg
cmV0dXJuIG1fYW5pbVZhbDsKKyAgICAgICAgICAgIHJldHVybiAqbV9hbmltVmFsOwogCi0gICAg
ICAgIGF1dG8gcHJvcGVydHkgPSBMaXN0UHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUodGhpcywgQW5p
bVZhbFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJzKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9
IExpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSgqdGhpcywgQW5pbVZhbFJvbGUsIG1fdmFsdWVz
LCBtX3dyYXBwZXJzKTsKICAgICAgICAgbV9hbmltVmFsID0gcHJvcGVydHkucHRyKCk7Ci0gICAg
ICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5Owog
ICAgIH0KICAgICAKICAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9hbmltYXRlZFByb3BlcnR5OyB9CkBAIC03MiwxNSArNzgsMTMgQEAgcHVibGljOgogICAg
IGludCBmaW5kSXRlbShTVkdQcm9wZXJ0eSogcHJvcGVydHkpCiAgICAgewogICAgICAgICAvLyBU
aGlzIHNob3VsZCBldmVyIGJlIGNhbGxlZCBmb3Igb3VyIGJhc2VWYWwsIGFzIGFuaW1WYWwgY2Fu
J3QgbW9kaWZ5IHRoZSBsaXN0LgotICAgICAgICAvLyBJdCdzIHNhZmUgdG8gY2FzdCB0byBMaXN0
UHJvcGVydHlUZWFyT2ZmIGhlcmUgYXMgYWxsIGNsYXNzZXMgaW5oZXJpdGluZyBmcm9tIHVzIHN1
cHBseSB0aGVpciBvd24gcmVtb3ZlSXRlbUZyb21MaXN0KCkgbWV0aG9kLgotICAgICAgICByZXR1
cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxMaXN0UHJvcGVydHlUZWFyT2ZmPihiYXNlVmFsKCkpLT5m
aW5kSXRlbShzdGF0aWNfY2FzdDxMaXN0SXRlbVRlYXJPZmYqPihwcm9wZXJ0eSkpOworICAgICAg
ICByZXR1cm4gYmFzZVZhbCgpLT5maW5kSXRlbShzdGF0aWNfY2FzdDxMaXN0SXRlbVRlYXJPZmYq
Pihwcm9wZXJ0eSkpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlSXRlbUZyb21MaXN0KHNpemVf
dCBpdGVtSW5kZXgsIGJvb2wgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycykKICAgICB7CiAgICAg
ICAgIC8vIFRoaXMgc2hvdWxkIGV2ZXIgYmUgY2FsbGVkIGZvciBvdXIgYmFzZVZhbCwgYXMgYW5p
bVZhbCBjYW4ndCBtb2RpZnkgdGhlIGxpc3QuCi0gICAgICAgIC8vIEl0J3Mgc2FmZSB0byBjYXN0
IHRvIExpc3RQcm9wZXJ0eVRlYXJPZmYgaGVyZSBhcyBhbGwgY2xhc3NlcyBpbmhlcml0aW5nIGZy
b20gdXMgc3VwcGx5IHRoZWlyIG93biByZW1vdmVJdGVtRnJvbUxpc3QoKSBtZXRob2QuCi0gICAg
ICAgIHN0YXRpY19wb2ludGVyX2Nhc3Q8TGlzdFByb3BlcnR5VGVhck9mZj4oYmFzZVZhbCgpKS0+
cmVtb3ZlSXRlbUZyb21MaXN0KGl0ZW1JbmRleCwgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycyk7
CisgICAgICAgIGJhc2VWYWwoKS0+cmVtb3ZlSXRlbUZyb21MaXN0KGl0ZW1JbmRleCwgc2hvdWxk
U3luY2hyb25pemVXcmFwcGVycyk7CiAgICAgfQogCiAgICAgdm9pZCBkZXRhY2hMaXN0V3JhcHBl
cnModW5zaWduZWQgbmV3TGlzdFNpemUpCkBAIC0xMzgsOSArMTQyLDkgQEAgcHVibGljOgogCiAg
ICAgICAgIC8vIEV2ZW50dWFsbHkgdGhlIHdyYXBwZXIgbGlzdCBuZWVkcyBzeW5jaHJvbml6YXRp
b24gYmVjYXVzZSBhbnkgU1ZHQW5pbWF0ZUxlbmd0aExpc3Q6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoKSBjYWxsIG1heQogICAgICAgICAvLyBtdXRhdGUgdGhlIGxlbmd0aCBvZiBvdXIgdmFsdWVz
KCkgbGlzdCwgYW5kIHRodXMgdGhlIHdyYXBwZXIoKSBjYWNoZSBuZWVkcyBzeW5jaHJvbml6YXRp
b24sIHRvIGhhdmUgdGhlIHNhbWUgc2l6ZS4KLSAgICAgICAgLy8gQWxzbyBleGlzdGluZyB3cmFw
cGVycyB3aGljaCBwb2ludCBkaXJlY3RseSBhdCBlbGVtZW50cyBpbiB0aGUgZXhpc3RpbmcgU1ZH
TGVuZ3RoTGlzdCBoYXZlIHRvIGJlIGRldGFjaGVkIChzbyBhIGNvcHkKKyAgICAgICAgLy8gQWxz
byBleGlzdGluZyB3cmFwcGVycyB3aGljaCBwb2ludCBkaXJlY3RseSBhdCBlbGVtZW50cyBpbiB0
aGUgZXhpc3RpbmcgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBoYXZlIHRvIGJlIGRldGFjaGVkIChzbyBh
IGNvcHkKICAgICAgICAgLy8gb2YgdGhlbSBpcyBjcmVhdGVkLCBzbyBleGlzdGluZyBhbmltVmFs
IHZhcmlhYmxlcyBpbiBKUyBhcmUga2VwdC1hbGl2ZSkuIElmIHdlJ2QgZGV0YWNoIHRoZW0gbGF0
ZXIgdGhlIHVuZGVybHlpbmcKLSAgICAgICAgLy8gU1ZHTGVuZ3RoTGlzdCB3YXMgYWxyZWFkeSBt
dXRhdGVkLCBhbmQgb3VyIGxpc3QgaXRlbSB3cmFwcGVyIHRlYXIgb2ZmcyB3b3VsZCBwb2ludCBu
b3doZXJlLiBBc3NlcnRpb25zIHdvdWxkIGZpcmUuCisgICAgICAgIC8vIFNWR0xlbmd0aExpc3RW
YWx1ZXMgd2FzIGFscmVhZHkgbXV0YXRlZCwgYW5kIG91ciBsaXN0IGl0ZW0gd3JhcHBlciB0ZWFy
IG9mZnMgd291bGQgcG9pbnQgbm93aGVyZS4gQXNzZXJ0aW9ucyB3b3VsZCBmaXJlLgogICAgICAg
ICBtX2FuaW1hdGVkUHJvcGVydHktPmRldGFjaExpc3RXcmFwcGVycyhtX2FuaW1hdGVkUHJvcGVy
dHktPnZhbHVlcygpLnNpemUoKSk7CiAKICAgICAgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0
eS0+dmFsdWVzKCkuc2l6ZSgpID09IG1fYW5pbWF0ZWRQcm9wZXJ0eS0+d3JhcHBlcnMoKS5zaXpl
KCkpOwpAQCAtMTU5LDEyICsxNjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN5bmNocm9uaXplV3Jh
cHBlcnNJZk5lZWRlZCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4oY29u
dGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCB2YWx1ZXMp
KTsKLSAgICB9Ci0KIHByb3RlY3RlZDoKICAgICBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9w
ZXJ0eVR5cGUmIHZhbHVlcykKICAgICAgICAgOiBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnRleHRF
bGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSkKQEAgLTE4Miw4ICsx
ODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gQ2FjaGUgdGhlIHJhdyBwb2ludGVyIGJ1dCByZXR1
cm4gYSBSZWZQdHI8Pi4gVGhpcyB3aWxsIGJyZWFrIHRoZSBjeWNsaWMgcmVmZXJlbmNlCiAgICAg
Ly8gYmV0d2VlbiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmIGFuZCBTVkdBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYgb25jZSB0aGUgcHJvcGVydHkKICAgICAvLyBwb2ludGVyIGlzIG5vdCBuZWVk
ZWQuCi0gICAgTGlzdFByb3BlcnR5KiBtX2Jhc2VWYWwgeyBudWxscHRyIH07Ci0gICAgTGlzdFBy
b3BlcnR5KiBtX2FuaW1WYWwgeyBudWxscHRyIH07CisgICAgTGlzdFByb3BlcnR5VGVhck9mZiog
bV9iYXNlVmFsIHsgbnVsbHB0ciB9OworICAgIExpc3RQcm9wZXJ0eVRlYXJPZmYqIG1fYW5pbVZh
bCB7IG51bGxwdHIgfTsKIAogICAgIFJlZlB0cjxMaXN0UHJvcGVydHk+IG1fYW5pbWF0ZWRQcm9w
ZXJ0eTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5o
CShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDY5ICsyMyw2OCBAQAogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAjaW5jbHVkZSAi
U1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgotI2luY2x1ZGUg
IlNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxp
dGllcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0FuaW1hdGVkUGF0aFNl
Z0xpc3RQcm9wZXJ0eVRlYXJPZmYgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0PiB7CitjbGFzcyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZjxTVkdQYXRoU2VnTGlzdFZhbHVlcz4gewogcHVibGljOgotICAgIFJlZlB0cjxMaXN0UHJv
cGVydHk+IGJhc2VWYWwoKSBmaW5hbAorICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmY8U1ZHUGF0aFNlZ0xpc3RWYWx1ZXM+OworCisgICAgc3RhdGljIFJlZjxT
VkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPiBjcmVhdGUoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1h
dGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBTVkdQYXRoU2VnTGlzdFZhbHVl
cyYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUs
IHZhbHVlcykpOworICAgIH0KKworICAgIFJlZjxMaXN0UHJvcGVydHlUZWFyT2ZmPiBiYXNlVmFs
KCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChtX2Jhc2VWYWwpCi0gICAgICAgICAgICByZXR1
cm4gbV9iYXNlVmFsOworICAgICAgICAgICAgcmV0dXJuICptX2Jhc2VWYWw7CiAKLSAgICAgICAg
YXV0byBwcm9wZXJ0eSA9IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUodGhp
cywgQmFzZVZhbFJvbGUsIFBhdGhTZWdVbmFsdGVyZWRSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVy
cyk7CisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlKCp0aGlz
LCBCYXNlVmFsUm9sZSwgUGF0aFNlZ1VuYWx0ZXJlZFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJz
KTsKICAgICAgICAgbV9iYXNlVmFsID0gcHJvcGVydHkucHRyKCk7Ci0gICAgICAgIHJldHVybiBX
VEZNb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5OwogICAgIH0KIAotICAg
IFJlZlB0cjxMaXN0UHJvcGVydHk+IGFuaW1WYWwoKSBmaW5hbAorICAgIFJlZjxMaXN0UHJvcGVy
dHlUZWFyT2ZmPiBhbmltVmFsKCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChtX2FuaW1WYWwp
Ci0gICAgICAgICAgICByZXR1cm4gbV9hbmltVmFsOworICAgICAgICAgICAgcmV0dXJuICptX2Fu
aW1WYWw7CiAKLSAgICAgICAgYXV0byBwcm9wZXJ0eSA9IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmOjpjcmVhdGUodGhpcywgQW5pbVZhbFJvbGUsIFBhdGhTZWdVbmFsdGVyZWRSb2xlLCBt
X3ZhbHVlcywgbV93cmFwcGVycyk7CisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBTVkdQYXRoU2Vn
TGlzdDo6Y3JlYXRlKCp0aGlzLCBBbmltVmFsUm9sZSwgUGF0aFNlZ1VuYWx0ZXJlZFJvbGUsIG1f
dmFsdWVzLCBtX3dyYXBwZXJzKTsKICAgICAgICAgbV9hbmltVmFsID0gcHJvcGVydHkucHRyKCk7
Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHByb3Bl
cnR5OwogICAgIH0KIAogICAgIGludCBmaW5kSXRlbShjb25zdCBSZWZQdHI8U1ZHUGF0aFNlZz4m
IHNlZ21lbnQpCiAgICAgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBldmVyIGJlIGNhbGxlZCBm
b3Igb3VyIGJhc2VWYWwsIGFzIGFuaW1WYWwgY2FuJ3QgbW9kaWZ5IHRoZSBsaXN0LgotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqPihiYXNl
VmFsKCkuZ2V0KCkpLT5maW5kSXRlbShzZWdtZW50KTsKKyAgICAgICAgcmV0dXJuIGJhc2VWYWwo
KS0+ZmluZEl0ZW0oc2VnbWVudCk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVJdGVtRnJvbUxp
c3Qoc2l6ZV90IGl0ZW1JbmRleCwgYm9vbCBzaG91bGRTeW5jaHJvbml6ZVdyYXBwZXJzKQogICAg
IHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgZXZlciBiZSBjYWxsZWQgZm9yIG91ciBiYXNlVmFs
LCBhcyBhbmltVmFsIGNhbid0IG1vZGlmeSB0aGUgbGlzdC4KLSAgICAgICAgc3RhdGljX2Nhc3Q8
U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqPihiYXNlVmFsKCkuZ2V0KCkpLT5yZW1vdmVJ
dGVtRnJvbUxpc3QoaXRlbUluZGV4LCBzaG91bGRTeW5jaHJvbml6ZVdyYXBwZXJzKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+
IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUs
IFNWR1BhdGhTZWdMaXN0JiB2YWx1ZXMpCi0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dEVs
ZW1lbnQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmltYXRlZFBhdGhTZWdM
aXN0UHJvcGVydHlUZWFyT2ZmKGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZFByb3BlcnR5VHlwZSwgdmFsdWVzKSk7CisgICAgICAgIGJhc2VWYWwoKS0+cmVtb3ZlSXRlbUZy
b21MaXN0KGl0ZW1JbmRleCwgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycyk7CiAgICAgfQogCi0g
ICAgdXNpbmcgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0Pjo6
YW5pbWF0aW9uU3RhcnRlZDsKLSAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoU1ZHUGF0aEJ5dGVT
dHJlYW0qIGJ5dGVTdHJlYW0sIGNvbnN0IFNWR1BhdGhTZWdMaXN0KiBiYXNlVmFsdWUpCisgICAg
dXNpbmcgQmFzZTo6YW5pbWF0aW9uU3RhcnRlZDsKKyAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQo
U1ZHUGF0aEJ5dGVTdHJlYW0qIGJ5dGVTdHJlYW0sIGNvbnN0IFNWR1BhdGhTZWdMaXN0VmFsdWVz
KiBiYXNlVmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoYnl0ZVN0cmVhbSk7CiAgICAgICAg
IEFTU0VSVChiYXNlVmFsdWUpOwogICAgICAgICBBU1NFUlQoIW1fYW5pbWF0ZWRQYXRoQnl0ZVN0
cmVhbSk7CiAgICAgICAgIG1fYW5pbWF0ZWRQYXRoQnl0ZVN0cmVhbSA9IGJ5dGVTdHJlYW07CiAK
LSAgICAgICAgLy8gUGFzcyBzaG91bGRPd25WYWx1ZXM9dHJ1ZSwgYXMgdGhlIFNWR1BhdGhTZWdM
aXN0IGxpZmV0aW1lIGlzIHNvbGVseSBtYW5hZ2VkIGJ5IGl0cyB0ZWFyIG9mZiBjbGFzcy4KLSAg
ICAgICAgU1ZHUGF0aFNlZ0xpc3QqIGNvcHkgPSBuZXcgU1ZHUGF0aFNlZ0xpc3QoKmJhc2VWYWx1
ZSk7Ci0gICAgICAgIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQYXRoU2VnTGlz
dD46OmFuaW1hdGlvblN0YXJ0ZWQoY29weSwgdHJ1ZSk7CisgICAgICAgIC8vIFBhc3Mgc2hvdWxk
T3duVmFsdWVzPXRydWUsIGFzIHRoZSBTVkdQYXRoU2VnTGlzdFZhbHVlcyBsaWZldGltZSBpcyBz
b2xlbHkgbWFuYWdlZCBieSBpdHMgdGVhciBvZmYgY2xhc3MuCisgICAgICAgIGF1dG8qIGNvcHkg
PSBuZXcgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoKmJhc2VWYWx1ZSk7CisgICAgICAgIEJhc2U6OmFu
aW1hdGlvblN0YXJ0ZWQoY29weSwgdHJ1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBhbmltYXRpb25F
bmRlZCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbmltYXRlZFBhdGhCeXRlU3RyZWFtKTsK
ICAgICAgICAgbV9hbmltYXRlZFBhdGhCeXRlU3RyZWFtID0gbnVsbHB0cjsKLSAgICAgICAgU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0Pjo6YW5pbWF0aW9uRW5k
ZWQoKTsKKyAgICAgICAgQmFzZTo6YW5pbWF0aW9uRW5kZWQoKTsKICAgICB9CiAKICAgICB2b2lk
IGFuaW1WYWxEaWRDaGFuZ2UoKQpAQCAtOTYsMTkgKzk1LDE5IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gSWYgdGhlIGFuaW1WYWwgaXMgb2JzZXJ2ZWQgZnJvbSBKUywgd2UgaGF2ZSB0byB1cGRhdGUg
aXQgb24gZWFjaCBhbmltYXRpb24gc3RlcC4KICAgICAgICAgLy8gVGhpcyBpcyBhbiBleHBlbnNp
dmUgb3BlcmF0aW9uIGFuZCBvbmx5IGRvbmUsIGlmIHNvbWVvbmUgYWN0dWFsbHkgb2JzZXJ2ZXMg
dGhlIGFuaW1hdGVkUGF0aFNlZ0xpc3QoKSB3aGlsZSBhbiBhbmltYXRpb24gaXMgcnVubmluZy4K
ICAgICAgICAgaWYgKHBhdGhFbGVtZW50LT5pc0FuaW1WYWxPYnNlcnZlZCgpKSB7Ci0gICAgICAg
ICAgICBTVkdQYXRoU2VnTGlzdCYgYW5pbWF0ZWRMaXN0ID0gY3VycmVudEFuaW1hdGVkVmFsdWUo
KTsKKyAgICAgICAgICAgIGF1dG8mIGFuaW1hdGVkTGlzdCA9IGN1cnJlbnRBbmltYXRlZFZhbHVl
KCk7CiAgICAgICAgICAgICBhbmltYXRlZExpc3QuY2xlYXIoKTsKLSAgICAgICAgICAgIGJ1aWxk
U1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbSgqbV9hbmltYXRlZFBhdGhCeXRlU3RyZWFtLCAq
cGF0aEVsZW1lbnQsIGFuaW1hdGVkTGlzdCwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAg
ICBidWlsZFNWR1BhdGhTZWdMaXN0VmFsdWVzRnJvbUJ5dGVTdHJlYW0oKm1fYW5pbWF0ZWRQYXRo
Qnl0ZVN0cmVhbSwgKnBhdGhFbGVtZW50LCBhbmltYXRlZExpc3QsIFVuYWx0ZXJlZFBhcnNpbmcp
OwogICAgICAgICB9CiAKLSAgICAgICAgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNW
R1BhdGhTZWdMaXN0Pjo6YW5pbVZhbERpZENoYW5nZSgpOworICAgICAgICBCYXNlOjphbmltVmFs
RGlkQ2hhbmdlKCk7CiAgICAgfQogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIGFuaW1hdGVkUGF0
aEJ5dGVTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGVkUGF0aEJ5dGVTdHJlYW07IH0K
IAogcHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgU1ZHUGF0aFNl
Z0xpc3QmIHZhbHVlcykKLSAgICAgICAgOiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8
U1ZHUGF0aFNlZ0xpc3Q+KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFBy
b3BlcnR5VHlwZSwgdmFsdWVzKQorICAgIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBT
VkdQYXRoU2VnTGlzdFZhbHVlcyYgdmFsdWVzKQorICAgICAgICA6IEJhc2UoY29udGV4dEVsZW1l
bnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCB2YWx1ZXMpCiAgICAgICAg
ICwgbV9hbmltYXRlZFBhdGhCeXRlU3RyZWFtKG51bGxwdHIpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dEVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAy
MDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyNCArMzIsMzAgQEAgcHVibGljOgog
ICAgIHVzaW5nIFByb3BlcnR5VHlwZSA9IHR5cGVuYW1lIFByb3BlcnR5VGVhck9mZjo6UHJvcGVy
dHlUeXBlOwogICAgIHVzaW5nIENvbnRlbnRUeXBlID0gUHJvcGVydHlUeXBlOwogCi0gICAgUmVm
UHRyPFByb3BlcnR5VGVhck9mZj4gYmFzZVZhbCgpCisgICAgc3RhdGljIFJlZjxTVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVRlYXJPZmY+PiBjcmVhdGUoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVk
UHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUZWFyT2Zm
Pihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHBy
b3BlcnR5KSk7CisgICAgfQorCisgICAgUmVmPFByb3BlcnR5VGVhck9mZj4gYmFzZVZhbCgpCiAg
ICAgewogICAgICAgICBpZiAobV9iYXNlVmFsKQotICAgICAgICAgICAgcmV0dXJuIG1fYmFzZVZh
bDsKKyAgICAgICAgICAgIHJldHVybiAqbV9iYXNlVmFsOwogCi0gICAgICAgIGF1dG8gcHJvcGVy
dHkgPSBQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSh0aGlzLCBCYXNlVmFsUm9sZSwgbV9wcm9wZXJ0
eSk7CisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSgqdGhp
cywgQmFzZVZhbFJvbGUsIG1fcHJvcGVydHkpOwogICAgICAgICBtX2Jhc2VWYWwgPSBwcm9wZXJ0
eS5wdHIoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocHJvcGVydHkpOworICAgICAgICByZXR1
cm4gcHJvcGVydHk7CiAgICAgfQogCi0gICAgUmVmUHRyPFByb3BlcnR5VGVhck9mZj4gYW5pbVZh
bCgpCisgICAgUmVmPFByb3BlcnR5VGVhck9mZj4gYW5pbVZhbCgpCiAgICAgewogICAgICAgICBp
ZiAobV9hbmltVmFsKQotICAgICAgICAgICAgcmV0dXJuIG1fYW5pbVZhbDsKKyAgICAgICAgICAg
IHJldHVybiAqbV9hbmltVmFsOwogCi0gICAgICAgIGF1dG8gcHJvcGVydHkgPSBQcm9wZXJ0eVRl
YXJPZmY6OmNyZWF0ZSh0aGlzLCBBbmltVmFsUm9sZSwgbV9wcm9wZXJ0eSk7CisgICAgICAgIGF1
dG8gcHJvcGVydHkgPSBQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSgqdGhpcywgQW5pbVZhbFJvbGUs
IG1fcHJvcGVydHkpOwogICAgICAgICBtX2FuaW1WYWwgPSBwcm9wZXJ0eS5wdHIoKTsKLSAgICAg
ICAgcmV0dXJuIFdURk1vdmUocHJvcGVydHkpOworICAgICAgICByZXR1cm4gcHJvcGVydHk7CiAg
ICAgfQogCiAgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYW5p
bWF0ZWRQcm9wZXJ0eTsgfQpAQCAtNjIsMTIgKzY4LDYgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9hbmltVmFsID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VGVhck9mZj4+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFByb3BlcnR5VHlwZSYgcHJvcGVydHkp
Ci0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVRlYXJPZmY+
KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgcHJv
cGVydHkpKTsKLSAgICB9Ci0KICAgICBQcm9wZXJ0eVR5cGUmIGN1cnJlbnRBbmltYXRlZFZhbHVl
KCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0FuaW1hdGluZygpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVh
ck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQ
cm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNDEgKzIxLDQwIEBACiAKICNp
bmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdU
cmFuc2Zvcm1MaXN0LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9m
Zi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZiBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4geworY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0UHJvcGVydHlUZWFyT2ZmIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPiB7CiBwdWJsaWM6Ci0gICAgUmVmUHRyPExp
c3RQcm9wZXJ0eT4gYmFzZVZhbCgpIGZpbmFsCisgICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHZhbHVl
cykKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZihj
b250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHZhbHVl
cykpOworICAgIH0KKworICAgIFJlZjxMaXN0UHJvcGVydHlUZWFyT2ZmPiBiYXNlVmFsKCkgZmlu
YWwKICAgICB7CiAgICAgICAgIGlmIChtX2Jhc2VWYWwpCi0gICAgICAgICAgICByZXR1cm4gbV9i
YXNlVmFsOworICAgICAgICAgICAgcmV0dXJuICptX2Jhc2VWYWw7CiAKLSAgICAgICAgYXV0byBw
cm9wZXJ0eSA9IFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSh0aGlzLCBC
YXNlVmFsUm9sZSwgbV92YWx1ZXMsIG1fd3JhcHBlcnMpOworICAgICAgICBhdXRvIHByb3BlcnR5
ID0gU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKCp0aGlzLCBCYXNlVmFsUm9sZSwgbV92YWx1ZXMs
IG1fd3JhcHBlcnMpOwogICAgICAgICBtX2Jhc2VWYWwgPSBwcm9wZXJ0eS5wdHIoKTsKLSAgICAg
ICAgcmV0dXJuIFdURk1vdmUocHJvcGVydHkpOworICAgICAgICByZXR1cm4gcHJvcGVydHk7CiAg
ICAgfQogCi0gICAgUmVmUHRyPExpc3RQcm9wZXJ0eT4gYW5pbVZhbCgpIGZpbmFsCisgICAgUmVm
PExpc3RQcm9wZXJ0eVRlYXJPZmY+IGFuaW1WYWwoKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYg
KG1fYW5pbVZhbCkKLSAgICAgICAgICAgIHJldHVybiBtX2FuaW1WYWw7CisgICAgICAgICAgICBy
ZXR1cm4gKm1fYW5pbVZhbDsKIAotICAgICAgICBhdXRvIHByb3BlcnR5ID0gU1ZHVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZjo6Y3JlYXRlKHRoaXMsIEFuaW1WYWxSb2xlLCBtX3ZhbHVlcywg
bV93cmFwcGVycyk7CisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBTVkdUcmFuc2Zvcm1MaXN0Ojpj
cmVhdGUoKnRoaXMsIEFuaW1WYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7CiAgICAgICAg
IG1fYW5pbVZhbCA9IHByb3BlcnR5LnB0cigpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShwcm9w
ZXJ0eSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQ
cm9wZXJ0eVRlYXJPZmY+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0
ZWRQcm9wZXJ0eVR5cGUsIFNWR1RyYW5zZm9ybUxpc3QmIHZhbHVlcykKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVudCwgYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykpOworICAgICAgICByZXR1
cm4gcHJvcGVydHk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUsIFNWR1RyYW5zZm9ybUxpc3QmIHZhbHVlcykKLSAgICAgICAgOiBTVkdBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4oY29udGV4dEVsZW1lbnQs
IGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCB2YWx1ZXMpCisgICAgU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5
VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYgdmFsdWVz
KQorICAgICAgICA6IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzPihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0
eVR5cGUsIHZhbHVlcykKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCShyZXZpc2lvbiAyMDg3NzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIExpc3RJ
dGVtVHlwZSB7IG1fdmFsdWVzLT5hdChpbmRleCkgfTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25P
cjxSZWY8TGlzdEl0ZW1UZWFyT2ZmPj4gZ2V0SXRlbVZhbHVlc0FuZFdyYXBwZXJzKEFuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRMaXN0LCB1bnNpZ25lZCBpbmRleCkKKyAgICBF
eGNlcHRpb25PcjxSZWY8TGlzdEl0ZW1UZWFyT2ZmPj4gZ2V0SXRlbVZhbHVlc0FuZFdyYXBwZXJz
KEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRMaXN0LCB1bnNpZ25lZCBpbmRl
eCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3dyYXBwZXJzKTsKIApAQCAtMzc3LDcgKzM3Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCi0g
ICAgRXhjZXB0aW9uT3I8UmVmPExpc3RJdGVtVGVhck9mZj4+IHJlbW92ZUl0ZW1WYWx1ZXNBbmRX
cmFwcGVycyhBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkTGlzdCwgdW5zaWdu
ZWQgaW5kZXgpCisgICAgRXhjZXB0aW9uT3I8UmVmPExpc3RJdGVtVGVhck9mZj4+IHJlbW92ZUl0
ZW1WYWx1ZXNBbmRXcmFwcGVycyhBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVk
TGlzdCwgdW5zaWduZWQgaW5kZXgpCiAgICAgewogICAgICAgICBBU1NFUlQobV93cmFwcGVycyk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdM
aXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksOSArMzksOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6bV92YWx1ZXM7CiAgICAg
dXNpbmcgQmFzZTo6bV93cmFwcGVyczsKIAotICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKEFu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlS
b2xlIHJvbGUsIFByb3BlcnR5VHlwZSYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVy
cykKKyAgICBzdGF0aWMgUmVmPFNlbGY+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUm
IHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCiAgICAgewotICAgICAgICBBU1NF
UlQoYW5pbWF0ZWRQcm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYo
YW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykpOwogICAgIH0KIApAQCAt
MTEzLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBTVkdMaXN0
UHJvcGVydHlUZWFyT2ZmKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRQcm9w
ZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFByb3BlcnR5VHlwZSYgdmFsdWVzLCBMaXN0V3Jh
cHBlckNhY2hlJiB3cmFwcGVycykKKyAgICBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmKEFuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJv
bGUsIFByb3BlcnR5VHlwZSYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKICAg
ICAgICAgOiBTVkdMaXN0UHJvcGVydHk8UHJvcGVydHlUeXBlPihyb2xlLCB2YWx1ZXMsICZ3cmFw
cGVycykKICAgICAgICAgLCBtX2FuaW1hdGVkUHJvcGVydHkoYW5pbWF0ZWRQcm9wZXJ0eSkKICAg
ICB7CkBAIC0xMjEsMTUgKzEyMCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIH5TVkdM
aXN0UHJvcGVydHlUZWFyT2ZmKCkKICAgICB7Ci0gICAgICAgIGlmIChtX2FuaW1hdGVkUHJvcGVy
dHkpCi0gICAgICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPnByb3BlcnR5V2lsbEJlRGVsZXRl
ZCgqdGhpcyk7CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+cHJvcGVydHlXaWxsQmVEZWxl
dGVkKCp0aGlzKTsKICAgICB9CiAKICAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgaWYgKG1fcm9sZSA9PSBBbmltVmFsUm9sZSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBpZiAobV9hbmltYXRlZFByb3BlcnR5ICYmIG1fYW5pbWF0
ZWRQcm9wZXJ0eS0+aXNSZWFkT25seSgpKQorICAgICAgICBpZiAobV9hbmltYXRlZFByb3BlcnR5
LT5pc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KQEAgLTE0Niw3ICsxNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAg
ICBMaXN0SXRlbVRlYXJPZmYqIGl0ZW0gPSBtX3dyYXBwZXJzLT5hdChpKS5nZXQoKTsKICAgICAg
ICAgICAgIGlmICghaXRlbSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGl0ZW0tPnNldEFuaW1hdGVkUHJvcGVydHkobV9hbmltYXRlZFByb3BlcnR5LmdldCgpKTsKKyAg
ICAgICAgICAgIGl0ZW0tPnNldEFuaW1hdGVkUHJvcGVydHkobV9hbmltYXRlZFByb3BlcnR5LnB0
cigpKTsKICAgICAgICAgICAgIGl0ZW0tPnNldFZhbHVlKG1fdmFsdWVzLT5hdChpKSk7CiAgICAg
ICAgIH0KIApAQCAtMTgyLDcgKzE4MCw3IEBAIHByb3RlY3RlZDoKIAogICAgICAgICAvLyBTcGVj
OiBJZiBuZXdJdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBpcyByZW1vdmVkIGZyb20gaXRz
IHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgogICAg
ICAgICAvLyAnbmV3SXRlbScgaXMgYWxyZWFkeSBsaXZpbmcgaW4gYW5vdGhlciBsaXN0LiBJZiBp
dCdzIG5vdCBvdXIgbGlzdCwgc3luY2hyb25pemUgdGhlIG90aGVyIGxpc3RzIHdyYXBwZXJzIGFm
dGVyIHRoZSByZW1vdmFsLgotICAgICAgICBib29sIGxpdmVzSW5PdGhlckxpc3QgPSBhbmltYXRl
ZFByb3BlcnR5T2ZJdGVtICE9IG1fYW5pbWF0ZWRQcm9wZXJ0eTsKKyAgICAgICAgYm9vbCBsaXZl
c0luT3RoZXJMaXN0ID0gYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSAhPSBtX2FuaW1hdGVkUHJvcGVy
dHkucHRyKCk7CiAgICAgICAgIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogcHJvcGVydHlU
ZWFyT2ZmID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKj4oYW5pbWF0
ZWRQcm9wZXJ0eU9mSXRlbSk7CiAgICAgICAgIGludCBpbmRleFRvUmVtb3ZlID0gcHJvcGVydHlU
ZWFyT2ZmLT5maW5kSXRlbShuZXdJdGVtLnB0cigpKTsKICAgICAgICAgQVNTRVJUKGluZGV4VG9S
ZW1vdmUgIT0gLTEpOwpAQCAtMjA5LDcgKzIwNyw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEJh
Y2sgcG9pbnRlciB0byB0aGUgYW5pbWF0ZWQgcHJvcGVydHkgdGhhdCBjcmVhdGVkIHVzCiAgICAg
Ly8gRm9yIGV4YW1wbGUgKHRleHQueC5iYXNlVmFsKTogbV9hbmltYXRlZFByb3BlcnR5IHBvaW50
cyB0byB0aGUgJ3gnIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCBvYmplY3QKLSAgICBSZWZQdHI8QW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPiBtX2FuaW1hdGVkUHJvcGVydHk7CisgICAgUmVmPEFu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZj4gbV9hbmltYXRlZFByb3BlcnR5OwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZi5oIgotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zi5oIgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIK
LSNpbmNsdWRlICJTVkdQYXRoU2VnV2l0aENvbnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi12b2lkIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpjbGVhckNvbnRleHRBbmRS
b2xlcygpCi17Ci0gICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiAq
bV92YWx1ZXMpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Kj4o
aXRlbS5nZXQoKSktPnNldENvbnRleHRBbmRSb2xlKG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRS
b2xlKTsKLSAgICB9Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR1BhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmOjpjbGVhcigpCi17Ci0gICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICBpZiAobV92
YWx1ZXMtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGNsZWFyQ29udGV4
dEFuZFJvbGVzKCk7Ci0gICAgcmV0dXJuIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpC
YXNlOjpjbGVhclZhbHVlcygpOwotfQotCi1FeGNlcHRpb25PcjxTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZjo6UHRyTGlzdEl0ZW1UeXBlPiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zjo6Z2V0SXRlbSh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICByZXR1cm4gQmFzZTo6Z2V0SXRlbVZh
bHVlcyhpbmRleCk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmOjpQdHJMaXN0SXRlbVR5cGU+IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpyZXBs
YWNlSXRlbShQdHJMaXN0SXRlbVR5cGUgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAg
Ly8gTm90IHNwZWNpZmllZCwgYnV0IEZGL09wZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBq
dXN0IHNhbmUuCi0gICAgaWYgKCFuZXdJdGVtKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlIgfTsKLQotICAgIGlmIChpbmRleCA8IG1f
dmFsdWVzLT5zaXplKCkpIHsKLSAgICAgICAgTGlzdEl0ZW1UeXBlIHJlcGxhY2VkSXRlbSA9IG1f
dmFsdWVzLT5hdChpbmRleCk7Ci0gICAgICAgIEFTU0VSVChyZXBsYWNlZEl0ZW0pOwotICAgICAg
ICBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihyZXBsYWNlZEl0ZW0uZ2V0KCkp
LT5zZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIEJhc2U6OnJlcGxhY2VJdGVtVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsK
LX0KLQotRXhjZXB0aW9uT3I8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY6OlB0ckxpc3RJ
dGVtVHlwZT4gU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY6OnJlbW92ZUl0ZW0odW5zaWdu
ZWQgaW5kZXgpCi17Ci0gICAgYXV0byByZXN1bHQgPSBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZjo6QmFzZTo6cmVtb3ZlSXRlbVZhbHVlcyhpbmRleCk7Ci0gICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBhdXRvIHJlbW92ZWRJdGVt
ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIGlmIChyZW1vdmVkSXRlbSkKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Jj4oKnJlbW92ZWRJdGVtKS5z
ZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgcmV0
dXJuIFdURk1vdmUocmVtb3ZlZEl0ZW0pOwotfQotCi1TVkdQYXRoRWxlbWVudCogU1ZHUGF0aFNl
Z0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNvbnRleHRFbGVtZW50KCkgY29uc3QKLXsKLSAgICBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCA9IG1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y29udGV4dEVsZW1l
bnQoKTsKLSAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgIHJldHVybiBkb3duY2FzdDxT
VkdQYXRoRWxlbWVudD4oY29udGV4dEVsZW1lbnQpOwotfQotCi1ib29sIFNWR1BhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmOjpwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVZhbHVlKGNvbnN0IExpc3RJ
dGVtVHlwZSYgbmV3SXRlbSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkpCi17Ci0gICAgU1ZHUGF0
aFNlZ1dpdGhDb250ZXh0KiBuZXdJdGVtV2l0aENvbnRleHQgPSBzdGF0aWNfY2FzdDxTVkdQYXRo
U2VnV2l0aENvbnRleHQqPihuZXdJdGVtLmdldCgpKTsKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eT4gYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSA9IG5ld0l0ZW1XaXRoQ29udGV4dC0+YW5p
bWF0ZWRQcm9wZXJ0eSgpOwotCi0gICAgLy8gQWx0ZXIgdGhlIHJvbGUsIGFmdGVyIGNhbGxpbmcg
YW5pbWF0ZWRQcm9wZXJ0eSgpLCBhcyB0aGF0IG1heSBpbmZsdWVuY2UgdGhlIHJldHVybmVkIGFu
aW1hdGVkIHByb3BlcnR5LgotICAgIG5ld0l0ZW1XaXRoQ29udGV4dC0+c2V0Q29udGV4dEFuZFJv
bGUoY29udGV4dEVsZW1lbnQoKSwgbV9wYXRoU2VnUm9sZSk7Ci0KLSAgICBpZiAoIWFuaW1hdGVk
UHJvcGVydHlPZkl0ZW0pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gbmV3SXRlbSBi
ZWxvbmdzIHRvIGEgU1ZHUGF0aEVsZW1lbnQsIGJ1dCBpdHMgYXNzb2NpYXRlZCBTVkdBbmltYXRl
ZFByb3BlcnR5IGlzIG5vdCBhbiBhbmltYXRlZCBsaXN0IHRlYXIgb2ZmLgotICAgIC8vIChmb3Ig
ZXhhbXBsZTogInBhdGhFbGVtZW50LnBhdGhTZWdMaXN0LmFwcGVuZEl0ZW0ocGF0aEVsZW1lbnQu
Y3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlcGF0aCgpKSIpCi0gICAgaWYgKCFhbmltYXRlZFByb3BlcnR5
T2ZJdGVtLT5pc0FuaW1hdGVkTGlzdFRlYXJPZmYoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICAvLyBTcGVjOiBJZiBuZXdJdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBpcyByZW1v
dmVkIGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGludG8gdGhp
cyBsaXN0LgotICAgIC8vICduZXdJdGVtJyBpcyBhbHJlYWR5IGxpdmluZyBpbiBhbm90aGVyIGxp
c3QuIElmIGl0J3Mgbm90IG91ciBsaXN0LCBzeW5jaHJvbml6ZSB0aGUgb3RoZXIgbGlzdHMgd3Jh
cHBlcnMgYWZ0ZXIgdGhlIHJlbW92YWwuCi0gICAgYm9vbCBsaXZlc0luT3RoZXJMaXN0ID0gYW5p
bWF0ZWRQcm9wZXJ0eU9mSXRlbSAhPSBtX2FuaW1hdGVkUHJvcGVydHk7Ci0gICAgUmVmUHRyPFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IHByb3BlcnR5VGVhck9mZiA9IHN0
YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4o
YW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSk7Ci0gICAgaW50IGluZGV4VG9SZW1vdmUgPSBwcm9wZXJ0
eVRlYXJPZmYtPmZpbmRJdGVtKG5ld0l0ZW0uZ2V0KCkpOwotICAgIEFTU0VSVChpbmRleFRvUmVt
b3ZlICE9IC0xKTsKLQotICAgIC8vIERvIG5vdCByZW1vdmUgbmV3SXRlbSBpZiBhbHJlYWR5IGlu
IHRoaXMgbGlzdCBhdCB0aGUgdGFyZ2V0IGluZGV4LgotICAgIGlmICghbGl2ZXNJbk90aGVyTGlz
dCAmJiBpbmRleFRvTW9kaWZ5ICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleFRvUmVtb3Zl
KSA9PSAqaW5kZXhUb01vZGlmeSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcHJvcGVy
dHlUZWFyT2ZmLT5yZW1vdmVJdGVtRnJvbUxpc3QoaW5kZXhUb1JlbW92ZSwgbGl2ZXNJbk90aGVy
TGlzdCk7Ci0KLSAgICBpZiAoIWluZGV4VG9Nb2RpZnkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gSWYgdGhlIGl0ZW0gbGl2ZWQgaW4gb3VyIGxpc3QsIGFkanVzdCB0aGUgaW5zZXJ0
aW9uIGluZGV4LgotICAgIGlmICghbGl2ZXNJbk90aGVyTGlzdCkgewotICAgICAgICB1bnNpZ25l
ZCYgaW5kZXggPSAqaW5kZXhUb01vZGlmeTsKLSAgICAgICAgLy8gU3BlYzogSWYgdGhlIGl0ZW0g
aXMgYWxyZWFkeSBpbiB0aGlzIGxpc3QsIG5vdGUgdGhhdCB0aGUgaW5kZXggb2YgdGhlIGl0ZW0g
dG8gKHJlcGxhY2V8aW5zZXJ0IGJlZm9yZSkgaXMgYmVmb3JlIHRoZSByZW1vdmFsIG9mIHRoZSBp
dGVtLgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4VG9SZW1vdmUpIDwg
aW5kZXgpCi0gICAgICAgICAgICAtLWluZGV4OwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwot
fQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODc3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmYuaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFNWR1BhdGhFbGVtZW50OwotCi1jbGFzcyBTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZiBmaW5hbCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3Q+
IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gU1ZHTGlzdFByb3BlcnR5PFNWR1BhdGhTZWdM
aXN0PjsKLSAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUGF0aFNlZ0xpc3Q+OwotICAgIHVzaW5nIExpc3RJdGVt
VHlwZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1BhdGhTZWdMaXN0Pjo6TGlzdEl0ZW1UeXBlOwot
ICAgIHVzaW5nIFB0ckxpc3RJdGVtVHlwZSA9IFJlZlB0cjxTVkdQYXRoU2VnPjsKLQotICAgIHN0
YXRpYyBSZWY8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IGNyZWF0ZShBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xl
LCBTVkdQYXRoU2VnUm9sZSBwYXRoU2VnUm9sZSwgU1ZHUGF0aFNlZ0xpc3QmIHZhbHVlcywgTGlz
dFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCi0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQ
cm9wZXJ0eSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmKGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHBhdGhTZWdSb2xlLCB2YWx1ZXMs
IHdyYXBwZXJzKSk7Ci0gICAgfQotCi0gICAgaW50IGZpbmRJdGVtKGNvbnN0IExpc3RJdGVtVHlw
ZSYgaXRlbSkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0KLSAgICAg
ICAgdW5zaWduZWQgc2l6ZSA9IG1fdmFsdWVzLT5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoaXRlbSA9PSBtX3ZhbHVl
cy0+YXQoaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgdm9pZCByZW1vdmVJdGVtRnJvbUxpc3Qoc2l6ZV90
IGl0ZW1JbmRleCwgYm9vbCBzaG91bGRTeW5jaHJvbml6ZVdyYXBwZXJzKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oaXRlbUluZGV4IDwgbV92YWx1ZXMtPnNpemUoKSk7Ci0KLSAgICAgICAgbV92YWx1ZXMt
PnJlbW92ZShpdGVtSW5kZXgpOwotCi0gICAgICAgIGlmIChzaG91bGRTeW5jaHJvbml6ZVdyYXBw
ZXJzKQotICAgICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgfQotCi0gICAgLy8gU1ZHTGlz
dCBBUEkKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbGVhcigpOwotCi0gICAgRXhjZXB0aW9uT3I8
UHRyTGlzdEl0ZW1UeXBlPiBpbml0aWFsaXplKFB0ckxpc3RJdGVtVHlwZSBuZXdJdGVtKQotICAg
IHsKLSAgICAgICAgLy8gTm90IHNwZWNpZmllZCwgYnV0IEZGL09wZXJhIGRvIGl0IHRoaXMgd2F5
LCBhbmQgaXQncyBqdXN0IHNhbmUuCi0gICAgICAgIGlmICghbmV3SXRlbSkKLSAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTVkdFeGNlcHRpb246OlNWR19XUk9OR19UWVBFX0VSUiB9Owot
Ci0gICAgICAgIGNsZWFyQ29udGV4dEFuZFJvbGVzKCk7Ci0gICAgICAgIHJldHVybiBCYXNlOjpp
bml0aWFsaXplVmFsdWVzKG5ld0l0ZW0pOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPFB0ckxp
c3RJdGVtVHlwZT4gZ2V0SXRlbSh1bnNpZ25lZCBpbmRleCk7Ci0KLSAgICBFeGNlcHRpb25PcjxQ
dHJMaXN0SXRlbVR5cGU+IGluc2VydEl0ZW1CZWZvcmUoUHRyTGlzdEl0ZW1UeXBlIG5ld0l0ZW0s
IHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgLy8gTm90IHNwZWNpZmllZCwgYnV0IEZG
L09wZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBqdXN0IHNhbmUuCi0gICAgICAgIGlmICgh
bmV3SXRlbSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTVkdFeGNlcHRpb246OlNW
R19XUk9OR19UWVBFX0VSUiB9OwotCi0gICAgICAgIHJldHVybiBCYXNlOjppbnNlcnRJdGVtQmVm
b3JlVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxQdHJM
aXN0SXRlbVR5cGU+IHJlcGxhY2VJdGVtKFB0ckxpc3RJdGVtVHlwZSwgdW5zaWduZWQgaW5kZXgp
OwotCi0gICAgRXhjZXB0aW9uT3I8UHRyTGlzdEl0ZW1UeXBlPiByZW1vdmVJdGVtKHVuc2lnbmVk
IGluZGV4KTsKLQotICAgIEV4Y2VwdGlvbk9yPFB0ckxpc3RJdGVtVHlwZT4gYXBwZW5kSXRlbShQ
dHJMaXN0SXRlbVR5cGUgbmV3SXRlbSkKLSAgICB7Ci0gICAgICAgIC8vIE5vdCBzcGVjaWZpZWQs
IGJ1dCBGRi9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgotICAgICAg
ICBpZiAoIW5ld0l0ZW0pCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0
aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlIgfTsKLQotICAgICAgICByZXR1cm4gQmFzZTo6YXBwZW5k
SXRlbVZhbHVlcyhuZXdJdGVtKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZHUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBhbmltYXRlZFBy
b3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUGF0aFNlZ1JvbGUgcGF0aFNlZ1JvbGUs
IFNWR1BhdGhTZWdMaXN0JiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQotICAg
ICAgICA6IFNWR0xpc3RQcm9wZXJ0eTxTVkdQYXRoU2VnTGlzdD4ocm9sZSwgdmFsdWVzLCAmd3Jh
cHBlcnMpCi0gICAgICAgICwgbV9hbmltYXRlZFByb3BlcnR5KGFuaW1hdGVkUHJvcGVydHkpCi0g
ICAgICAgICwgbV9wYXRoU2VnUm9sZShwYXRoU2VnUm9sZSkKLSAgICB7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB+U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYoKQotICAgIHsKLSAgICAgICAg
aWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eSkKLSAgICAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+
cHJvcGVydHlXaWxsQmVEZWxldGVkKCp0aGlzKTsKLSAgICB9Ci0KLSAgICBTVkdQYXRoRWxlbWVu
dCogY29udGV4dEVsZW1lbnQoKSBjb25zdDsKLQotICAgIHZvaWQgY2xlYXJDb250ZXh0QW5kUm9s
ZXMoKTsKLQotICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKLQotICAgIGJvb2wgaXNSZWFkT25seSgp
IGNvbnN0IGZpbmFsCi0gICAgewotICAgICAgICBpZiAobV9yb2xlID09IEFuaW1WYWxSb2xlKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHkg
JiYgbV9hbmltYXRlZFByb3BlcnR5LT5pc1JlYWRPbmx5KCkpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHZvaWQgY29tbWl0Q2hh
bmdlKCkgZmluYWwKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAgIG1f
dmFsdWVzLT5jb21taXRDaGFuZ2UobV9hbmltYXRlZFByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgp
LCBMaXN0TW9kaWZpY2F0aW9uVW5rbm93bik7Ci0gICAgfQotCi0gICAgdm9pZCBjb21taXRDaGFu
Z2UoTGlzdE1vZGlmaWNhdGlvbiBsaXN0TW9kaWZpY2F0aW9uKSBmaW5hbAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICAgICAgbV92YWx1ZXMtPmNvbW1pdENoYW5nZShtX2Fu
aW1hdGVkUHJvcGVydHktPmNvbnRleHRFbGVtZW50KCksIGxpc3RNb2RpZmljYXRpb24pOwotICAg
IH0KLQotICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBMaXN0SXRl
bVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVkKiBpbmRleFRvTW9kaWZ5KSBmaW5hbDsKLSAgICBib29s
IHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihSZWY8TGlzdEl0ZW1UZWFyT2ZmPiYsIHVu
c2lnbmVkKikgZmluYWwKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPEFuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZj4gbV9hbmltYXRlZFByb3BlcnR5OwotICAgIFNWR1BhdGhTZWdS
b2xlIG1fcGF0aFNlZ1JvbGU7Ci19OwotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODc3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw5ICs0Miw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFVzZWQgZm9y
IGNoaWxkIHR5cGVzIChiYXNlVmFsL2FuaW1WYWwpIG9mIGEgU1ZHQW5pbWF0ZWQqIHByb3BlcnR5
IChmb3IgZXhhbXBsZTogU1ZHQW5pbWF0ZWRMZW5ndGg6OmJhc2VWYWwoKSkuCiAgICAgLy8gQWxz
byB1c2VkIGZvciBsaXN0IHRlYXIgb2ZmcyAoZm9yIGV4YW1wbGU6IHRleHQueC5iYXNlVmFsLmdl
dEl0ZW0oMCkpLgotICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVy
dHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUm
IHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZh
bHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWxmKGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNM
aXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlU
ZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE4ICsyMywyMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4gY2xhc3MgU1ZHU3Rh
dGljTGlzdFByb3BlcnR5VGVhck9mZiBmaW5hbCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHk8UHJv
cGVydHlUeXBlPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+IAorY2xhc3MgU1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHk8UHJvcGVy
dHlUeXBlPiB7CiBwdWJsaWM6CisgICAgdXNpbmcgU2VsZiA9IFNWR1N0YXRpY0xpc3RQcm9wZXJ0
eVRlYXJPZmY8UHJvcGVydHlUeXBlPjsKICAgICB1c2luZyBCYXNlID0gU1ZHTGlzdFByb3BlcnR5
PFByb3BlcnR5VHlwZT47CisKICAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBTVkdQ
cm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVR5cGU7CiAgICAgdXNpbmcgTGlz
dEl0ZW1UZWFyT2ZmID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6
TGlzdEl0ZW1UZWFyT2ZmOwogCiAgICAgdXNpbmcgQmFzZTo6bV9yb2xlOwogICAgIHVzaW5nIEJh
c2U6Om1fdmFsdWVzOwogCi0gICAgc3RhdGljIFJlZjxTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFy
T2ZmPFByb3BlcnR5VHlwZT4+IGNyZWF0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgUHJv
cGVydHlUeXBlJiB2YWx1ZXMpCisgICAgc3RhdGljIFJlZjxTZWxmPiBjcmVhdGUoU1ZHRWxlbWVu
dCYgY29udGV4dEVsZW1lbnQsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0
RWxlbWVudCwgdmFsdWVzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYoY29u
dGV4dEVsZW1lbnQsIHZhbHVlcykpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNs
ZWFyKCkKQEAgLTcyLDkgKzc1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQmFzZTo6YXBw
ZW5kSXRlbVZhbHVlcyhuZXdJdGVtKTsKICAgICB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAg
ICAgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZihTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVu
dCwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCi0gICAgICAgIDogU1ZHTGlzdFByb3BlcnR5PFByb3Bl
cnR5VHlwZT4oVW5kZWZpbmVkUm9sZSwgdmFsdWVzLCBudWxscHRyKQorICAgICAgICA6IEJhc2Uo
VW5kZWZpbmVkUm9sZSwgdmFsdWVzLCBudWxscHRyKQogICAgICAgICAsIG1fY29udGV4dEVsZW1l
bnQoY29udGV4dEVsZW1lbnQpCiAgICAgewogICAgIH0KQEAgLTg3LDcgKzkwLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3ZhbHVlcyk7Ci0gICAgICAgIG1fdmFsdWVzLT5jb21taXRDaGFuZ2UobV9jb250ZXh0RWxl
bWVudC5wdHIoKSk7CisgICAgICAgIG1fdmFsdWVzLT5jb21taXRDaGFuZ2UobV9jb250ZXh0RWxl
bWVudCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVt
VmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiwgdW5zaWduZWQqKQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2Zm
LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTYg
QEAgcHVibGljOgogICAgIC8vIChmb3IgZXhhbXBsZTogU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFRy
YW5zbGF0ZSkuCiAgICAgc3RhdGljIFJlZjxTZWxmPiBjcmVhdGUoQ29udGV4dEVsZW1lbnQmIGNv
bnRleHRFbGVtZW50LCBQcm9wZXJ0eVR5cGUmIHZhbHVlLCBVcGRhdGVNZXRob2QgdXBkYXRlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VsZigmY29udGV4dEVsZW1lbnQs
IHZhbHVlLCB1cGRhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VsZihjb250
ZXh0RWxlbWVudCwgdmFsdWUsIHVwZGF0ZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBj
b21taXRDaGFuZ2UoKSB7IChtX2NvbnRleHRFbGVtZW50LmdldCgpLT4qbV91cGRhdGUpKCk7IH0K
IAogcHJpdmF0ZToKLSAgICBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYoQ29udGV4dEVsZW1lbnQq
IGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0eVR5cGUmIHZhbHVlLCBVcGRhdGVNZXRob2QgdXBkYXRl
KQotICAgICAgICA6IFByb3BlcnR5VGVhck9mZigwLCBVbmRlZmluZWRSb2xlLCB2YWx1ZSkKKyAg
ICBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYoQ29udGV4dEVsZW1lbnQmIGNvbnRleHRFbGVtZW50
LCBQcm9wZXJ0eVR5cGUmIHZhbHVlLCBVcGRhdGVNZXRob2QgdXBkYXRlKQorICAgICAgICA6IFBy
b3BlcnR5VGVhck9mZihVbmRlZmluZWRSb2xlLCB2YWx1ZSkKICAgICAgICAgLCBtX3VwZGF0ZSh1
cGRhdGUpCi0gICAgICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKKyAgICAg
ICAgLCBtX2NvbnRleHRFbGVtZW50KCZjb250ZXh0RWxlbWVudCkKICAgICB7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdUcmFuc2Zvcm1MaXN0UHJvcGVy
dHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFy
T2ZmLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNs
dWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
U1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZiBmaW5hbCA6IHB1YmxpYyBTVkdMaXN0UHJv
cGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3Q+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8
U1ZHVHJhbnNmb3JtTGlzdD47Ci0gICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKLQotICAgIHN0YXRpYyBSZWY8
U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0Pj4gY3JlYXRlKEFuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJv
bGUsIFNWR1RyYW5zZm9ybUxpc3QmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMp
Ci0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYoYW5pbWF0ZWRQ
cm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykpOwotICAgIH0KLQotICAgIEV4Y2VwdGlv
bk9yPFJlZjxTVkdUcmFuc2Zvcm0+PiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01h
dHJpeCYgbWF0cml4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICAgICAg
cmV0dXJuIG1fdmFsdWVzLT5jcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7Ci0g
ICAgfQotCi0gICAgRXhjZXB0aW9uT3I8UmVmUHRyPFNWR1RyYW5zZm9ybT4+IGNvbnNvbGlkYXRl
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAgIEFTU0VSVChtX3dy
YXBwZXJzKTsKLQotICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOwotICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCkpOwotCi0gICAgICAgIEFTU0VSVChtX3ZhbHVlcy0+c2l6ZSgpID09IG1fd3JhcHBlcnMt
PnNpemUoKSk7Ci0KLSAgICAgICAgLy8gU3BlYzogSWYgdGhlIGxpc3Qgd2FzIGVtcHR5LCB0aGVu
IGEgdmFsdWUgb2YgbnVsbCBpcyByZXR1cm5lZC4KLSAgICAgICAgaWYgKG1fdmFsdWVzLT5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBkZXRhY2hMaXN0
V3JhcHBlcnMoMCk7Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiB3cmFw
cGVyID0gbV92YWx1ZXMtPmNvbnNvbGlkYXRlKCk7Ci0gICAgICAgIG1fd3JhcHBlcnMtPmFwcGVu
ZCh3cmFwcGVyLmdldCgpKTsKLQotICAgICAgICBBU1NFUlQobV92YWx1ZXMtPnNpemUoKSA9PSBt
X3dyYXBwZXJzLT5zaXplKCkpOwotICAgICAgICByZXR1cm4gV1RGTW92ZSh3cmFwcGVyKTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZihBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9s
ZSByb2xlLCBTVkdUcmFuc2Zvcm1MaXN0JiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBw
ZXJzKQotICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4o
YW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykKLSAgICB7Ci0gICAgfQot
fTsKLQotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294906</attachid>
            <date>2016-11-15 17:24:40 -0800</date>
            <delta_ts>2016-11-17 15:46:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164790-20161115172437.patch</filename>
            <type>text/plain</type>
            <size>296957</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1OSBAQAorMjAxNi0xMS0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtTVkddIE1vdmluZyBtb3JlIHNwZWNp
YWwgY2FzaW5nIG9mIFNWRyBvdXQgb2YgdGhlIGJpbmRpbmdzIC0gU1ZHIGxpc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIE1ha2UgU1ZHTGVuZ3Ro
TGlzdCwgU1ZHTnVtYmVyTGlzdCwgU1ZHUG9pbnRMaXN0LCBTVkdTdHJpbmdMaXN0LCBTVkdQYXRo
U2VnTGlzdCBhbmQgU1ZHVHJhbnNmb3JtTGlzdAorICAgICAgICAgIHJlYWwgY2xhc3NlcyBhbmQg
c3RvcCBzcGVjaWFsIGNhc2luZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuIFRoaXMg
CisgICAgICAgICAgcmVtb3ZlcyB0aGUgcmVtYWluaW5nIFNWRyBzcGVjaWFsaXphdGlvbnMgZm9y
IHRlYXIgb2ZmcyBmcm9tIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisgICAgICAgIC0gUmVuYW1l
ZCBleGlzdGluZyBTVkdMZW5ndGhMaXN0LCBTVkdOdW1iZXJMaXN0LCBTVkdQb2ludExpc3QsIFNW
R1N0cmluZ0xpc3QsIFNWR1BhdGhTZWdMaXN0LCAKKyAgICAgICAgICBTVkdQYXRoU2VnTGlzdCBh
bmQgU1ZHVHJhbnNmb3JtTGlzdCB0byBTVkc8VHlwZT5MaXN0VmFsdWVzLCB0byBtYWtlIHdheSBm
b3IgdGhlIG5ldyBjbGFzc2VzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdB
bGxJbk9uZS5jcHA6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIFJlbW92ZSBTVkcgdGVhciBvZmYgc3BlY2lmaWMg
Y29kZSEKKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgI2lu
Y2x1ZGVzLgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVQYXRoRnJvbVBvbHlnb25FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnVwZGF0ZVBhdGhGcm9tUG9seWxpbmVFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp1cGRhdGVDaGFyYWN0ZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlcjo6ZmlsbENoYXJhY3RlckRhdGFNYXApOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlz
dGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaDoKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVy
TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFBhdGguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFz
ZVZhbCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6YWRk
QW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlzdEFu
aW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVkVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZUxlbmd0aExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpjcmVh
dGVOdW1iZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
UG9pbnRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJh
bnNmb3JtTGlzdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGhMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFR5cGU6OnBvaW50TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6
OnRyYW5zZm9ybUxpc3QpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBvaW50c0xpc3RGcm9tU1ZHRGF0YSk6CisgICAgICAgICogc3Zn
L1NWR1BhcnNlclV0aWxpdGllcy5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6
CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhT
ZWdMaXN0QnVpbGRlci5jcHA6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5o
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHA6CisgICAgICAgICogc3Zn
L1NWR1BhdGhTZWdMaXN0U291cmNlLmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRo
U2VnTGlzdFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTVkdQYXRoQnl0ZVN0cmVh
bUZyb21TVkdQYXRoU2VnKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXNGcm9tQnl0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFN0cmluZ0Zyb21T
VkdQYXRoU2VnTGlzdFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZFNWR1BhdGhCeXRl
U3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpidWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR1BhdGhVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YW5pbWF0ZWRQb2ludHMpOgorICAgICAgICAqIHN2
Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBv
aW50TGlzdCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKToKKyAgICAgICAg
KiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5oOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6dmlld1RhcmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAq
IHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5pZGw6
CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zp
ZXdTcGVjOjp0cmFuc2Zvcm1TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6
OnRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6bG9va3VwT3JDcmVh
dGVUcmFuc2Zvcm1XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpyZXNl
dCk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmg6CisgICAgICAgIFVwZGF0ZSBmb3IgbmFt
ZSBjaGFuZ2VzLgorICAgICAgICAKKyAgICAgICAgKiBzdmcvU1ZHQW5nbGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuZ2xlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6
OlNWR0FuZ2xlKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OlNWR0xl
bmd0aCk6CisgICAgICAgICogc3ZnL1NWR01hdHJpeC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpTVkdNYXRyaXgp
OgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR051bWJl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR051bWJlcjo6U1ZHTnVtYmVyKToKKyAg
ICAgICAgKiBzdmcvU1ZHUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OlNWR1BvaW50KToKKyAgICAgICAgKiBz
dmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW86OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8pOgorICAgICAgICAqIHN2Zy9TVkdSZWN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVjdDo6U1ZHUmVjdCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUZWFyT2Zm
OjpjcmVhdGUpOgorICAgICAgICBQYXNzIHRoZSBTVkdBbmltYXRlZFByb3BlcnR5IHBhcmFtZXRl
ciBieSByZWZlcmVuY2UuCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnJlcXVpcmVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzeXN0ZW1MYW5n
dWFnZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVt
ZW50OjpyZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1l
bnQ6OnJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVt
ZW50OjpzeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVu
dDo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1l
bnQ6OnJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hc2tFbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R01hc2tFbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OnN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdHRlcm5FbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdHRlcm5FbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGVzdHM6OnN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVGVzdHMuaWRsOgorICAgICAgICBNYWtlIFNWR1Rlc3RzIFNWR1N0cmluZ0xp
c3RzIHdvcmsgYnkgYWRkaW5nIGltcGxlbWVudGF0aW9ucyBvZiBmdW5jdGlvbnMKKyAgICAgICAg
b24gdGhlIFNWR0VsZW1lbnRzIHRoYXQgaW1wbGVtZW50IFNWR1Rlc3RzLCBwYXNzaW5nICp0aGlz
IGRvd24gdG8gU1ZHVGVzdHMuCisKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoTGlzdC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZH
TGVuZ3RoTGlzdC5pZGw6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOiBD
b3BpZWQgZnJvbSBzdmcvU1ZHTGVuZ3RoTGlzdC5jcHAuCisgICAgICAgICogc3ZnL1NWR0xlbmd0
aExpc3RWYWx1ZXMuaDogQ29waWVkIGZyb20gc3ZnL1NWR0xlbmd0aExpc3QuaC4KKyAgICAgICAg
UmVuYW1lIFNWR0xlbmd0aExpc3QgdG8gU1ZHTGVuZ3RoTGlzdFZhbHVlcyBhbmQgYWRkIGFuIGV4
cGxpY2l0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIHRoZSBTVkdMZW5ndGhMaXN0IGludGVy
ZmFjZSBpbmhlcml0aW5nIGZyb20gU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdMZW5ndGhMaXN0
VmFsdWVzPi4KKworICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzdmcvU1ZHTnVtYmVyTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0
VmFsdWVzLmNwcDogQ29waWVkIGZyb20gc3ZnL1NWR051bWJlckxpc3QuY3BwLgorICAgICAgICAq
IHN2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmg6IENvcGllZCBmcm9tIHN2Zy9TVkdOdW1iZXJMaXN0
LmguCisgICAgICAgIFJlbmFtZSBTVkdOdW1iZXJMaXN0IHRvIFNWR051bWJlckxpc3RWYWx1ZXMg
YW5kIGFkZCBhbiBleHBsaWNpdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICB0aGUgU1ZHTnVt
YmVyTGlzdCBpbnRlcmZhY2UgaW5oZXJpdGluZyBmcm9tIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8
U1ZHTnVtYmVyTGlzdFZhbHVlcz4uCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRo
U2VnTGlzdFZhbHVlcy5jcHA6IENvcGllZCBmcm9tIHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHAuCisg
ICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmg6IENvcGllZCBmcm9tIHN2Zy9TVkdQ
YXRoU2VnTGlzdC5oLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOiBSZW1vdmVkLgorICAgICAgICBSZW5hbWUgU1ZH
UGF0aFNlZ0xpc3QgdG8gU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMgYW5kIGFkZCBhbiBleHBsaWNpdCBp
bXBsZW1lbnRhdGlvbiBvZgorICAgICAgICB0aGUgU1ZHUGF0aFNlZ0xpc3QgaW50ZXJmYWNlIGlu
aGVyaXRpbmcgZnJvbSBTVkdMaXN0UHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3RWYWx1ZXM+LgorCisg
ICAgICAgICogc3ZnL1NWR1BvaW50TGlzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NW
R1BvaW50TGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwOiBDb3Bp
ZWQgZnJvbSBzdmcvU1ZHUG9pbnRMaXN0LmNwcC4KKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0
VmFsdWVzLmg6IENvcGllZCBmcm9tIHN2Zy9TVkdQb2ludExpc3QuaC4KKyAgICAgICAgUmVuYW1l
IFNWR1BvaW50TGlzdCB0byBTVkdQb2ludExpc3RWYWx1ZXMgYW5kIGFkZCBhbiBleHBsaWNpdCBp
bXBsZW1lbnRhdGlvbiBvZgorICAgICAgICB0aGUgU1ZHUG9pbnRMaXN0IGludGVyZmFjZSBpbmhl
cml0aW5nIGZyb20gU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3RWYWx1ZXM+Lgor
CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2
Zy9TVkdTdHJpbmdMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3Bw
OiBDb3BpZWQgZnJvbSBzdmcvU1ZHU3RyaW5nTGlzdC5jcHAuCisgICAgICAgICogc3ZnL1NWR1N0
cmluZ0xpc3RWYWx1ZXMuaDogQ29waWVkIGZyb20gc3ZnL1NWR1N0cmluZ0xpc3QuaC4KKyAgICAg
ICAgUmVuYW1lIFNWR1N0cmluZ0xpc3QgdG8gU1ZHU3RyaW5nTGlzdFZhbHVlcyBhbmQgYWRkIGFu
IGV4cGxpY2l0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIHRoZSBTVkdTdHJpbmdMaXN0IGlu
dGVyZmFjZSBpbmhlcml0aW5nIGZyb20gU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdT
dHJpbmdMaXN0VmFsdWVzPi4KKworICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5oOgorICAgICAgICAqIHN2
Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcDogQ29waWVkIGZyb20gc3ZnL1NWR1RyYW5zZm9y
bUxpc3QuY3BwLgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmg6IENvcGll
ZCBmcm9tIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmguCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oOiBSZW1vdmVkLgorICAgICAgICBSZW5h
bWUgU1ZHVHJhbnNmb3JtTGlzdCB0byBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIGFuZCBhZGQgYW4g
ZXhwbGljaXQgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgdGhlIFNWR1RyYW5zZm9ybUxpc3Qg
aW50ZXJmYWNlIGluaGVyaXRpbmcgZnJvbSBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXM+LgorCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRM
aXN0UHJvcGVydHlUZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICBDb252
ZXJ0IHRvIHJldHVybiBmdWxseSBzcGVjaWFsaXplZCB0eXBlcyBmb3IgYmFzZVZhbCBhbmQgYW5p
bVZhbCwgcmVtb3ZpbmcgbWFueSB1bm5lY2Vzc2FyeSBjYXN0cworICAgICAgICBhcm91bmQgdGhl
IGNvZGViYXNlLiBBbHNvIGFkZCBzb21lIHVzZXMgb2YgUmVmLgorCisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJv
cGVydHk6OmdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
aXN0UHJvcGVydHk6OnJlbW92ZUl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmY6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6flNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYpOgor
ICAgICAgICBTdG9yZSB0aGUgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmIGFzIGEgUmVmLCBh
bmQgcGFzcyBpdCBhcm91bmQgYnkgcmVmZXJlbmNlLgorCisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmg6CisgICAgICAgIFVwZGF0ZSB0byB0YWtlIHRo
ZSBDb250ZXh0RWxlbWVudCBieSByZWZlcmVuY2UuCisKIDIwMTYtMTEtMTUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggaU9TIEFQSSB0
ZXN0IGFzc2VydGlvbiBhZnRlciByMjA4NTM0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTI3NjgsNyArMjc2OCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBzdmcv
U1ZHSW1hZ2VMb2FkZXIuY3BwCiAgICAgc3ZnL1NWR0xhbmdTcGFjZS5jcHAKICAgICBzdmcvU1ZH
TGVuZ3RoQ29udGV4dC5jcHAKLSAgICBzdmcvU1ZHTGVuZ3RoTGlzdC5jcHAKKyAgICBzdmcvU1ZH
TGVuZ3RoTGlzdFZhbHVlcy5jcHAKICAgICBzdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCiAgICAgc3Zn
L1NWR0xpbmVFbGVtZW50LmNwcAogICAgIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
CkBAIC0yNzc4LDcgKzI3NzgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR01h
c2tFbGVtZW50LmNwcAogICAgIHN2Zy9TVkdNZXRhZGF0YUVsZW1lbnQuY3BwCiAgICAgc3ZnL1NW
R01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwCi0gICAgc3ZnL1NWR051bWJlckxpc3QuY3BwCisgICAg
c3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuY3BwCiAgICAgc3ZnL1NWR1BhaW50LmNwcAogICAgIHN2
Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCiAgICAgc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApAQCAt
Mjc5MCwxMiArMjc5MCwxMyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR1BhdGhT
ZWdMaXN0LmNwcAogICAgIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCiAgICAgc3ZnL1NW
R1BhdGhTZWdMaXN0U291cmNlLmNwcAorICAgIHN2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAK
ICAgICBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwCiAgICAgc3ZnL1NWR1BhdGhTdHJpbmdT
b3VyY2UuY3BwCiAgICAgc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwCiAgICAg
c3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCiAgICAgc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAot
ICAgIHN2Zy9TVkdQb2ludExpc3QuY3BwCisgICAgc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAK
ICAgICBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNw
cAogICAgIHN2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCkBAIC0yODA2LDcgKzI4MDcsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCiAgICAgc3Zn
L1NWR1NldEVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAotICAgIHN2Zy9T
VkdTdHJpbmdMaXN0LmNwcAorICAgIHN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAogICAgIHN2
Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCiAgICAg
c3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCkBAIC0yODIxLDcgKzI4MjIsNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCiAgICAgc3ZnL1NW
R1RyYW5zZm9ybS5jcHAKICAgICBzdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwCi0gICAgc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuY3BwCisgICAgc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3Bw
CiAgICAgc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmNwcAogICAgIHN2Zy9TVkdUcmFuc2Zvcm1hYmxl
LmNwcAogICAgIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCkBAIC0yODQ2LDcgKzI4NDcsNiBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5LmNwcAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3Bw
Ci0gICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCiAg
ICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmNwcAogCiAgICAgd29ya2Vycy9BYnN0
cmFjdFdvcmtlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzUy
LDcgKzM1Miw2IEBACiAJCTA4M0RBRUE4MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDgzREFFQTQwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5jcHAgKi87IH07CiAJCTA4M0RBRUE5MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4M0RBRUE1MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuaCAqLzsgfTsKIAkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8qIEZvbnRN
ZXRyaWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODQ1NjgwNzEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJpY3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwODRBMDgyOTEyOEQ3ODY3MDAyREIx
RjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NEEwODI4MTI4RDc4NjcwMDJEQjFGMSAvKiBT
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwODREQjU5QjEyODAwOEND
MDAyQTZENjQgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NERCNTlBMTI4MDA4Q0MwMDJBNkQ2NCAvKiBTVkdBbmlt
YXRlZFN0cmluZy5oICovOyB9OwogCQkwODUyNUU2MzEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4NTI1RTYyMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdBbmltYXRl
ZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA4NTRCMDE1MTI1NUU0RTYwMEI5Q0REMCAvKiBSZW5kZXJTVkdJ
bmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NTRCMDAzMTI1NUU0RTYwMEI5Q0REMCAvKiBSZW5kZXJTVkdJbmxpbmUuaCAqLzsgfTsKQEAgLTM5
OSw3ICszOTgsNiBAQAogCQkwOEIzNUIxMzEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0ZWRO
dW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
QjM1QjEyMTI3QjZBN0MwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlci5oICovOyB9OwogCQkw
OEIzNUIxNzEyN0I2QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEIzNUIxNjEyN0I2QTg4
MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggKi87IH07CiAJCTA4QjVGMjU1MTNC
NUZGRjIwMDI5NTlFQyAvKiBTVkdBbmltYXRlZFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2Mzk1MTMxM0I1RkU1NzAwQkIzNDREIC8qIFNW
R0FuaW1hdGVkUGF0aC5jcHAgKi87IH07Ci0JCTA4QzcxMzZFMTI4OTU2QTMwMDFCMTA3RSAvKiBT
VkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM3MTM2RDEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJh
bnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwOEM3QTJDNzEwREM3NDYyMDAy
RDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUU5MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdO
YW1lcy5oICovOyB9OwogCQkwOEM4NTlDMDEyNzQ1NzU0MDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRS
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM4
NTlCRjEyNzQ1NzUzMDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggKi87IH07CiAJCTA4Qzky
NTE5MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDOTI1MTcwRkNDN0M0QTAwNDgwREVDIC8q
IEZpbHRlckVmZmVjdC5jcHAgKi87IH07CkBAIC00MTksNyArNDE3LDYgQEAKIAkJMDhGQjE3QzEx
M0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQjE3QzAxM0JDN0U5MTAw
MDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwICovOyB9OwogCQkwOEZCM0Y4
NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQjNGODMxM0JDNzU0QzAw
OTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEZFMEJDNTEyN0UyQUMxMDAwQzRGQjUg
LyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZFMEJDNDEyN0UyQUMxMDAwQzRGQjUgLyogU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi87IH07Ci0JCTA4RkYxMDIwMTI5NTBGNUEw
MEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZGMTAxRjEyOTUwRjU5MDBGMDAy
NzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovOyB9OwogCQkwQTQ4NDQ5
OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0
TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBBRkRBQzNEMTBGNTQ0OEMwMEUxRjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFGREFDM0MxMEY1NDQ4QzAw
RTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEI4QzU2RDQwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFk
ZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovOyB9OwpAQCAt
Mjg0NSw2ICsyODQyLDE1IEBACiAJCTdDMkJERDNEMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUds
b2JhbE9iamVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MyQkREM0IxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5jcHAgKi87IH07CiAJCTdDMkJERDNFMTdDN0Y5OEMwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9i
amVjdFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLzsg
fTsKIAkJN0MzM0YzNjIxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMz
RjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLzsg
fTsKKwkJN0MzOUMzNjQxRERBODY0QzAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjIx
RERBODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwICovOyB9OworCQk3QzM5
QzM2NTFEREE4NjUyMDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjMxRERBODY0OTAwRkVG
QjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCAqLzsgfTsKKwkJN0MzOUMzNzExRERCQjhBRTAw
RkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzcwMUREQkE0NDAwMEZFRkIyOSAvKiBTVkdQYXRoU2Vn
TGlzdC5jcHAgKi87IH07CisJCTdDMzlDMzcyMUREQkI4QjMwMEZFRkIyOSAvKiBTVkdQYXRoU2Vn
TGlzdFZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzM5QzM2RTFEREJBM0UwMDBGRUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3Bw
ICovOyB9OworCQk3QzM5QzM3MzFEREJCOEMxMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5
QzM2ODFEREI4NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAgKi87IH07CisJ
CTdDMzlDMzc0MUREQkI4RDMwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzZDMURE
QjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcCAqLzsgfTsKKwkJN0Mz
OUMzNzUxRERCQjhERDAwRkVGQjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5QzM2QTFEREI4NzFDMDBG
RUZCMjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcCAqLzsgfTsKKwkJN0MzOUMzNzYxRERCQjkw
RDAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjYxRERCODJDRjAwRkVGQjI5IC8qIFNW
R1N0cmluZ0xpc3RWYWx1ZXMuY3BwICovOyB9OworCQk3QzM5QzM3NzFEREJFMTcwMDBGRUZCMjkg
LyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MzOUMzNjcxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RW
YWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYz
Qjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJE
IC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VI
YW5kbGVyLmNwcCAqLzsgfTsKIAkJN0MzQjc5NzIxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNz
YWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MzQjc5NzAxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NjIzLDcgKzQ2
MjksNiBAQAogCQlCMjIyN0EyRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg5NzBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50LmggKi87IH07CiAJCUIyMjI3QTJGMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdMYW5nU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4OTkwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xh
bmdTcGFjZS5jcHAgKi87IH07CiAJCUIyMjI3QTMwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMYW5n
U3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3ODlBMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMYW5nU3BhY2UuaCAqLzsgfTsKLQkJQjIyMjdB
MzUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4OUYwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR0xlbmd0aExpc3QuY3BwICovOyB9OwogCQlCMjIyN0EzNjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHTGVuZ3RoTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc4QTAwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyN0EzODBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEEyMEQwMEJGMjAwMDcxQjc4
MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0EzOTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhBMzBEMDBCRjIwMDA3MUI3ODIg
LyogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmggKi87IH07CkBAIC00NjM5LDcgKzQ2NDQsNiBA
QAogCQlCMjIyN0E0QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCNTBEMDBC
RjIwMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmggKi87IH07CiAJCUIyMjI3QTREMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QjcwRDAwQkYyMDAwNzFCNzgyIC8qIFNW
R01QYXRoRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTRFMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdNUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3OEI4MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuaCAqLzsg
fTsKLQkJQjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QkEwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3BwICovOyB9OwogCQlCMjIyN0E1MTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QkIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxp
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
MjIyN0E1MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QkQwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR1BhaW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBNTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Bh
aW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIy
NzhCRTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGFpbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDY1NSwxMSArNDY1OSw5IEBACiAJCUIyMjI3
QTZEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4RDcwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljLmggKi87IH07CiAJCUIyMjI3
QTc4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4RTIwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsLmggKi87IH07CiAJCUIyMjI3
QTdEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEU3MEQwMEJGMjAw
MDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaCAqLzsgfTsKLQkJQjIyMjdBODAw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEVBMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdQYXRoU2VnTGlzdC5jcHAgKi87IH07CiAJCUIyMjI3QTgxMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc4RUIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggKi87IH07
CiAJCUIyMjI3QTg3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGMTBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0E4ODBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEYyMEQwMEJGMjEwMDcxQjc4MiAvKiBT
VkdQYXR0ZXJuRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0E4QjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3OEY1MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuY3BwICovOyB9
OwogCQlCMjIyN0E4QzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGNjBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggKi87IH07CiAJCUIyMjI3QThFMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzhGODBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQu
Y3BwICovOyB9OwogCQlCMjIyN0E4RjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEY5
MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5oICovOyB9OwpAQCAtNDY3OSw3ICs0
NjgxLDYgQEAKIAkJQjIyMjdBQTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NldEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTEwMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdTZXRFbGVtZW50LmggKi87IH07CiAJCUIyMjI3QUE4MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3Rv
cEVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3Rv
cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3OTEzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oICovOyB9OwotCQlC
MjIyN0FBQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxNTBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3RyaW5nTGlzdC5jcHAgKi87IH07CiAJCUIyMjI3QUFDMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjIyNzkxNjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3QUI1
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdHcmFwaGljc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MUYwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR0dyYXBoaWNzRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QUI2MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIwMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdHcmFwaGlj
c0VsZW1lbnQuaCAqLzsgfTsKQEAgLTQ3MDgsNyArNDcwOSw2IEBACiAJCUIyMjI3QURBMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0NDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJh
bnNmb3JtYWJsZS5oICovOyB9OwogCQlCMjIyN0FEQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJh
bnNmb3JtRGlzdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc5NDYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNl
LmNwcCAqLzsgfTsKIAkJQjIyMjdBREQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURp
c3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzk0NzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCAqLzsgfTsK
LQkJQjIyMjdBREUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NDgwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuY3BwICovOyB9OwogCQlCMjIyN0FERjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NDkwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1Ry
YW5zZm9ybUxpc3QuaCAqLzsgfTsKIAkJQjIyMjdBRTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RS
ZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyMjI3OTRCMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5jcHAgKi87IH07
CiAJCUIyMjI3QUUyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NEMwRDAwQkYyMTAw
NzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmggKi87IH07CkBAIC02ODE0LDcgKzY4MTQsNiBAQAog
CQlGREY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMjEzQUMy
MURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi87IH07CiAJCUZFMEQ4NEU5
MTA0ODQzNDgwMDFBMTc5RSAvKiBXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDg0RTgxMDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUw
RDg0RUIxMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDg0RUExMDQ4NDM2RTAwMUExNzlFIC8qIFdl
YkV2ZW50Lm1tICovOyB9OwotCQlGRTMzNzFBMjE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VC
YXNpY1R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzNkZEMTUxNkM3
ODI2NTAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hh
bmdlVmVyc2lvbkRhdGEuaCAqLzsgfTsKIAkJRkUzNkZEMTYxNkM3ODI2NTAwRjg4N0MxIC8qIFNR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzZGRDEyMTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2Fj
dGlvblN0YXRlTWFjaGluZS5jcHAgKi87IH07CiAJCUZFMzZGRDE3MTZDNzgyNjUwMEY4ODdDMSAv
KiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNkZEMTMxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5z
YWN0aW9uU3RhdGVNYWNoaW5lLmggKi87IH07CkBAIC03MzA1LDcgKzczMDQsNiBAQAogCQkwODNE
QUVBNDBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4M0RBRUE1MEYwMUE3
RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NDU2ODA3MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250
TWV0cmljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250TWV0cmljcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwODRBMDgyODEyOEQ3ODY3MDAyREIxRjEg
LyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg0REI1OUExMjgwMDhDQzAwMkE2RDY0IC8qIFNWR0FuaW1hdGVk
U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkU3Ry
aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NTI1RTYyMTI3OEMwMDEwMEE4
NDc3OCAvKiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODU0QjAwMjEyNTVFNEU2MDBCOUNERDAgLyog
UmVuZGVyU1ZHSW5saW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclNWR0lubGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzYx
LDcgKzczNTksNiBAQAogCQkwOEE0ODQ3NjBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4QjM1QjEyMTI3QjZBN0MwMDUzMTRERCAvKiBT
VkdBbmltYXRlZE51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdB
bmltYXRlZE51bWJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEIzNUIxNjEy
N0I2QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwOEM3MTM2RDEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4Qzg1OUJGMTI3NDU3NTMwMEE1NzI4RCAvKiBTVkdBbmltYXRlZFJlY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRSZWN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJF
ZmZlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyRWZm
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhDOTI1MTgwRkNDN0M0QTAw
NDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGaWx0ZXJFZmZlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczODIsNyAr
NzM3OSw2IEBACiAJCTA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1By
b3BlcnR5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0F0
dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
OEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkUwQkM0MTI3RTJBQzEwMDBDNEZC
NSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4RkYxMDFGMTI5NTBGNTkwMEYwMDI3NiAvKiBTVkdQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwQUZEQUMzQzEwRjU0NDhDMDBFMUYzRDIgLyogUGx1Z2lu
Vmlld0Jhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luVmlld0Jh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI4QzU2RDMwRjI4NjI3RjAwMDUw
MkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRUUEhlYWRlck1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDI3MCw2ICsxMDI2NiwxOSBAQAogCQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01H
bG9iYWxPYmplY3RUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3RUYXNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBK
U0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0MzOUMzNjIxRERBODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzlDMzYzMUREQTg2
NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0MzOUMzNjYxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3RyaW5nTGlzdFZh
bHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzlDMzY3MUREQjgyQ0Yw
MEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR1N0cmluZ0xpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0MzOUMzNjgxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTnVtYmVyTGlzdFZhbHVl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMzlDMzY5MUREQjg2RDMwMEZF
RkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0MzOUMzNkExRERCODcxQzAwRkVGQjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQb2ludExpc3RWYWx1ZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5QzM2QjFEREI4NzFDMDBGRUZCMjkg
LyogU1ZHUG9pbnRMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR1BvaW50TGlzdFZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5
QzM2QzFEREI4QkIwMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzOUMzNkQxRERCOEJCMDAwRkVGQjI5
IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzM5QzM2RTFEREJBM0UwMDBGRUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aFNlZ0xpc3RWYWx1
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzM5QzM2RjFEREJBM0UwMDBG
RUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0MzOUMzNzAxRERCQTQ0MDAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhTZWdMaXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8qIENs
aXBib2FyZEFjY2Vzc1BvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Mz
Qjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJN
ZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzNTAsNyAr
MTIzNTksNiBAQAogCQlCMjIyNzg5OTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMYW5nU3BhY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzg5QTBEMDBCRjIwMDA3MUI3ODIg
LyogU1ZHTGFuZ1NwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdM
YW5nU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4OUUwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR0xlbmd0aC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0xl
bmd0aC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyMjI3ODlGMEQwMEJGMjAw
MDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdMZW5ndGhMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIyMjc4QTAwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xlbmd0aExpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjIyMjc4QTEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdMZW5ndGhMaXN0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4QTIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEyMzc0LDcgKzEyMzgyLDYgQEAKIAkJQjIyMjc4QjcwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR01QYXRoRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHTVBhdGhFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIy
Mjc4QjgwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTVBhdGhFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUIyMjI3OEI5MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdOdW1iZXIuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdOdW1iZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCMjIyNzhCQTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTnVtYmVyTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEJCMEQwMEJGMjAwMDcxQjc4MiAv
KiBTVkdOdW1iZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdO
dW1iZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEJDMEQwMEJG
MjAwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U1ZHTnVtYmVyTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEJE
MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYWludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHUGFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTI0MTEsNyArMTI0MTgsNiBAQAogCQlCMjIyNzhFNzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIyMjc4RTgwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFi
cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFi
cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEU5MEQwMEJGMjAwMDcx
Qjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlCMjIyNzhFQTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhTZWdMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4RUIwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQYXRoU2VnTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhF
QzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTVkdQYXRoU2VnTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyMjI3OEVGMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTW92ZXRvQWJzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHUGF0aFNlZ01vdmV0b0Ficy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMjQyMCw3ICsxMjQyNiw2IEBACiAJCUIyMjI3OEYyMEQwMEJG
MjEwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHUGF0dGVybkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjIyMjc4RjMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHUGF0dGVybkVsZW1lbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhGNDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdQb2ludC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUIyMjI3OEY1MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2ludExpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BvaW50TGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEY2MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdQb2ludExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1BvaW50TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhGNzBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U1ZHUG9pbnRMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4Rjgw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQb2x5RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMjQ1MSw3ICsxMjQ1Niw2IEBACiAJCUIyMjI3OTEyMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdG9wRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHU3RvcEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjIyNzkxMzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0b3BFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyMjI3OTE0MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR1N0b3BFbGVtZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjIyMjc5MTUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0
cmluZ0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1N0
cmluZ0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzkxNjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MjIyNzkxNzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNWR1N0cmluZ0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjIyNzkxRjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdHcmFwaGljc0VsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI0OTMsNyArMTI0OTcsNiBAQAog
CQlCMjIyNzk0NDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVHJhbnNmb3JtYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzk0NjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNm
b3JtRGlzdGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R1RyYW5zZm9ybURpc3RhbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIy
Mjc5NDcwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzk0ODBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJh
bnNmb3JtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
VHJhbnNmb3JtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTQ5
MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyMjI3OTRBMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHVHJhbnNmb3JtTGlzdC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTRCMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUUmVm
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVFJl
ZkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4MjYsNyArMTQ4
MjksNiBAQAogCQlGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxi
YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxs
YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTBEODRFODEwNDg0MzQ4MDAx
QTE3OUUgLyogV2ViRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwRDg0RUExMDQ4NDM2RTAw
MUExNzlFIC8qIFdlYkV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViRXZlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMzM3MUEw
MTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VCYXNpY1R5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFMzZGRDExMTZDNzgyNjQwMEY4ODdDMSAvKiBDaGFuZ2VWZXJzaW9uRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFuZ2VWZXJzaW9uRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM2RkQxMjE2Qzc4MjY0MDBGODg3QzEg
LyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTM2RkQxMzE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNh
Y3Rpb25TdGF0ZU1hY2hpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FM
VHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1MjkzLDggKzE1Mjk1LDYgQEAKIAkJCQkwODEwNzY0MzEyODI4NTU2MDA3QzYzQkEgLyogU1ZH
TGlzdFByb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBFMDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyog
U1ZHTWF0cml4VGVhck9mZi5oICovLAotCQkJCTA4RkYxMDFGMTI5NTBGNTkwMEYwMDI3NiAvKiBT
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi8sCi0JCQkJMDg0QTA4MjgxMjhENzg2
NzAwMkRCMUYxIC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg4
QTBFMDExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggKi8sCiAJCQkJQjU0M0I4NTYx
N0VCNzU4RjAwM0JFOTNBIC8qIFNWR1Byb3BlcnR5SW5mby5jcHAgKi8sCiAJCQkJMDgxREQ0OUIx
M0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5oICovLApAQCAtMTUzMDIsNyArMTUz
MDIsNiBAQAogCQkJCTA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0
cy5oICovLAogCQkJCTA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJv
cGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDgxM0E0RTkxMjg0MTMyNjAwOTkyNTExIC8qIFNWR1N0
YXRpY1Byb3BlcnR5VGVhck9mZi5oICovLAotCQkJCTA4QzcxMzZEMTI4OTU2QTMwMDFCMTA3RSAv
KiBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IHByb3BlcnRpZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjEwNDcsOSArMjEw
NDYsMTAgQEAKIAkJCQk3Q0U1OEQ1MTFERDdCMDkzMDAxMjg1NTIgLyogU1ZHTGVuZ3RoLmggKi8s
CiAJCQkJNzEzNDQ5NkIxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwICov
LAogCQkJCTcxMzQ0OTZDMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggKi8s
Ci0JCQkJQjIyMjc4OUYwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuY3BwICovLAog
CQkJCUIyMjI3OEEwMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggKi8sCiAJCQkJ
QjIyMjc4QTEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaWRsICovLAorCQkJCTdD
MzlDMzYyMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCAqLywKKwkJ
CQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oICovLAog
CQkJCTdDRTU4RDUyMUREN0IwOTMwMDEyODU1MiAvKiBTVkdMZW5ndGhWYWx1ZS5jcHAgKi8sCiAJ
CQkJN0NFNThENTMxREQ3QjA5MzAwMTI4NTUyIC8qIFNWR0xlbmd0aFZhbHVlLmggKi8sCiAJCQkJ
QjIyMjc4QTIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAg
Ki8sCkBAIC0yMTA4MCw5ICsyMTA4MCwxMCBAQAogCQkJCTQ0RDhEQTk4MTM5NTQ1QkUwMDMzN0I3
NSAvKiBTVkdNUGF0aEVsZW1lbnQuaWRsICovLAogCQkJCTdDRTU4RDRGMURENjlBMUUwMDEyODU1
MiAvKiBTVkdOdW1iZXIuaCAqLywKIAkJCQlCMjIyNzhCOTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZH
TnVtYmVyLmlkbCAqLywKLQkJCQlCMjIyNzhCQTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTnVtYmVy
TGlzdC5jcHAgKi8sCiAJCQkJQjIyMjc4QkIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxp
c3QuaCAqLywKIAkJCQlCMjIyNzhCQzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5p
ZGwgKi8sCisJCQkJN0MzOUMzNjgxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1
ZXMuY3BwICovLAorCQkJCTdDMzlDMzY5MUREQjg2RDMwMEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0
VmFsdWVzLmggKi8sCiAJCQkJQjIyMjc4QkQwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhaW50LmNw
cCAqLywKIAkJCQlCMjIyNzhCRTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGFpbnQuaCAqLywKIAkJ
CQlCMjIyNzhCRjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGFpbnQuaWRsICovLApAQCAtMjExNDYs
MTMgKzIxMTQ3LDE1IEBACiAJCQkJQjIyMjc4RTgwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhT
ZWdMaW5ldG9WZXJ0aWNhbEFicy5pZGwgKi8sCiAJCQkJODNDMUQ0MjIxNzhENUFCNDAwMTQxRTY4
IC8qIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oICovLAogCQkJCUIyMjI3OEU5MEQwMEJG
MjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwuaWRsICovLAotCQkJCUIy
MjI3OEVBMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgKi8sCisJCQkJN0Mz
OUMzNzAxRERCQTQ0MDAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0LmNwcCAqLywKIAkJCQlCMjIy
NzhFQjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCAqLywKIAkJCQlCMjIyNzhF
QzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaWRsICovLAogCQkJCTg0NzZDOUUz
MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwICovLAogCQkJCTg0
NzZDOUU0MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCAqLywKIAkJ
CQk4NEI2Qjk3NTEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwICov
LAogCQkJCTg0QjZCOTc2MTIwRjEzRTUwMEI4RUZBRiAvKiBTVkdQYXRoU2VnTGlzdFNvdXJjZS5o
ICovLAorCQkJCTdDMzlDMzZFMUREQkEzRTAwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdFZhbHVl
cy5jcHAgKi8sCisJCQkJN0MzOUMzNkYxRERCQTNFMDAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0
VmFsdWVzLmggKi8sCiAJCQkJODNDMUQ0MjMxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdN
b3ZldG9BYnMuaCAqLywKIAkJCQlCMjIyNzhFRjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0aFNl
Z01vdmV0b0Ficy5pZGwgKi8sCiAJCQkJODNDMUQ0MjQxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1Bh
dGhTZWdNb3ZldG9SZWwuaCAqLywKQEAgLTIxMTcyLDkgKzIxMTc1LDEwIEBACiAJCQkJQjIyMjc4
RjMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmlkbCAqLywKIAkJCQlCMjIy
NzhGNDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnQuaWRsICovLAogCQkJCTdDRTU4RDQ5MURE
NjRBNUIwMDEyODU1MiAvKiBTVkdQb2ludC5oICovLAotCQkJCUIyMjI3OEY1MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdQb2ludExpc3QuY3BwICovLAogCQkJCUIyMjI3OEY2MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdQb2ludExpc3QuaCAqLywKIAkJCQlCMjIyNzhGNzBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHUG9pbnRMaXN0LmlkbCAqLywKKwkJCQk3QzM5QzM2QTFEREI4NzFDMDBGRUZCMjkgLyogU1ZH
UG9pbnRMaXN0VmFsdWVzLmNwcCAqLywKKwkJCQk3QzM5QzM2QjFEREI4NzFDMDBGRUZCMjkgLyog
U1ZHUG9pbnRMaXN0VmFsdWVzLmggKi8sCiAJCQkJQjIyMjc4RjgwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1BvbHlFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzhGOTBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHUG9seUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzhGQTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZH
UG9seWdvbkVsZW1lbnQuY3BwICovLApAQCAtMjEyMDcsOSArMjEyMTEsMTAgQEAKIAkJCQlCMjIy
NzkxMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3
OTEzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oICovLAogCQkJCUIyMjI3OTE0
MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5pZGwgKi8sCi0JCQkJQjIyMjc5MTUw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuY3BwICovLAogCQkJCUIyMjI3OTE2MEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggKi8sCiAJCQkJQjIyMjc5MTcwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaWRsICovLAorCQkJCTdDMzlDMzY2MUREQjgyQ0Yw
MEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLywKKwkJCQk3QzM5QzM2NzFEREI4
MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oICovLAogCQkJCUIyMjI3OTIxMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3OTIyMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzkyMzBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmlkbCAqLywKQEAgLTIxMjUwLDkgKzIxMjU1
LDEwIEBACiAJCQkJQjIyMjc5NDQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUu
aCAqLywKIAkJCQlCMjIyNzk0NjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFu
Y2UuY3BwICovLAogCQkJCUIyMjI3OTQ3MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1E
aXN0YW5jZS5oICovLAotCQkJCUIyMjI3OTQ4MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zv
cm1MaXN0LmNwcCAqLywKIAkJCQlCMjIyNzk0OTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNm
b3JtTGlzdC5oICovLAogCQkJCUIyMjI3OTRBMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zv
cm1MaXN0LmlkbCAqLywKKwkJCQk3QzM5QzM2QzFEREI4QkIwMDBGRUZCMjkgLyogU1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcy5jcHAgKi8sCisJCQkJN0MzOUMzNkQxRERCOEJCMDAwRkVGQjI5IC8qIFNW
R1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCAqLywKIAkJCQk3Q0U1OEQ1NTFERDdEOTZEMDAxMjg1NTIg
LyogU1ZHVHJhbnNmb3JtVmFsdWUuY3BwICovLAogCQkJCTdDRTU4RDU2MUREN0Q5NkQwMDEyODU1
MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJCUIyMjI3OTRCMEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdUUmVmRWxlbWVudC5jcHAgKi8sCkBAIC0yNTMwMSw2ICsyNTMwNyw3IEBACiAJCQkJ
NTE4NUZDNzUxQkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTdCMzhFMjcxNTFDNDI3MTAwNDYyMkU5IC8qIERPTVdpbmRvd05v
dGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3RDJBRDA0MTRCODIzQTYwMDkzREYz
MiAvKiBET01XaW5kb3dQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MzOUMzNzcxRERC
RTE3MDAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg5RjYwQjExMTU3RjY4NkUwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUEyQTVBRDYxNkE0ODYxNjAwOTc1QTI1IC8qIERPTVdpbmRvd1NwZWVjaFN5bnRo
ZXNpcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDQ0JCNDkxNTFGODMxNjAwQUI3Q0U5IC8qIERP
TVdpbmRvd1dlYkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MDQyLDYgKzI3MDQ5LDcg
QEAKIAkJCQk4MzZEQUEwNjFDRUFCODBEMDBBMkI3MDcgLyogUmVuZGVyRGVzY2VuZGFudEl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzAyNzU0QTEyQTVGRTg0MDA0QkQ4MjggLyogUmVu
ZGVyRGV0YWlsc01hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2RTVGN0YxMzVFMERDRjAw
QTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdD
MzlDMzY1MUREQTg2NTIwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5QjMyQ0RBOTEzREY3RkE5MDBGMzREMTMgLyogUmVuZGVyZWRQb3NpdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzQTAyM0IxN0VCMzcwQTAwNENERDI1IC8qIFJlbmRlckVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUI3QTU1MTBGNjVEN0EwMDM3NjMwMiAvKiBS
ZW5kZXJFbWJlZGRlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzY5Miw3ICsyNzcwMCw2
IEBACiAJCQkJODNDMUQ0MzQxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhTZWdMaW5ldG9WZXJ0
aWNhbFJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBODEwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDc2QzlFNjExREY2QTBCMDA1
NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwODRB
MDgyOTEyOEQ3ODY3MDAyREIxRjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBp
biBIZWFkZXJzICovLAogCQkJCTg0QjZCOTc4MTIwRjEzRTUwMEI4RUZBRiAvKiBTVkdQYXRoU2Vn
TGlzdFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzUxNzhENUFCNTAwMTQxRTY4
IC8qIFNWR1BhdGhTZWdNb3ZldG9BYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDM2MTc4
RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTW92ZXRvUmVsLmggaW4gSGVhZGVycyAqLywKQEAg
LTI3NzU4LDcgKzI3NzY1LDYgQEAKIAkJCQlCMjIyN0FEQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
VHJhbnNmb3JtYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBREQwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FE
RjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMDhDNzEzNkUxMjg5NTZBMzAwMUIxMDdFIC8qIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRl
YXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUUyMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdUUmVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTUwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1RTcGFuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTcwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1VuaXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODkwNyw2
ICsyODkxMyw3IEBACiAJCQkJOTc3QjM4NjIxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1ByZWxvYWRT
Y2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2RDA1MEExOTg5Q0EwMDdGQjhDNSAv
KiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNGNzBBMTk4
OUNBMDA3RkI4QzUgLyogQ1NTUHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MzOUMz
NjQxRERBODY0QzAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzhEMDJCQzUxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQkE3NkNBMTFEMjBFNTAwMDRDMjAxQyAvKiBDU1NQ
cm9wZXJ0eU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk0NkQzNzQ1MUQ2RDAxRDQwMDc3
MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MTMxLDYg
KzI5MTM4LDcgQEAKIAkJCQk4NDczMEQ3QTEyNDhGMEIzMDBEM0E5QzkgLyogRkVEaWZmdXNlTGln
aHRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3MzBEN0MxMjQ4RjBCMzAwRDNBOUM5IC8q
IEZFRGlzcGxhY2VtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNThFODgwMTM2MEEz
MTcwMEU0NzQ4QyAvKiBGRURyb3BTaGFkb3cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MzOUMz
NzExRERCQjhBRTAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg0NzMwRDdFMTI0OEYwQjMwMEQzQTlDOSAvKiBGRUZsb29kLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg0ODAxOTU0MTA4QkFGQjMwMENCMkIxRiAvKiBGRUdhdXNzaWFuQmx1ci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NDczMEQ4MDEyNDhGMEIzMDBEM0E5QzkgLyogRkVMaWdodGluZy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI5MzgyLDYgKzI5MzkwLDcgQEAKIAkJCQlEM0Q0RTk3MjEz
MEM3Q0ZFMDA3QkE1NDAgLyogSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4NzFEQjMyMEExNTBCRDYwMEIxMkE2OCAvKiBIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREIyRTBBMTUwQkQ2MDBCMTJBNjggLyogSFRNTFRh
YmxlQ2VsbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MzOUMzNzMxRERCQjhDMTAw
RkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3
MURCMjkwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTg3MURCMjgwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURCMkQwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxU
YWJsZVBhcnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA1NjAsNiArMzA1NjksNyBA
QAogCQkJCTMzOTBDQTU1MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1MTNENTExNjc3RjA4ODAw
MTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMzlDMzcy
MUREQkI4QjMwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTU2OUQwQTBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE1NjlEMEQwRDdFMkI4MjAwN0MzOTgzIC8qIG5wcnVudGltZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MkY1MkUxMTE0QTAxMzRGMDBBQ0MzOTcgLyogTlNTY3JvbGxl
ckltcERldGFpbHMubW0gaW4gU291cmNlcyAqLywKQEAgLTMwNzkxLDYgKzMwODAxLDcgQEAKIAkJ
CQlENzBBRDY1NzEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRTkzRjQ3MTUxN0M2RDUwMDhDQ0Y3NCAvKiBSZW5kZXJSZWdpb25TZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURGRTIwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJl
cGxhY2VkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMzlDMzc2MUREQkI5MEQwMEZFRkIyOSAv
KiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTg0NkQ2MERD
NjdBMzUwMDI2QzMwOSAvKiBSZW5kZXJSZXBsaWNhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
NzlGQUVEMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0NzlGQUVGMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMxMDM3LDYgKzMxMDQ4LDcgQEAKIAkJCQk1QzY4OEFBMzFEMzgxNEJGMDAw
QjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBMzYx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbENG
TmV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMzlDMzc0MUREQkI4RDMwMEZFRkIyOSAvKiBT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NTM5MDQ3MEVB
RkQ2MzcwMDM2OTVDOCAvKiBTb3VuZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTRCMzA0M0M5
MEFFMDM3MUQwMEE4MjY0NyAvKiBTb3VuZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg0QTgx
RjNEMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMxMjQwLDcgKzMxMjUyLDYgQEAKIAkJCQlCMjhDNkEyOTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZH
SW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMkYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0xhbmdTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MTM0NDk2RDE0Njk0
MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlC
MjIyN0EzNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0EzODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTNCMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdMaW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0MDBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHTG9jYXRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEyNTAsNyArMzEy
NjEsNiBAQAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTREMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdNUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2
QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QTUwMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
MjI3QTUzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjIyN0E1NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg0QzY3ODRDMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMjU5LDE2ICszMTI2OSwxMyBAQAogCQkJCTg0MTlE
MkFDMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyN0E1ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3NkM5RUYxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1Bh
dGhQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBODAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BhdGhTZWdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzZDOUU1MTFERjZB
MEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMDhGRjEwMjAxMjk1MEY1QTAwRjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0QjZCOTc3MTIwRjEzRTUwMEI4RUZBRiAvKiBT
VkdQYXRoU2VnTGlzdFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDE5RDJCOTEyMEUw
Qzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODQzMDBCREExMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODRDNUIyRkExMjE2REM4MTAwODhCNTNBIC8qIFNWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzFBNTdERjExNTRCRTI1
QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
MjdBODcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUIyMjI3QThCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOEUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQb2x5Z29uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E5MzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEy
ODEsNyArMzEyODgsNiBAQAogCQkJCUIyMjI3QUE1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTZXRF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QUZEMDBGMERBRjMzNTUwMEY1RjU1QyAv
KiBTVkdTTUlMRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FBODBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdB
QUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBQjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyN0FCQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FCRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3dp
dGNoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMjk1LDcgKzMxMzAxLDYgQEAKIAkJ
CQkxQ0NERjVCRDE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FEOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNm
b3JtYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FEQzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBREUw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBRTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QUU0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUU3BhbkVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBRTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VS
SVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNTA5LDYgKzMxNTE0LDcgQEAKIAkJ
CQkwRjA5OUQwODE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjgxOEZFMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJD
b3JlVVJMUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NDRENEUyMzBGNzA4QjJFMDAz
MTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0Mz
OUMzNzUxRERCQjhERDAwRkVGQjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5M0YxOUIwNzA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVZpZXcubSBpbiBT
b3VyY2VzICovLAogCQkJCUE1RTYxNjczMTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dlckFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFMEQ4NEVCMTA0ODQzNkUwMDFBMTc5RSAvKiBX
ZWJFdmVudC5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjA4Nzc1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsMTUgKzExOCw2IEBAIG15ICVzdmdBdHRyaWJ1dGVzSW5IVE1MSGFzaCA9ICgK
ICAgICAib251bmxvYWQiID0+IDEsCiApOwogCi1teSAlc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmID0g
KAotICAgICJTVkdMZW5ndGhMaXN0IiA9PiAiU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdMZW5n
dGhMaXN0PiIsCi0gICAgIlNWR051bWJlckxpc3QiID0+ICJTVkdMaXN0UHJvcGVydHlUZWFyT2Zm
PFNWR051bWJlckxpc3Q+IiwKLSAgICAiU1ZHUG9pbnRMaXN0IiA9PiAiU1ZHTGlzdFByb3BlcnR5
VGVhck9mZjxTVkdQb2ludExpc3Q+IiwKLSAgICAiU1ZHU3RyaW5nTGlzdCIgPT4gIlNWR1N0YXRp
Y0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdD4iLAotICAgICJTVkdQYXRoU2VnTGlz
dCIgPT4gIlNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmIiwKLSAgICAiU1ZHVHJhbnNmb3Jt
TGlzdCIgPT4gIlNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYiCi0pOwotCiAjIENhY2hl
IG9mIElETCBmaWxlIHBhdGhuYW1lcy4KIG15ICRpZGxGaWxlczsKIG15ICRjYWNoZWRJbnRlcmZh
Y2VzID0ge307CkBAIC02MDQsMTYgKzU5NSw2IEBAIHN1YiBJc05vblBvaW50ZXJUeXBlCiAgICAg
cmV0dXJuIDA7CiB9CiAKLXN1YiBJc1NWR1R5cGVOZWVkaW5nVGVhck9mZgotewotICAgIG15ICgk
b2JqZWN0LCAkdHlwZSkgPSBAXzsKLQotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigk
dHlwZSkgbmUgIklETFR5cGUiOwotCi0gICAgcmV0dXJuIDEgaWYgZXhpc3RzICRzdmdUeXBlTmVl
ZGluZ1RlYXJPZmZ7JHR5cGUtPm5hbWV9OwotICAgIHJldHVybiAwOwotfQotCiBzdWIgSXNUeXBl
ZEFycmF5VHlwZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKQEAgLTY0MCwzNyAr
NjIxLDYgQEAgc3ViIElzUmVmUHRyVHlwZQogICAgIHJldHVybiAxOwogfQogCi1zdWIgR2V0U1ZH
VHlwZU5lZWRpbmdUZWFyT2ZmCi17Ci0gICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwotCi0g
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7Ci0KLSAg
ICByZXR1cm4gJHN2Z1R5cGVOZWVkaW5nVGVhck9mZnskdHlwZS0+bmFtZX0gaWYgZXhpc3RzICRz
dmdUeXBlTmVlZGluZ1RlYXJPZmZ7JHR5cGUtPm5hbWV9OwotICAgIHJldHVybiB1bmRlZjsKLX0K
LQotc3ViIEdldFNWR1dyYXBwZWRUeXBlTmVlZGluZ1RlYXJPZmYKLXsKLSAgICBteSAoJG9iamVj
dCwgJHR5cGUpID0gQF87Ci0KLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUp
IG5lICJJRExUeXBlIjsKLQotICAgIG15ICRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPSAkb2JqZWN0
LT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpOwotICAgIHJldHVybiAkc3ZnVHlwZU5l
ZWRpbmdUZWFyT2ZmIGlmIG5vdCAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmOwotCi0gICAgaWYgKCRz
dmdUeXBlTmVlZGluZ1RlYXJPZmYgPX4gL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYvKSB7Ci0gICAg
ICAgICRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPX4gcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmPC8v
OwotICAgIH0gZWxzaWYgKCRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPX4gL1NWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmYvKSB7Ci0gICAgICAgICRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPX4gcy9T
VkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmPC8vOwotICAgIH0gIGVsc2lmICgkc3ZnVHlwZU5l
ZWRpbmdUZWFyT2ZmID1+IC9TVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLykgewotICAg
ICAgICAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmID1+IHMvU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZjwvLzsKLSAgICB9IAotCi0gICAgJHN2Z1R5cGVOZWVkaW5nVGVhck9mZiA9fiBzLz4v
LzsKLSAgICByZXR1cm4gJHN2Z1R5cGVOZWVkaW5nVGVhck9mZjsKLX0KLQogc3ViIElzU1ZHQW5p
bWF0ZWRUeXBlTmFtZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZU5hbWUpID0gQF87CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTg0Miw5ICs4NDIsNiBAQCBz
dWIgR2V0SW1wbENsYXNzTmFtZQogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAotICAg
IG15ICgkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVy
dHlUeXBlcygkaW50ZXJmYWNlKTsKLSAgICByZXR1cm4gJHN2Z05hdGl2ZVR5cGUgaWYgJHN2Z05h
dGl2ZVR5cGU7Ci0KICAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKIH0KIApAQCAt
MTM0Miw3ICsxMzM5LDYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgJGhlYWRlckluY2x1ZGVz
eyJTVkdFbGVtZW50LmgifSA9IDEgaWYgJGNsYXNzTmFtZSA9fiAvXkpTU1ZHLzsKIAogICAgIG15
ICRpbXBsVHlwZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZSk7Ci0gICAgbXkgKCRzdmdM
aXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVzKCRp
bnRlcmZhY2UpOwogCiAgICAgbXkgJG51bUNvbnN0YW50cyA9IEB7JGludGVyZmFjZS0+Y29uc3Rh
bnRzfTsKICAgICBteSAkbnVtQXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0cmlidXRlc307
CkBAIC0xMzU1LDcgKzEzNTEsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9IGVsc2Ugewog
ICAgICAgICAjIEltcGxlbWVudGF0aW9uIGNsYXNzIGZvcndhcmQgZGVjbGFyYXRpb24KICAgICAg
ICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgICAgICBBZGRD
bGFzc0ZvcndhcmRJZk5lZWRlZCgkaW50ZXJmYWNlLT50eXBlKSB1bmxlc3MgJHN2Z0xpc3RQcm9w
ZXJ0eVR5cGU7CisgICAgICAgICAgICBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZCgkaW50ZXJmYWNl
LT50eXBlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTM4OCw3ICsxMzg0LDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVy
biBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwog
ICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e01hc3F1ZXJhZGVz
QXNVbmRlZmluZWR9KSB7Ci0gICAgICAgIEFkZEluY2x1ZGVzRm9ySW1wbGVtZW50YXRpb25UeXBl
SW5IZWFkZXIoJGltcGxUeXBlKSB1bmxlc3MgJHN2Z0xpc3RQcm9wZXJ0eVR5cGU7CisgICAgICAg
IEFkZEluY2x1ZGVzRm9ySW1wbGVtZW50YXRpb25UeXBlSW5IZWFkZXIoJGltcGxUeXBlKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBn
bG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwo
Z2xvYmFsT2JqZWN0LT52bSgpLCBcIkFsbG9jYXRlZCBtYXNxdWVyYWRpbmcgb2JqZWN0XCIpO1xu
Iik7CkBAIC0xNDA0LDcgKzE0MDAsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7ICAKICAgICB9IGVsc2UgewotICAgICAgICBB
ZGRJbmNsdWRlc0ZvckltcGxlbWVudGF0aW9uVHlwZUluSGVhZGVyKCRpbXBsVHlwZSkgdW5sZXNz
ICRzdmdMaXN0UHJvcGVydHlUeXBlOworICAgICAgICBBZGRJbmNsdWRlc0ZvckltcGxlbWVudGF0
aW9uVHlwZUluSGVhZGVyKCRpbXBsVHlwZSk7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBlPiYmIGltcGwp
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTtc
biIpOwpAQCAtMjM3Myw5ICsyMzY5LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGVGb3JDb252ZXJzaW9u
cwogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAotICAgIG15ICRpbnRlcmZhY2VOYW1l
ID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKLSAgICAkaW50ZXJmYWNlTmFtZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVyZmFjZS0+dHlwZSkgaWYgJGNv
ZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2UtPnR5cGUpOwot
ICAgIHJldHVybiAkaW50ZXJmYWNlTmFtZTsKKyAgICByZXR1cm4gJGludGVyZmFjZS0+dHlwZS0+
bmFtZTsKIH0KIAogIyBTZWUgaHR0cDovL3JlZnNwZWNzLmxpbnV4LWZvdW5kYXRpb24ub3JnL2N4
eGFiaS0xLjgzLmh0bWwuCkBAIC0yOTY2LDggKzI5NjAsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwgQ1JFQVRFX01FVEhPRF9U
QUJMRSgkY2xhc3NOYW1lKSB9O1xuXG4iKTsKIAotICAgIG15ICgkc3ZnTGlzdFByb3BlcnR5VHlw
ZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkaW50ZXJmYWNlKTsKLQog
ICAgICMgQ29uc3RydWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIp
IHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JJbXBsZW1lbnRhdGlvblR5cGVJbkltcGwoIkpTRE9N
V2luZG93U2hlbGwiKTsKQEAgLTMzMzQsMjcgKzMzMjYsMjMgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KIAogICAgICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFyZ3MgPSBHZW5lcmF0ZUNh
bGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxXaXRofSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCkiKTsKIAotICAgICAgICAgICAg
ICAgIGlmICgkc3ZnTGlzdFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVl
VXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsIDAsICRpbnRlcmZhY2UsICJ0aGlzT2JqZWN0Lndy
YXBwZWQoKS4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRo
QXJncykgLiAiKSIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgbXkg
KCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJl
c3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAg
ICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0ltcGxlbWVudGVkQnl9OworICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRC
eSkgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2ltcGxlbWVudGVkQnl9
LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6
JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbk5hbWV9IjsKKyAgICAgICAgICAgICAgICAgICAg
dW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAg
ICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5pc1N0YXRpYykgeworICAgICAgICAg
ICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25O
YW1lfSI7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbXkg
KCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJl
c3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAg
ICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRpbXBs
ZW1lbnRlZEJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIke2lt
cGxlbWVudGVkQnl9LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25O
YW1lID0gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRhdHRy
aWJ1dGUtPmlzU3RhdGljOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRl
LT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIk
e2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9uTmFtZX0iOwotICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7
ZnVuY3Rpb25OYW1lfSI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOwotICAgICAgICAgICAgICAg
ICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1
dGUsIDAsICRpbnRlcmZhY2UsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50cykgLiAiKSIsICJ0aGlzT2JqZWN0Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTtcbiIpIGlm
ICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAkanNUeXBlO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wbC4ke2Z1bmN0aW9uTmFtZX0iOwogICAgICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgQGNhbGxXaXRo
QXJncyk7CisgICAgICAgICAgICAgICAgbXkgJGpzVHlwZSA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5n
UmVmZXJlbmNlcygkYXR0cmlidXRlLCAwLCAkaW50ZXJmYWNlLCAiJHtmdW5jdGlvbk5hbWV9KCIg
LiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAidGhpc09iamVjdCIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICRqc1R5cGU7XG4iKTsKKwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QubV8iIC4g
JGF0dHJpYnV0ZS0+bmFtZSAuICIuc2V0KHN0YXRlLnZtKCksICZ0aGlzT2JqZWN0LCByZXN1bHQp
O1xuIikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVkQXR0cmlidXRl
fTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0
O1xuIik7CiAgICAgICAgICAgICB9CkBAIC0zNjA0LDQyICszNTkyLDM0IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2ggKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgaWYgKCRzdmdMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICR7c3ZnTGlzdFByb3BlcnR5VHlwZX0mIHBvZEltcGwg
PSBpbXBsLnByb3BlcnR5UmVmZXJlbmNlKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgbXkg
JGZ1bmN0aW9uU3RyaW5nID0gInBvZEltcGwuc2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUobmF0
aXZlVmFsdWUpIjsKLSAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3Bh
Z2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyTWF5VGhyb3dFeGNlcHRpb259Owot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZnVuY3Rpb25TdHJp
bmc7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIHRydWU7XG4iKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVyYXRvci0+U2V0
dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUp
OworICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRzKSA9ICRjb2Rl
R2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFt
ZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSBhbmQgbm90ICR0eXBlLT5uYW1lIGVxICJBcnJheUJ1
ZmZlciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgIm5hdGl2
ZVZhbHVlLmdldCgpIik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
YXJndW1lbnRzLCAibmF0aXZlVmFsdWUudmFsdWUoKSIpOwotICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCBTaG91bGRQ
YXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpID8gIipuYXRpdmVW
YWx1ZSIgOiAiV1RGTW92ZShuYXRpdmVWYWx1ZSkiKTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OwotICAgICAgICAgICAgICAgICAgICBpZiAo
JGltcGxlbWVudGVkQnkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDb25kaXRpb25hbH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1l
bnRzLCAiaW1wbCIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5j
dGlvbk5hbWV9IjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+aXNT
dGF0aWMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbnRl
cmZhY2VOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wbC4ke2Z1bmN0
aW9uTmFtZX0iOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSBhbmQgbm90ICR0eXBlLT5uYW1l
IGVxICJBcnJheUJ1ZmZlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRz
LCAibmF0aXZlVmFsdWUuZ2V0KCkiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdl
bmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
YXJndW1lbnRzLCAibmF0aXZlVmFsdWUudmFsdWUoKSIpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgU2hvdWxkUGFzc1dyYXBw
ZXJCeVJlZmVyZW5jZSgkYXR0cmlidXRlLCAkaW50ZXJmYWNlKSA/ICIqbmF0aXZlVmFsdWUiIDog
IldURk1vdmUobmF0aXZlVmFsdWUpIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
SW1wbGVtZW50ZWRCeX07CisgICAgICAgICAgICAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9Lmgi
LCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAg
ICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRhdHRyaWJ1dGUt
PmlzU3RhdGljOworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIldlYkNvcmU6
OiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgfSBl
bHNpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0
aW9uTmFtZSA9ICIke2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9uTmFtZX0iOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1w
bC4ke2Z1bmN0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
ICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyQ2FsbFdpdGh9LCBcQGltcGxD
b250ZW50LCAiZmFsc2UiKSk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50
cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJmYWxzZSIpKTsKKyAgICAgICAg
ICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5j
ZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyQ2FsbFdpdGh9LCBcQGlt
cGxDb250ZW50LCAiZmFsc2UiKSk7CisgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRz
LCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImZhbHNlIikpOwogCi0gICAgICAg
ICAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2lu
KCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwotICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25T
dHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25T
dHJpbmcpIiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJv
d0V4Y2VwdGlvbn07CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRmdW5j
dGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAg
ICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29w
ZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
U2V0dGVyTWF5VGhyb3dFeGNlcHRpb259OwogCi0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICRmdW5jdGlvblN0cmluZztcbiIpOwotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZnVuY3Rpb25T
dHJpbmc7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gdHJ1ZTtcbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7CkBAIC0zODYwLDggKzM4NDAsNiBAQCBFTkQKICAgICAgICAgICAgICAg
ICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7CiAgICAgICAgICAgICAgICAgICAgIG15
ICRlbmNvZGVkTmFtZSA9ICJlbmNvZGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRu
YW1lKTsKICAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBl
KCRpbnRlcmZhY2UsICRhcmd1bWVudC0+dHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRp
c1RlYXJPZmYgPSAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUp
ICYmICRpbnRlcmZhY2VOYW1lICF+IC9MaXN0JC87Ci0gICAgICAgICAgICAgICAgICAgIGRpZSAi
VGVhck9mZiB0eXBlIGlzIG5vdCBhbGxvd2VkIiBpZiAkaXNUZWFyT2ZmOwogICAgICAgICAgICAg
ICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gU2hvdWxkUGFzc1dyYXBwZXJCeVJl
ZmVyZW5jZSgkYXJndW1lbnQsICRpbnRlcmZhY2UpOwogCiAgICAgICAgICAgICAgICAgICAgIGlm
ICghJHNob3VsZFBhc3NCeVJlZmVyZW5jZSAmJiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5
cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKSkpIHsK
QEAgLTQ0NzEsNyArNDQ0OSw2IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAg
ICAgICAgbXkgJG91dGVyOwogICAgICAgICAgICAgbXkgJGlubmVyOwogICAgICAgICAgICAgbXkg
JG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICRhcmd1bWVudC0+dHlwZSk7
Ci0gICAgICAgICAgICBteSAkaXNUZWFyT2ZmID0gJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5l
ZWRpbmdUZWFyT2ZmKCR0eXBlKSAmJiAkaW50ZXJmYWNlTmFtZSAhfiAvTGlzdCQvOwogCiAgICAg
ICAgICAgICBkaWUgIlZhcmlhZGljIGFyZ3VtZW50IGlzIGFscmVhZHkgaGFuZGxlZCBoZXJlIiBp
ZiAkYXJndW1lbnQtPmlzVmFyaWFkaWM7CiAgICAgICAgICAgICBteSAkYXJndW1lbnRMb29rdXBN
ZXRob2QgPSAkYXJndW1lbnQtPmlzT3B0aW9uYWwgPyAiYXJndW1lbnQiIDogInVuY2hlY2tlZEFy
Z3VtZW50IjsKQEAgLTQ1MzAsOSArNDUwNyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
awogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJG1heVRocm93RXhj
ZXB0aW9uOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoJGlzVGVhck9mZikgewot
ICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIkbmFtZS0+cHJvcGVydHlSZWZlcmVuY2UoKSI7Ci0g
ICAgICAgICAgICB9IGVsc2lmIChTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhcmd1bWVu
dCwgJGludGVyZmFjZSkpIHsKKyAgICAgICAgICAgIGlmIChTaG91bGRQYXNzV3JhcHBlckJ5UmVm
ZXJlbmNlKCRhcmd1bWVudCwgJGludGVyZmFjZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpIGFuZCAkdHlwZS0+bmFtZSBuZSAi
QXJyYXlCdWZmZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIkbmFtZS5yZWxl
YXNlTm9uTnVsbCgpIjsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNTE1NSw3ICs1MTMw
LDYgQEAgc3ViIEdldElETEludGVyZmFjZU5hbWUKIHsKICAgICBteSAoJHR5cGUpID0gQF87CiAK
LSAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlw
ZSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKTsKICAg
ICByZXR1cm4gJHR5cGUtPm5hbWU7CiB9CiAKQEAgLTUyMTksOSArNTE5Myw2IEBAIHN1YiBHZXRO
YXRpdmVUeXBlCiAgICAgcmV0dXJuIEdldERpY3Rpb25hcnlDbGFzc05hbWUoJHR5cGUsICRpbnRl
cmZhY2UpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0RpY3Rpb25hcnlUeXBlKCR0eXBlKTsKICAgICBy
ZXR1cm4gR2V0TmF0aXZlVmVjdG9yVHlwZSgkdHlwZSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzU2Vx
dWVuY2VPckZyb3plbkFycmF5VHlwZSgkdHlwZSk7CiAKLSAgICBteSAkdGVhck9mZlR5cGUgPSAk
Y29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKTsKLSAgICByZXR1
cm4gIiR7dGVhck9mZlR5cGV9KiIgaWYgJHRlYXJPZmZUeXBlOwotCiAgICAgcmV0dXJuICJSZWZQ
dHI8JHt0eXBlTmFtZX0+IiBpZiAkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlw
ZSkgYW5kICR0eXBlTmFtZSBuZSAiQXJyYXlCdWZmZXIiOwogICAgIHJldHVybiAiJHt0eXBlTmFt
ZX0qIjsKIH0KQEAgLTUyNjMsNDAgKzUyMzQsNiBAQCBzdWIgR2V0TmF0aXZlVHlwZUZvck1lbW9p
emF0aW9uCiAgICAgcmV0dXJuIEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwogfQog
Ci1zdWIgR2V0U1ZHUHJvcGVydHlUeXBlcwotewotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
LQotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKLQotICAg
IG15ICRzdmdMaXN0UHJvcGVydHlUeXBlOwotICAgIG15ICRzdmdOYXRpdmVUeXBlOwotCi0gICAg
cmV0dXJuICgkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpIGlmIG5vdCAkaW50
ZXJmYWNlTmFtZSA9fiAvU1ZHLzsKLQotICAgICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0
b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkaW50ZXJmYWNlLT50eXBlKTsKLSAgICByZXR1
cm4gKCRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgaWYgbm90ICRzdmdOYXRp
dmVUeXBlOwotCi0gICAgbXkgJHN2Z1dyYXBwZWROYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3It
PkdldFNWR1dyYXBwZWRUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVyZmFjZS0+dHlwZSk7Ci0gICAg
aWYgKCRzdmdOYXRpdmVUeXBlID1+IC9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLyBvciAkc3ZnTmF0
aXZlVHlwZSA9fiAvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi8pIHsKLSAgICAgICAgJHN2
Z0xpc3RQcm9wZXJ0eVR5cGUgPSAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGU7Ci0gICAgICAgICRoZWFk
ZXJJbmNsdWRlc3siJHN2Z1dyYXBwZWROYXRpdmVUeXBlLmgifSA9IDE7Ci0gICAgICAgICRoZWFk
ZXJJbmNsdWRlc3siU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgifSA9IDE7Ci0gICAg
fSBlbHNpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJP
ZmYvKSB7Ci0gICAgICAgICRzdmdMaXN0UHJvcGVydHlUeXBlID0gJHN2Z1dyYXBwZWROYXRpdmVU
eXBlOwotICAgICAgICAkaGVhZGVySW5jbHVkZXN7IiRzdmdXcmFwcGVkTmF0aXZlVHlwZS5oIn0g
PSAxOwotICAgICAgICAkaGVhZGVySW5jbHVkZXN7IlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZi5oIn0gPSAxOwotICAgICAgICAkaGVhZGVySW5jbHVkZXN7IlNWR1RyYW5zZm9ybUxpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCJ9ID0gMTsKLSAgICB9IGVsc2lmICgkc3ZnTmF0aXZlVHlwZSA9fiAv
U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYvKSB7Ci0gICAgICAgICRzdmdMaXN0UHJvcGVy
dHlUeXBlID0gJHN2Z1dyYXBwZWROYXRpdmVUeXBlOwotICAgICAgICAkaGVhZGVySW5jbHVkZXN7
IiRzdmdXcmFwcGVkTmF0aXZlVHlwZS5oIn0gPSAxOwotICAgICAgICAkaGVhZGVySW5jbHVkZXN7
IlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIn0gPSAxOwotICAgICAgICAkaGVhZGVy
SW5jbHVkZXN7IlNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgifSA9IDE7Ci0gICAgfQot
Ci0gICAgcmV0dXJuICgkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpOwotfQot
CiBzdWIgR2V0SW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uCiB7CiAgICAgbXkgJGNvbnRl
eHQgPSBzaGlmdDsKQEAgLTU1MDksMjMgKzU0NDYsNiBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAg
ICAgaWYgKCR0eXBlLT5uYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAg
IHJldHVybiAiJHZhbHVlID8gJHZhbHVlLT5kZXNlcmlhbGl6ZSgkc3RhdGVSZWZlcmVuY2UsICRn
bG9iYWxPYmplY3QpIDoganNOdWxsKCkiOwogICAgIH0KLSAgICAKLSAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpICYmICEkY29kZUdlbmVyYXRvci0+SXNTVkdBbmlt
YXRlZFR5cGUoJHR5cGUpKSB7Ci0gICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmlt
YXRlZFR5cGUoJGludGVyZmFjZS0+dHlwZSkgb3IgKCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEg
IlNWR1ZpZXdTcGVjIiBhbmQgJHR5cGUtPm5hbWUgZXEgIlNWR1RyYW5zZm9ybUxpc3QiKSkgewot
ICAgICAgICAgICAgIyBDb252ZXJ0IGZyb20gYWJzdHJhY3QgUmVmUHRyPExpc3RQcm9wZXJ0eT4g
dG8gcmVhbCB0eXBlLCBzbyB0aGUgcmlnaHQgdG9KUygpIG1ldGhvZCBjYW4gYmUgaW52b2tlZC4K
LSAgICAgICAgICAgICR2YWx1ZSA9ICJzdGF0aWNfY2FzdDwiIC4gR2V0TmF0aXZlVHlwZSgkaW50
ZXJmYWNlLCAkdHlwZSkgLiAiPigkdmFsdWUuZ2V0KCkpIjsKLSAgICAgICAgfSBlbHNpZiAoJGlu
dGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiU1ZHVmlld1NwZWMiKSB7Ci0gICAgICAgICAgICAjIENv
bnZlcnQgZnJvbSBhYnN0cmFjdCBTVkdQcm9wZXJ0eSB0byByZWFsIHR5cGUsIHNvIHRoZSByaWdo
dCB0b0pTKCkgbWV0aG9kIGNhbiBiZSBpbnZva2VkLgotICAgICAgICAgICAgJHZhbHVlID0gInN0
YXRpY19jYXN0PCIgLiBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKSAuICI+KCR2YWx1
ZSkiOwotICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1Rl
YXJPZmYoJHR5cGUpIGFuZCBub3QgJGludGVyZmFjZS0+dHlwZS0+bmFtZSA9fiAvTGlzdCQvKSB7
Ci0gICAgICAgICAgICBteSAkdGVhck9mZlR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlw
ZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKTsKLSAgICAgICAgICAgIGlmICgkdGVhck9mZlR5cGUgPX4g
L1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYvKSB7Ci0gICAgICAgICAgICAgICAgJHZhbHVl
ID0gIiR7dGVhck9mZlR5cGV9OjpjcmVhdGUoaW1wbCwgJHZhbHVlKSI7Ci0gICAgICAgICAgICB9
IGVsc2lmIChub3QgJHRlYXJPZmZUeXBlID1+IC9TVkcoUG9pbnR8UGF0aFNlZylMaXN0Lykgewot
ICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKCR2YWx1ZSki
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogCiAgICAgJHZhbHVlID0gIkJpbmRp
bmdTZWN1cml0eTo6Y2hlY2tTZWN1cml0eUZvck5vZGUoJHN0YXRlUmVmZXJlbmNlLCAkdmFsdWUp
IiBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eUZvck5vZGV9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1No
YXBlLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAKICNp
bmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzLmgi
CiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1M
aXN0LmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU3Ryb2tlU3R5
bGVBcHBsaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gMjA4
Nzc1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlNWR1Jlc291cmNlc0Nh
Y2hlLmgiCiAjaW5jbHVkZSAiU1ZHUm9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlNWR1RleHRF
bGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR1VS
SVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVBvc2l0aW9uLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHRQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1Jvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJTVkdUZXh0UGF0aEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAJKHJldmlz
aW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU1ZHUGF0aEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUG9p
bnQuaCIKKyNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdQb2x5Z29uRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR1BvbHlsaW5lRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Jl
Y3RFbGVtZW50LmgiCkBAIC04OSw3ICs5MCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBhdGhGcm9t
UGF0aEVsZW1lbnQoU1YKIAogc3RhdGljIHZvaWQgdXBkYXRlUGF0aEZyb21Qb2x5Z29uRWxlbWVu
dChTVkdFbGVtZW50KiBlbGVtZW50LCBQYXRoJiBwYXRoKQogewotICAgIFNWR1BvaW50TGlzdCYg
cG9pbnRzID0gZG93bmNhc3Q8U1ZHUG9seWdvbkVsZW1lbnQ+KGVsZW1lbnQpLT5hbmltYXRlZFBv
aW50cygpLT52YWx1ZXMoKTsKKyAgICBhdXRvJiBwb2ludHMgPSBkb3duY2FzdDxTVkdQb2x5Z29u
RWxlbWVudD4oZWxlbWVudCktPmFuaW1hdGVkUG9pbnRzKCktPnZhbHVlcygpOwogICAgIGlmIChw
b2ludHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNCw3ICsxMDUsNyBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVQYXRoRnJvbVBvbHlnb25FbGVtZW50CiAKIHN0YXRpYyB2b2lkIHVw
ZGF0ZVBhdGhGcm9tUG9seWxpbmVFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQsIFBhdGgmIHBh
dGgpCiB7Ci0gICAgU1ZHUG9pbnRMaXN0JiBwb2ludHMgPSBkb3duY2FzdDxTVkdQb2x5bGluZUVs
ZW1lbnQ+KGVsZW1lbnQpLT5hbmltYXRlZFBvaW50cygpLT52YWx1ZXMoKTsKKyAgICBhdXRvJiBw
b2ludHMgPSBkb3duY2FzdDxTVkdQb2x5bGluZUVsZW1lbnQ+KGVsZW1lbnQpLT5hbmltYXRlZFBv
aW50cygpLT52YWx1ZXMoKTsKICAgICBpZiAocG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVB
c1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDYgQEAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNWR1Bv
aW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR1BvbHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUmVj
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdSb290SW5saW5lQm94LmgiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlcjo6YnVpCiAgICAgICAgIGZpbGxDaGFyYWN0ZXJEYXRhTWFwKG1fdGV4dFBvc2l0aW9u
c1tpXSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVDaGFyYWN0ZXJEYXRhKHVuc2ln
bmVkIGksIGZsb2F0JiBsYXN0Um90YXRpb24sIFNWR0NoYXJhY3RlckRhdGEmIGRhdGEsIGNvbnN0
IFNWR0xlbmd0aENvbnRleHQmIGxlbmd0aENvbnRleHQsIGNvbnN0IFNWR0xlbmd0aExpc3QqIHhM
aXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0KiB5TGlzdCwgY29uc3QgU1ZHTGVuZ3RoTGlzdCogZHhM
aXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0KiBkeUxpc3QsIGNvbnN0IFNWR051bWJlckxpc3QqIHJv
dGF0ZUxpc3QpCitzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlQ2hhcmFjdGVyRGF0YSh1bnNpZ25l
ZCBpLCBmbG9hdCYgbGFzdFJvdGF0aW9uLCBTVkdDaGFyYWN0ZXJEYXRhJiBkYXRhLCBjb25zdCBT
VkdMZW5ndGhDb250ZXh0JiBsZW5ndGhDb250ZXh0LCBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVz
KiB4TGlzdCwgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogeUxpc3QsIGNvbnN0IFNWR0xlbmd0
aExpc3RWYWx1ZXMqIGR4TGlzdCwgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHlMaXN0LCBj
b25zdCBTVkdOdW1iZXJMaXN0VmFsdWVzKiByb3RhdGVMaXN0KQogewogICAgIGlmICh4TGlzdCkK
ICAgICAgICAgZGF0YS54ID0geExpc3QtPmF0KGkpLnZhbHVlKGxlbmd0aENvbnRleHQpOwpAQCAt
MTc1LDExICsxNzUsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUNoYXJhY3RlckRhdGEo
dQogCiB2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6ZmlsbENoYXJhY3RlckRh
dGFNYXAoY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKLSAgICBjb25zdCBTVkdMZW5n
dGhMaXN0JiB4TGlzdCA9IHBvc2l0aW9uLmVsZW1lbnQtPngoKTsKLSAgICBjb25zdCBTVkdMZW5n
dGhMaXN0JiB5TGlzdCA9IHBvc2l0aW9uLmVsZW1lbnQtPnkoKTsKLSAgICBjb25zdCBTVkdMZW5n
dGhMaXN0JiBkeExpc3QgPSBwb3NpdGlvbi5lbGVtZW50LT5keCgpOwotICAgIGNvbnN0IFNWR0xl
bmd0aExpc3QmIGR5TGlzdCA9IHBvc2l0aW9uLmVsZW1lbnQtPmR5KCk7Ci0gICAgY29uc3QgU1ZH
TnVtYmVyTGlzdCYgcm90YXRlTGlzdCA9IHBvc2l0aW9uLmVsZW1lbnQtPnJvdGF0ZSgpOworICAg
IGNvbnN0IGF1dG8mIHhMaXN0ID0gcG9zaXRpb24uZWxlbWVudC0+eCgpOworICAgIGNvbnN0IGF1
dG8mIHlMaXN0ID0gcG9zaXRpb24uZWxlbWVudC0+eSgpOworICAgIGNvbnN0IGF1dG8mIGR4TGlz
dCA9IHBvc2l0aW9uLmVsZW1lbnQtPmR4KCk7CisgICAgY29uc3QgYXV0byYgZHlMaXN0ID0gcG9z
aXRpb24uZWxlbWVudC0+ZHkoKTsKKyAgICBjb25zdCBhdXRvJiByb3RhdGVMaXN0ID0gcG9zaXRp
b24uZWxlbWVudC0+cm90YXRlKCk7CiAKICAgICB1bnNpZ25lZCB4TGlzdFNpemUgPSB4TGlzdC5z
aXplKCk7CiAgICAgdW5zaWduZWQgeUxpc3RTaXplID0geUxpc3Quc2l6ZSgpOwpAQCAtMTkyLDEx
ICsxOTIsMTEgQEAgdm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmZpbAogICAg
IGZsb2F0IGxhc3RSb3RhdGlvbiA9IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVl
KCk7CiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHBvc2l0aW9uLmVsZW1lbnQp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwb3NpdGlvbi5sZW5ndGg7ICsraSkgewot
ICAgICAgICBjb25zdCBTVkdMZW5ndGhMaXN0KiB4TGlzdFB0ciA9IGkgPCB4TGlzdFNpemUgPyAm
eExpc3QgOiAwOwotICAgICAgICBjb25zdCBTVkdMZW5ndGhMaXN0KiB5TGlzdFB0ciA9IGkgPCB5
TGlzdFNpemUgPyAmeUxpc3QgOiAwOwotICAgICAgICBjb25zdCBTVkdMZW5ndGhMaXN0KiBkeExp
c3RQdHIgPSBpIDwgZHhMaXN0U2l6ZSA/ICZkeExpc3QgOiAwOwotICAgICAgICBjb25zdCBTVkdM
ZW5ndGhMaXN0KiBkeUxpc3RQdHIgPSBpIDwgZHlMaXN0U2l6ZSA/ICZkeUxpc3QgOiAwOwotICAg
ICAgICBjb25zdCBTVkdOdW1iZXJMaXN0KiByb3RhdGVMaXN0UHRyID0gaSA8IHJvdGF0ZUxpc3RT
aXplID8gJnJvdGF0ZUxpc3QgOiAwOworICAgICAgICBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVz
KiB4TGlzdFB0ciA9IGkgPCB4TGlzdFNpemUgPyAmeExpc3QgOiAwOworICAgICAgICBjb25zdCBT
VkdMZW5ndGhMaXN0VmFsdWVzKiB5TGlzdFB0ciA9IGkgPCB5TGlzdFNpemUgPyAmeUxpc3QgOiAw
OworICAgICAgICBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzKiBkeExpc3RQdHIgPSBpIDwgZHhM
aXN0U2l6ZSA/ICZkeExpc3QgOiAwOworICAgICAgICBjb25zdCBTVkdMZW5ndGhMaXN0VmFsdWVz
KiBkeUxpc3RQdHIgPSBpIDwgZHlMaXN0U2l6ZSA/ICZkeUxpc3QgOiAwOworICAgICAgICBjb25z
dCBTVkdOdW1iZXJMaXN0VmFsdWVzKiByb3RhdGVMaXN0UHRyID0gaSA8IHJvdGF0ZUxpc3RTaXpl
ID8gJnJvdGF0ZUxpc3QgOiAwOwogICAgICAgICBpZiAoIXhMaXN0UHRyICYmICF5TGlzdFB0ciAm
JiAhZHhMaXN0UHRyICYmICFkeUxpc3RQdHIgJiYgIXJvdGF0ZUxpc3RQdHIpCiAgICAgICAgICAg
ICBicmVhazsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAy
MDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMsNyArMTEzLDcgQEAKICNpbmNsdWRlICJTVkdJbWFnZUxvYWRlci5jcHAiCiAj
aW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmNwcCIKICNpbmNsdWRlICJTVkdMZW5ndGhDb250ZXh0LmNw
cCIKLSNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmNwcCIKKyNpbmNsdWRlICJTVkdMZW5ndGhMaXN0
VmFsdWVzLmNwcCIKICNpbmNsdWRlICJTVkdMaW5lRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuY3BwIgpA
QCAtMTIyLDcgKzEyMiw3IEBACiAjaW5jbHVkZSAiU1ZHTWFza0VsZW1lbnQuY3BwIgogI2luY2x1
ZGUgIlNWR01ldGFkYXRhRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHTWlzc2luZ0dseXBoRWxl
bWVudC5jcHAiCi0jaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5jcHAiCisjaW5jbHVkZSAiU1ZHTnVt
YmVyTGlzdFZhbHVlcy5jcHAiCiAjaW5jbHVkZSAiU1ZHUGFpbnQuY3BwIgogI2luY2x1ZGUgIlNW
R1BhcnNlclV0aWxpdGllcy5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0aEJsZW5kZXIuY3BwIgpAQCAt
MTM0LDEyICsxMzQsMTMgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5jcHAiCiAjaW5jbHVk
ZSAiU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdFNv
dXJjZS5jcHAiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwIgogI2luY2x1ZGUg
IlNWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nU291cmNl
LmNwcCIKICNpbmNsdWRlICJTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcCIKICNpbmNs
dWRlICJTVkdQYXRoVXRpbGl0aWVzLmNwcCIKICNpbmNsdWRlICJTVkdQYXR0ZXJuRWxlbWVudC5j
cHAiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmNwcCIKKyNpbmNsdWRlICJTVkdQb2ludExpc3RW
YWx1ZXMuY3BwIgogI2luY2x1ZGUgIlNWR1BvbHlFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdQ
b2x5Z29uRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9seWxpbmVFbGVtZW50LmNwcCIKQEAg
LTE1MCw3ICsxNTEsNyBAQAogI2luY2x1ZGUgIlNWR1NjcmlwdEVsZW1lbnQuY3BwIgogI2luY2x1
ZGUgIlNWR1NldEVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR1N0b3BFbGVtZW50LmNwcCIKLSNp
bmNsdWRlICJTVkdTdHJpbmdMaXN0LmNwcCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVz
LmNwcCIKICNpbmNsdWRlICJTVkdTdHlsZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR1N3aXRj
aEVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR1N5bWJvbEVsZW1lbnQuY3BwIgpAQCAtMTY0LDcg
KzE2NSw3IEBACiAjaW5jbHVkZSAiU1ZHVGl0bGVFbGVtZW50LmNwcCIKICNpbmNsdWRlICJTVkdU
cmFuc2Zvcm0uY3BwIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybURpc3RhbmNlLmNwcCIKLSNpbmNs
dWRlICJTVkdUcmFuc2Zvcm1MaXN0LmNwcCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFs
dWVzLmNwcCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmNwcCIKICNpbmNsdWRlICJTVkdV
UklSZWZlcmVuY2UuY3BwIgogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuY3BwIgpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuZ2xlLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmdsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU1ZHQW5nbGUgOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0Fu
Z2xlVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoU1ZH
QW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUs
IFNWR0FuZ2xlVmFsdWUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHQW5nbGU+IGNyZWF0ZShT
VkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9s
ZSwgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQ
cm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuZ2xlKGFuaW1hdGVk
UHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQogCkBAIC0xMzgsOCArMTM3LDggQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdBbmdsZShTVkdBbmltYXRlZFByb3BlcnR5
KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVWYWx1ZSYg
dmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KGFuaW1h
dGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIFNWR0FuZ2xlKFNWR0FuaW1hdGVkUHJvcGVy
dHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdBbmdsZVZhbHVl
JiB2YWx1ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHQW5nbGVWYWx1ZT4oJmFu
aW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24g
MjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlNWR1BhdGhEYXRh
LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExl
bmd0aExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZExlbmd0aExpc3QuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBA
QCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6U1ZHQW5pbWF0CiAKIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGF1dG8gYW5pbWF0
ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGhMaXN0KHN0ZDo6bWFrZV91bmlx
dWU8U1ZHTGVuZ3RoTGlzdD4oKSk7CisgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZUxlbmd0aExpc3Qoc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhMaXN0VmFs
dWVzPigpKTsKICAgICBhbmltYXRlZFR5cGUtPmxlbmd0aExpc3QoKS5wYXJzZShzdHJpbmcsIG1f
bGVuZ3RoTW9kZSk7CiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KQEAgLTgwLDkgKzgwLDkg
QEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQQogICAgICAgICB0b0xl
bmd0aExpc3RbaV0uc2V0VmFsdWUodG9MZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQp
ICsgZnJvbUxlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQp
OwogfQogCi1zdGF0aWMgU1ZHTGVuZ3RoTGlzdCBwYXJzZUxlbmd0aExpc3RGcm9tU3RyaW5nKFNW
R0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQorc3RhdGljIFNWR0xlbmd0aExpc3RWYWx1ZXMgcGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZyhT
VkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKLSAgICBTVkdMZW5ndGhMaXN0IGxlbmd0aExpc3Q7CisgICAgU1ZHTGVuZ3RoTGlzdFZh
bHVlcyBsZW5ndGhMaXN0OwogICAgIGxlbmd0aExpc3QucGFyc2Uoc3RyaW5nLCBTVkdMZW5ndGhW
YWx1ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGFuaW1hdGlvbkVsZW1l
bnQtPmF0dHJpYnV0ZU5hbWUoKSkpOwogICAgIHJldHVybiBsZW5ndGhMaXN0OwogfQpAQCAtOTgs
MTAgKzk4LDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNhbGMKICAg
ICBhdXRvJiBhbmltYXRlZExlbmd0aExpc3QgPSBhbmltYXRlZC0+bGVuZ3RoTGlzdCgpOwogCiAg
ICAgLy8gQXBwbHkgQ1NTIGluaGVyaXRhbmNlIHJ1bGVzLgotICAgIG1fYW5pbWF0aW9uRWxlbWVu
dC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U1ZHTGVuZ3RoTGlzdD4ocGFyc2VMZW5ndGhMaXN0RnJv
bVN0cmluZywgbV9hbmltYXRpb25FbGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSwgZnJv
bUxlbmd0aExpc3QsIG1fY29udGV4dEVsZW1lbnQpOwotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+
YWRqdXN0Rm9ySW5oZXJpdGFuY2U8U1ZHTGVuZ3RoTGlzdD4ocGFyc2VMZW5ndGhMaXN0RnJvbVN0
cmluZywgbV9hbmltYXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBlKCksIHRvTGVuZ3Ro
TGlzdCwgbV9jb250ZXh0RWxlbWVudCk7CisgICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RG
b3JJbmhlcml0YW5jZTxTVkdMZW5ndGhMaXN0VmFsdWVzPihwYXJzZUxlbmd0aExpc3RGcm9tU3Ry
aW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpLCBmcm9tTGVu
Z3RoTGlzdCwgbV9jb250ZXh0RWxlbWVudCk7CisgICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1
c3RGb3JJbmhlcml0YW5jZTxTVkdMZW5ndGhMaXN0VmFsdWVzPihwYXJzZUxlbmd0aExpc3RGcm9t
U3RyaW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKSwgdG9MZW5n
dGhMaXN0LCBtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50
LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR0xlbmd0aExpc3Q+KGZyb21MZW5ndGhMaXN0LCB0
b0xlbmd0aExpc3QsIGFuaW1hdGVkTGVuZ3RoTGlzdCwgcGVyY2VudGFnZSkpCisgICAgaWYgKCFt
X2FuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHTGVuZ3RoTGlzdFZh
bHVlcz4oZnJvbUxlbmd0aExpc3QsIHRvTGVuZ3RoTGlzdCwgYW5pbWF0ZWRMZW5ndGhMaXN0LCBw
ZXJjZW50YWdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgZnJvbUxlbmd0aExp
c3RTaXplID0gZnJvbUxlbmd0aExpc3Quc2l6ZSgpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNhbGMKIAogZmxvYXQgU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgLy8gRklYTUU6IERpc3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBw
b3NzaWJsZSBmb3IgU1ZHTGVuZ3RoTGlzdCByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNl
IGZvciBldmVyeSBzaW5nbGUgdmFsdWUuCisgICAgLy8gRklYTUU6IERpc3RhbmNlIGNhbGN1bGF0
aW9uIGlzIG5vdCBwb3NzaWJsZSBmb3IgU1ZHTGVuZ3RoTGlzdFZhbHVlcyByaWdodCBub3cuIFdl
IG5lZWQgdGhlIGRpc3RhbmNlIGZvciBldmVyeSBzaW5nbGUgdmFsdWUuCiAgICAgcmV0dXJuIC0x
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5o
CShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE0ICsyMiwxNSBAQAogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3Ro
TGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aExpc3Q+IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDsKK3Vz
aW5nIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZjxTVkdMZW5ndGhMaXN0VmFsdWVzPjsKIAogLy8gSGVscGVyIG1hY3JvcyB0byBkZWNsYXJlL2Rl
ZmluZSBhIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCBvYmplY3QKICNkZWZpbmUgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEhfTElTVChVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUNMQVJF
X0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LCBTVkdMZW5ndGhM
aXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVDTEFSRV9BTklNQVRFRF9MSVNU
X1BST1BFUlRZKFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdFZhbHVlcywgVXBw
ZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfTEVO
R1RIX0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpIFwKIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZExlbmd0aExpc3QsIE93
bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmlkbAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDQgKzI5
LDMgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHTGVuZ3RoTGlzdCBiYXNlVmFsOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdMZW5ndGhMaXN0IGFuaW1WYWw7CiB9OwotCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAkocmV2aXNpb24g
MjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5p
bWF0b3I6OlNWR0FuaW1hdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdB
bmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6
Y3JlYXRlTnVtYmVyTGlzdChzdGQ6Om1ha2VfdW5pcXVlPFNWR051bWJlckxpc3Q+KCkpOworICAg
IGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXJMaXN0KHN0
ZDo6bWFrZV91bmlxdWU8U1ZHTnVtYmVyTGlzdFZhbHVlcz4oKSk7CiAgICAgYW5pbWF0ZWRUeXBl
LT5udW1iZXJMaXN0KCkucGFyc2Uoc3RyaW5nKTsKICAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwog
fQpAQCAtNjcsOCArNjcsOCBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjph
ZGRBCiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZE51bWJlckxpc3QpOwogICAg
IEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKLSAgICBjb25zdCBTVkdOdW1i
ZXJMaXN0JiBmcm9tTnVtYmVyTGlzdCA9IGZyb20tPm51bWJlckxpc3QoKTsKLSAgICBTVkdOdW1i
ZXJMaXN0JiB0b051bWJlckxpc3QgPSB0by0+bnVtYmVyTGlzdCgpOworICAgIGNvbnN0IGF1dG8m
IGZyb21OdW1iZXJMaXN0ID0gZnJvbS0+bnVtYmVyTGlzdCgpOworICAgIGF1dG8mIHRvTnVtYmVy
TGlzdCA9IHRvLT5udW1iZXJMaXN0KCk7CiAKICAgICB1bnNpZ25lZCBmcm9tTnVtYmVyTGlzdFNp
emUgPSBmcm9tTnVtYmVyTGlzdC5zaXplKCk7CiAgICAgaWYgKCFmcm9tTnVtYmVyTGlzdFNpemUg
fHwgZnJvbU51bWJlckxpc3RTaXplICE9IHRvTnVtYmVyTGlzdC5zaXplKCkpCkBAIC04MiwxMSAr
ODIsMTEgQEAgdm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsYwogewogICAg
IEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogCi0gICAgY29uc3QgU1ZHTnVtYmVyTGlzdCYg
ZnJvbU51bWJlckxpc3QgPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBU
b0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5udW1iZXJMaXN0KCkgOiBmcm9tLT5udW1iZXJMaXN0KCk7
Ci0gICAgY29uc3QgU1ZHTnVtYmVyTGlzdCYgdG9OdW1iZXJMaXN0ID0gdG8tPm51bWJlckxpc3Qo
KTsKLSAgICBjb25zdCBTVkdOdW1iZXJMaXN0JiB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlckxpc3Qg
PSB0b0F0RW5kT2ZEdXJhdGlvbi0+bnVtYmVyTGlzdCgpOwotICAgIFNWR051bWJlckxpc3QmIGFu
aW1hdGVkTnVtYmVyTGlzdCA9IGFuaW1hdGVkLT5udW1iZXJMaXN0KCk7Ci0gICAgaWYgKCFtX2Fu
aW1hdGlvbkVsZW1lbnQtPmFkanVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHTnVtYmVyTGlzdD4oZnJv
bU51bWJlckxpc3QsIHRvTnVtYmVyTGlzdCwgYW5pbWF0ZWROdW1iZXJMaXN0LCBwZXJjZW50YWdl
KSkKKyAgICBjb25zdCBhdXRvJiBmcm9tTnVtYmVyTGlzdCA9IG1fYW5pbWF0aW9uRWxlbWVudC0+
YW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPm51bWJlckxpc3QoKSA6
IGZyb20tPm51bWJlckxpc3QoKTsKKyAgICBjb25zdCBhdXRvJiB0b051bWJlckxpc3QgPSB0by0+
bnVtYmVyTGlzdCgpOworICAgIGNvbnN0IGF1dG8mIHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyTGlz
dCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5udW1iZXJMaXN0KCk7CisgICAgYXV0byYgYW5pbWF0ZWRO
dW1iZXJMaXN0ID0gYW5pbWF0ZWQtPm51bWJlckxpc3QoKTsKKyAgICBpZiAoIW1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdOdW1iZXJMaXN0VmFsdWVzPihmcm9t
TnVtYmVyTGlzdCwgdG9OdW1iZXJMaXN0LCBhbmltYXRlZE51bWJlckxpc3QsIHBlcmNlbnRhZ2Up
KQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBmcm9tTnVtYmVyTGlzdFNpemUgPSBm
cm9tTnVtYmVyTGlzdC5zaXplKCk7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBTVkdBbmltYXRl
ZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsYwogCiBmbG9hdCBTVkdBbmltYXRlZE51bWJlckxpc3RB
bmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICAvLyBGSVhNRTogRGlzdGFuY2UgY2FsY3VsYXRpb24gaXMgbm90IHBvc3NpYmxlIGZv
ciBTVkdOdW1iZXJMaXN0IHJpZ2h0IG5vdy4gV2UgbmVlZCB0aGUgZGlzdGFuY2UgZm9yIGV2ZXJ5
IHNpbmdsZSB2YWx1ZS4KKyAgICAvLyBGSVhNRTogRGlzdGFuY2UgY2FsY3VsYXRpb24gaXMgbm90
IHBvc3NpYmxlIGZvciBTVkdOdW1iZXJMaXN0VmFsdWVzIHJpZ2h0IG5vdy4gV2UgbmVlZCB0aGUg
ZGlzdGFuY2UgZm9yIGV2ZXJ5IHNpbmdsZSB2YWx1ZS4KICAgICByZXR1cm4gLTE7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJKHJldmlzaW9u
IDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdXNpbmcgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmPFNWR051bWJlckxpc3Q+OwordXNpbmcgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0ID0gU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR051bWJlckxpc3RWYWx1ZXM+OwogCiAvLyBI
ZWxwZXIgbWFjcm9zIHRvIGRlY2xhcmUvZGVmaW5lIGEgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IG9i
amVjdAogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpIFwKLURFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShTVkdBbmlt
YXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCitERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
LCBTVkdOdW1iZXJMaXN0VmFsdWVzLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAj
ZGVmaW5lIERFRklORV9BTklNQVRFRF9OVU1CRVJfTElTVChPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAogREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKEFuaW1hdGVkTnVtYmVyTGlzdCwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJp
YnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTYsOSArNTYsOSBAQCB2b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpzdG9wQW5pbVZhCiB2
b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3Qg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzLCBTVkdQYXRoQnl0
ZVN0cmVhbSogYnl0ZVN0cmVhbSkKIHsKICAgICBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmKiBwcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGFuaW1hdGVkVHlwZXNbMF0ucHJv
cGVydGllc1swXS5nZXQoKSk7Ci0gICAgY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIGJhc2VWYWx1ZSA9
IHByb3BlcnR5LT5jdXJyZW50QmFzZVZhbHVlKCk7CisgICAgY29uc3QgYXV0byYgYmFzZVZhbHVl
ID0gcHJvcGVydHktPmN1cnJlbnRCYXNlVmFsdWUoKTsKIAotICAgIGJ1aWxkU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoYmFzZVZhbHVlLCAqYnl0ZVN0cmVhbSwgVW5hbHRlcmVk
UGFyc2luZyk7CisgICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdFZh
bHVlcyhiYXNlVmFsdWUsICpieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5nKTsKIAogICAgIFZl
Y3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4+IHJlc3Vs
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3Bw
CShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2lu
dExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiU1ZHUG9pbnQuaCIKLSNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKKyNpbmNsdWRl
ICJTVkdQb2ludExpc3RWYWx1ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCw3
ICszNCw3IEBAIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OlNWR0FuaW1hdGUKIAogc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRv
cjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhdXRv
IGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUG9pbnRMaXN0KHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHUG9pbnRMaXN0PigpKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlUG9pbnRMaXN0KHN0ZDo6bWFrZV91bmlxdWU8U1ZHUG9pbnRMaXN0
VmFsdWVzPigpKTsKICAgICBwb2ludHNMaXN0RnJvbVNWR0RhdGEoYW5pbWF0ZWRUeXBlLT5wb2lu
dExpc3QoKSwgc3RyaW5nKTsKICAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQpAQCAtNjksOCAr
NjksOCBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmFkZEFuCiAgICAgQVNT
RVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZFBvaW50cyk7CiAgICAgQVNTRVJUKGZyb20tPnR5
cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotICAgIGNvbnN0IFNWR1BvaW50TGlzdCYgZnJvbVBvaW50
TGlzdCA9IGZyb20tPnBvaW50TGlzdCgpOwotICAgIFNWR1BvaW50TGlzdCYgdG9Qb2ludExpc3Qg
PSB0by0+cG9pbnRMaXN0KCk7CisgICAgY29uc3QgYXV0byYgZnJvbVBvaW50TGlzdCA9IGZyb20t
PnBvaW50TGlzdCgpOworICAgIGF1dG8mIHRvUG9pbnRMaXN0ID0gdG8tPnBvaW50TGlzdCgpOwog
CiAgICAgdW5zaWduZWQgZnJvbVBvaW50TGlzdFNpemUgPSBmcm9tUG9pbnRMaXN0LnNpemUoKTsK
ICAgICBpZiAoIWZyb21Qb2ludExpc3RTaXplIHx8IGZyb21Qb2ludExpc3RTaXplICE9IHRvUG9p
bnRMaXN0LnNpemUoKSkKQEAgLTg0LDExICs4NCwxMSBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3I6OmNhbGN1CiB7CiAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAK
LSAgICBjb25zdCBTVkdQb2ludExpc3QmIGZyb21Qb2ludExpc3QgPSBtX2FuaW1hdGlvbkVsZW1l
bnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5wb2ludExpc3Qo
KSA6IGZyb20tPnBvaW50TGlzdCgpOwotICAgIGNvbnN0IFNWR1BvaW50TGlzdCYgdG9Qb2ludExp
c3QgPSB0by0+cG9pbnRMaXN0KCk7Ci0gICAgY29uc3QgU1ZHUG9pbnRMaXN0JiB0b0F0RW5kT2ZE
dXJhdGlvblBvaW50TGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5wb2ludExpc3QoKTsKLSAgICBT
VkdQb2ludExpc3QmIGFuaW1hdGVkUG9pbnRMaXN0ID0gYW5pbWF0ZWQtPnBvaW50TGlzdCgpOwot
ICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR1Bv
aW50TGlzdD4oZnJvbVBvaW50TGlzdCwgdG9Qb2ludExpc3QsIGFuaW1hdGVkUG9pbnRMaXN0LCBw
ZXJjZW50YWdlKSkKKyAgICBjb25zdCBhdXRvJiBmcm9tUG9pbnRMaXN0ID0gbV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+cG9pbnRM
aXN0KCkgOiBmcm9tLT5wb2ludExpc3QoKTsKKyAgICBjb25zdCBhdXRvJiB0b1BvaW50TGlzdCA9
IHRvLT5wb2ludExpc3QoKTsKKyAgICBjb25zdCBhdXRvJiB0b0F0RW5kT2ZEdXJhdGlvblBvaW50
TGlzdCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5wb2ludExpc3QoKTsKKyAgICBhdXRvJiBhbmltYXRl
ZFBvaW50TGlzdCA9IGFuaW1hdGVkLT5wb2ludExpc3QoKTsKKyAgICBpZiAoIW1fYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdQb2ludExpc3RWYWx1ZXM+KGZyb21Q
b2ludExpc3QsIHRvUG9pbnRMaXN0LCBhbmltYXRlZFBvaW50TGlzdCwgcGVyY2VudGFnZSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGZyb21Qb2ludExpc3RTaXplID0gZnJvbVBv
aW50TGlzdC5zaXplKCk7CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBTVkdBbmltYXRlZFBvaW50
TGlzdEFuaW1hdG9yOjpjYWxjdQogCiBmbG9hdCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9y
OjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewotICAg
IC8vIEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR1Bv
aW50TGlzdCByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIG9mIGZvciBldmVyeSBzaW5n
bGUgdmFsdWUuCisgICAgLy8gRklYTUU6IERpc3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5vdCBwb3Nz
aWJsZSBmb3IgU1ZHUG9pbnRMaXN0VmFsdWVzIHJpZ2h0IG5vdy4gV2UgbmVlZCB0aGUgZGlzdGFu
Y2Ugb2YgZm9yIGV2ZXJ5IHNpbmdsZSB2YWx1ZS4KICAgICByZXR1cm4gLTE7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oCShyZXZpc2lvbiAyMDg3
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVk
ZWYgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gU1ZHQW5pbWF0
ZWRQb2ludExpc3Q7Cit1c2luZyBTVkdBbmltYXRlZFBvaW50TGlzdCA9IFNWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3RWYWx1ZXM+OwogCiBjbGFzcyBTVkdBbmltYXRp
b25FbGVtZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OlNWR0FuaQogCiBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
cjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhdXRv
IGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3JtTGlzdChzdGQ6
Om1ha2VfdW5pcXVlPFNWR1RyYW5zZm9ybUxpc3Q+KCkpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBl
ID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVUcmFuc2Zvcm1MaXN0KHN0ZDo6bWFrZV91bmlxdWU8
U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4oKSk7CiAgICAgYW5pbWF0ZWRUeXBlLT50cmFuc2Zvcm1M
aXN0KCkucGFyc2UobV90cmFuc2Zvcm1UeXBlU3RyaW5nICsgc3RyaW5nICsgJyknKTsKICAgICBB
U1NFUlQoYW5pbWF0ZWRUeXBlLT50cmFuc2Zvcm1MaXN0KCkuc2l6ZSgpIDw9IDEpOwogICAgIHJl
dHVybiBhbmltYXRlZFR5cGU7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvcjo6YwogICAgIGF1dG8mIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9
IGFuaW1hdGVkLT50cmFuc2Zvcm1MaXN0KCk7CiAKICAgICAvLyBQYXNzIGZhbHNlIHRvICdyZXNp
emVBbmltYXRlZExpc3RJZk5lZWRlZCcgaGVyZSwgYXMgdGhlIHNwZWNpYWwgcG9zdC1tdWx0aXBs
aWNhdGlvbiBiZWhhdmlvciBvZiA8YW5pbWF0ZVRyYW5zZm9ybT4gbmVlZHMgdG8gYmUgcmVzcGVj
dGVkIGJlbG93LgotICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0
VmFsdWVzPFNWR1RyYW5zZm9ybUxpc3Q+KGZyb21UcmFuc2Zvcm1MaXN0LCB0b1RyYW5zZm9ybUxp
c3QsIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCwgcGVyY2VudGFnZSwgZmFsc2UpKQorICAgIGlmICgh
bV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR1RyYW5zZm9ybUxp
c3RWYWx1ZXM+KGZyb21UcmFuc2Zvcm1MaXN0LCB0b1RyYW5zZm9ybUxpc3QsIGFuaW1hdGVkVHJh
bnNmb3JtTGlzdCwgcGVyY2VudGFnZSwgZmFsc2UpKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBOZXZlciByZXNpemUgdGhlIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0byB0aGUgdG9UcmFuc2Zv
cm1MaXN0IHNpemUsIGluc3RlYWQgZWl0aGVyIGNsZWFyIHRoZSBsaXN0IG9yIGFwcGVuZCB0byBp
dC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTQgKzIxLDE1IEBACiAKICNpbmNs
dWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRl
ICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q7Cit1c2luZyBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QgPSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRl
YXJPZmY7CiAKIC8vIEhlbHBlciBtYWNyb3MgdG8gZGVjbGFyZS9kZWZpbmUgYSBTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3Qgb2JqZWN0CiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JN
X0xJU1QoVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVDTEFSRV9BTklNQVRFRF9M
SVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHVHJhbnNmb3JtTGlzdCwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9Q
RVJUWShTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1RS
QU5TRk9STV9MSVNUKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dl
clByb3BlcnR5KSBcCiBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbQogICAgIHJldHVybiBhbmltYXRl
ZFR5cGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVk
VHlwZTo6Y3JlYXRlTGVuZ3RoTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHTGVuZ3RoTGlzdD4gbGVu
Z3RoTGlzdCkKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlw
ZTo6Y3JlYXRlTGVuZ3RoTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHTGVuZ3RoTGlzdFZhbHVlcz4g
bGVuZ3RoTGlzdCkKIHsKICAgICBBU1NFUlQobGVuZ3RoTGlzdCk7CiAgICAgYXV0byBhbmltYXRl
ZFR5cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWRMZW5ndGhM
aXN0KTsKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXJMaXN0KHN0ZDo6
dW5pcXVlX3B0cjxTVkdOdW1iZXJMaXN0PiBudW1iZXJMaXN0KQorc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXJMaXN0KHN0ZDo6dW5p
cXVlX3B0cjxTVkdOdW1iZXJMaXN0VmFsdWVzPiBudW1iZXJMaXN0KQogewogICAgIEFTU0VSVChu
dW1iZXJMaXN0KTsKICAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRUeXBlPihBbmltYXRlZE51bWJlckxpc3QpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW0KICAgICByZXR1cm4gYW5pbWF0
ZWRUeXBlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZVBvaW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHUG9pbnRMaXN0PiBwb2lu
dExpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZVBvaW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHUG9pbnRMaXN0VmFsdWVzPiBwb2lu
dExpc3QpCiB7CiAgICAgQVNTRVJUKHBvaW50TGlzdCk7CiAgICAgYXV0byBhbmltYXRlZFR5cGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWRQb2ludHMpOwpAQCAt
MjE4LDcgKzIxOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW0K
ICAgICByZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVRyYW5zZm9ybUxpc3Qoc3RkOjp1bmlxdWVf
cHRyPFNWR1RyYW5zZm9ybUxpc3Q+IHRyYW5zZm9ybUxpc3QpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVRyYW5zZm9ybUxpc3Qoc3RkOjp1
bmlxdWVfcHRyPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+IHRyYW5zZm9ybUxpc3QpCiB7CiAgICAg
QVNTRVJUKHRyYW5zZm9ybUxpc3QpOwogICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEz
ICsyMiwxMyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlNWR0FuZ2xlVmFs
dWUuaCIKICNpbmNsdWRlICJTVkdDb2xvci5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIK
KyNpbmNsdWRlICJTVkdMZW5ndGhMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoVmFs
dWUuaCIKLSNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0
LmgiCisjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdFZhbHVlcy5oIgorI2luY2x1ZGUgIlNWR1BvaW50
TGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oIgog
I2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3Qu
aCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDcsMTYgKzQ3LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlSW50ZWdlcihzdGQ6OnVuaXF1ZV9wdHI8aW50
Pik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUlu
dGVnZXJPcHRpb25hbEludGVnZXIoc3RkOjp1bmlxdWVfcHRyPHN0ZDo6cGFpcjxpbnQsIGludD4+
KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVu
Z3RoKHN0ZDo6dW5pcXVlX3B0cjxTVkdMZW5ndGhWYWx1ZT4pOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGhMaXN0KHN0ZDo6dW5pcXVlX3B0
cjxTVkdMZW5ndGhMaXN0Pik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRl
ZFR5cGU+IGNyZWF0ZUxlbmd0aExpc3Qoc3RkOjp1bmlxdWVfcHRyPFNWR0xlbmd0aExpc3RWYWx1
ZXM+KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRl
TnVtYmVyKHN0ZDo6dW5pcXVlX3B0cjxmbG9hdD4pOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXJMaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdO
dW1iZXJMaXN0Pik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
IGNyZWF0ZU51bWJlckxpc3Qoc3RkOjp1bmlxdWVfcHRyPFNWR051bWJlckxpc3RWYWx1ZXM+KTsK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVy
T3B0aW9uYWxOdW1iZXIoc3RkOjp1bmlxdWVfcHRyPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+Pik7
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBhdGgo
c3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPik7Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBvaW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8
U1ZHUG9pbnRMaXN0Pik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IGNyZWF0ZVBvaW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHUG9pbnRMaXN0VmFsdWVzPik7
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVByZXNl
cnZlQXNwZWN0UmF0aW8oc3RkOjp1bmlxdWVfcHRyPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZT4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVS
ZWN0KHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFJlY3Q+KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlU3RyaW5nKHN0ZDo6dW5pcXVlX3B0cjxTdHJpbmc+
KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlVHJh
bnNmb3JtTGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHVHJhbnNmb3JtTGlzdD4pOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVUcmFuc2Zvcm1MaXN0KHN0
ZDo6dW5pcXVlX3B0cjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPik7CiAgICAgc3RhdGljIGJvb2wg
c3VwcG9ydHNBbmltVmFsKEFuaW1hdGVkUHJvcGVydHlUeXBlKTsKIAogICAgIEFuaW1hdGVkUHJv
cGVydHlUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTEwNCw3ICsxMDQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9kYXRhLmxlbmd0aDsKICAgICB9CiAKLSAg
ICBjb25zdCBTVkdMZW5ndGhMaXN0JiBsZW5ndGhMaXN0KCkgY29uc3QKKyAgICBjb25zdCBTVkdM
ZW5ndGhMaXN0VmFsdWVzJiBsZW5ndGhMaXN0KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gQW5pbWF0ZWRMZW5ndGhMaXN0KTsKICAgICAgICAgcmV0dXJuICptX2RhdGEu
bGVuZ3RoTGlzdDsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAq
bV9kYXRhLm51bWJlcjsKICAgICB9CiAKLSAgICBjb25zdCBTVkdOdW1iZXJMaXN0JiBudW1iZXJM
aXN0KCkgY29uc3QKKyAgICBjb25zdCBTVkdOdW1iZXJMaXN0VmFsdWVzJiBudW1iZXJMaXN0KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWROdW1iZXJMaXN0
KTsKICAgICAgICAgcmV0dXJuICptX2RhdGEubnVtYmVyTGlzdDsKQEAgLTEzNCw3ICsxMzQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RhdGEucGF0aDsKICAgICB9CiAKLSAgICBjb25z
dCBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpIGNvbnN0CisgICAgY29uc3QgU1ZHUG9pbnRMaXN0
VmFsdWVzJiBwb2ludExpc3QoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBBbmltYXRlZFBvaW50cyk7CiAgICAgICAgIHJldHVybiAqbV9kYXRhLnBvaW50TGlzdDsKQEAg
LTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9kYXRhLnN0cmluZzsK
ICAgICB9CiAKLSAgICBjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiB0cmFuc2Zvcm1MaXN0KCkgY29u
c3QKKyAgICBjb25zdCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiB0cmFuc2Zvcm1MaXN0KCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
KTsKICAgICAgICAgcmV0dXJuICptX2RhdGEudHJhbnNmb3JtTGlzdDsKQEAgLTIwNyw3ICsyMDcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9kYXRhLmxlbmd0aDsKICAgICB9CiAKLSAg
ICBTVkdMZW5ndGhMaXN0JiBsZW5ndGhMaXN0KCkKKyAgICBTVkdMZW5ndGhMaXN0VmFsdWVzJiBs
ZW5ndGhMaXN0KCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRMZW5n
dGhMaXN0KTsKICAgICAgICAgcmV0dXJuICptX2RhdGEubGVuZ3RoTGlzdDsKQEAgLTIxOSw3ICsy
MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9kYXRhLm51bWJlcjsKICAgICB9CiAK
LSAgICBTVkdOdW1iZXJMaXN0JiBudW1iZXJMaXN0KCkKKyAgICBTVkdOdW1iZXJMaXN0VmFsdWVz
JiBudW1iZXJMaXN0KCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRO
dW1iZXJMaXN0KTsKICAgICAgICAgcmV0dXJuICptX2RhdGEubnVtYmVyTGlzdDsKQEAgLTIzNyw3
ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RhdGEucGF0aDsKICAgICB9CiAK
LSAgICBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpCisgICAgU1ZHUG9pbnRMaXN0VmFsdWVzJiBw
b2ludExpc3QoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFBvaW50
cyk7CiAgICAgICAgIHJldHVybiAqbV9kYXRhLnBvaW50TGlzdDsKQEAgLTI2MSw3ICsyNjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9kYXRhLnN0cmluZzsKICAgICB9CiAKLSAgICBT
VkdUcmFuc2Zvcm1MaXN0JiB0cmFuc2Zvcm1MaXN0KCkKKyAgICBTVkdUcmFuc2Zvcm1MaXN0VmFs
dWVzJiB0cmFuc2Zvcm1MaXN0KCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0KTsKICAgICAgICAgcmV0dXJuICptX2RhdGEudHJhbnNmb3JtTGlz
dDsKQEAgLTI4NiwxNiArMjg2LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIGludCogaW50ZWdlcjsK
ICAgICAgICAgc3RkOjpwYWlyPGludCwgaW50PiogaW50ZWdlck9wdGlvbmFsSW50ZWdlcjsKICAg
ICAgICAgU1ZHTGVuZ3RoVmFsdWUqIGxlbmd0aDsKLSAgICAgICAgU1ZHTGVuZ3RoTGlzdCogbGVu
Z3RoTGlzdDsKKyAgICAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogbGVuZ3RoTGlzdDsKICAgICAg
ICAgZmxvYXQqIG51bWJlcjsKLSAgICAgICAgU1ZHTnVtYmVyTGlzdCogbnVtYmVyTGlzdDsKKyAg
ICAgICAgU1ZHTnVtYmVyTGlzdFZhbHVlcyogbnVtYmVyTGlzdDsKICAgICAgICAgc3RkOjpwYWly
PGZsb2F0LCBmbG9hdD4qIG51bWJlck9wdGlvbmFsTnVtYmVyOwogICAgICAgICBTVkdQYXRoQnl0
ZVN0cmVhbSogcGF0aDsKICAgICAgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlKiBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvOwotICAgICAgICBTVkdQb2ludExpc3QqIHBvaW50TGlzdDsKKyAgICAg
ICAgU1ZHUG9pbnRMaXN0VmFsdWVzKiBwb2ludExpc3Q7CiAgICAgICAgIEZsb2F0UmVjdCogcmVj
dDsKICAgICAgICAgU3RyaW5nKiBzdHJpbmc7Ci0gICAgICAgIFNWR1RyYW5zZm9ybUxpc3QqIHRy
YW5zZm9ybUxpc3Q7CisgICAgICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMqIHRyYW5zZm9ybUxp
c3Q7CiAgICAgfSBtX2RhdGE7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNs
dWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC02ODUsNCArNjg2LDE5IEBA
IHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Y2hlY2tJbnZhbGlkQ1MKICAgICBtX2hhc0ludmFs
aWRDU1NBdHRyaWJ1dGVUeXBlID0gdGFyZ2V0ICYmIGhhc1ZhbGlkQXR0cmlidXRlTmFtZSgpICYm
IGF0dHJpYnV0ZVR5cGUoKSA9PSBBdHRyaWJ1dGVUeXBlOjpDU1MgJiYgIWlzVGFyZ2V0QXR0cmli
dXRlQ1NTUHJvcGVydHkodGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKCkpOwogfQogCitSZWY8U1ZHU3Ry
aW5nTGlzdD4gU1ZHQW5pbWF0aW9uRWxlbWVudDo6cmVxdWlyZWRGZWF0dXJlcygpCit7CisgICAg
cmV0dXJuIFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKCp0aGlzKTsKK30KKworUmVmPFNWR1N0
cmluZ0xpc3Q+IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnJlcXVpcmVkRXh0ZW5zaW9ucygpCit7IAor
ICAgIHJldHVybiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKCp0aGlzKTsKK30KKworUmVm
PFNWR1N0cmluZ0xpc3Q+IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5c3RlbUxhbmd1YWdlKCkKK3sK
KyAgICByZXR1cm4gU1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlKCp0aGlzKTsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAyMDg3
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDYsNiArMTQ2LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFuaW1hdGVk
TnVtYmVyID0gbnVtYmVyOwogICAgIH0KIAorICAgIC8vIFNWR1Rlc3RzCisgICAgUmVmPFNWR1N0
cmluZ0xpc3Q+IHJlcXVpcmVkRmVhdHVyZXMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gcmVx
dWlyZWRFeHRlbnNpb25zKCk7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHN5c3RlbUxhbmd1YWdl
KCk7CisKIHByb3RlY3RlZDoKICAgICBTVkdBbmltYXRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogCkBAIC0yMDgsOSArMjEzLDkgQEAgcHJpdmF0ZToKICAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBTVkdUZXN0cwotICAgIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucygpIG92ZXJyaWRlIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsg
fQorICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucygqdGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCp0aGlz
KTsgfQogCiAgICAgdm9pZCBzZXRDYWxjTW9kZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
ODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgot
I2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQAogCiAjaW5jbHVkZSAiU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKKyNpbmNsdWRlICJT
VkdOdW1iZXJMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVz
Ojp0YWJsZVZhbHVlc0F0dHIpIHsKLSAgICAgICAgU1ZHTnVtYmVyTGlzdCBuZXdMaXN0OworICAg
ICAgICBTVkdOdW1iZXJMaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2Uo
dmFsdWUpOwogICAgICAgICBkZXRhY2hBbmltYXRlZFRhYmxlVmFsdWVzTGlzdFdyYXBwZXJzKG5l
d0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0VGFibGVWYWx1ZXNCYXNlVmFsdWUobmV3TGlzdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1
ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTEyMiw0ICsxMjMsMTkgQEAgdm9pZCBTVkdDdXJz
b3JFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dAogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMs
IGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKSk7CiB9CiAKK1JlZjxTVkdTdHJpbmdMaXN0
PiBTVkdDdXJzb3JFbGVtZW50OjpyZXF1aXJlZEZlYXR1cmVzKCkKK3sKKyAgICByZXR1cm4gU1ZH
VGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlzdD4g
U1ZHQ3Vyc29yRWxlbWVudDo6cmVxdWlyZWRFeHRlbnNpb25zKCkKK3sgCisgICAgcmV0dXJuIFNW
R1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlz
dD4gU1ZHQ3Vyc29yRWxlbWVudDo6c3lzdGVtTGFuZ3VhZ2UoKQoreworICAgIHJldHVybiBTVkdU
ZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsKIAotY2xh
c3MgU1ZHQ3Vyc29yRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlIHsKK2NsYXNz
IFNWR0N1cnNvckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCwgcHVibGljIFNWR1Rl
c3RzLCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgcHVibGljIFNWR1VSSVJl
ZmVyZW5jZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdDdXJzb3JFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTQ0LDYgKzQxLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZENsaWVudChDU1NDdXJzb3JJbWFnZVZhbHVlJik7CiAgICAg
dm9pZCByZW1vdmVDbGllbnQoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpOwogCisgICAgLy8gU1ZHVGVz
dHMKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gcmVxdWlyZWRGZWF0dXJlcygpOworICAgIFJlZjxT
VkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4dGVuc2lvbnMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlz
dD4gc3lzdGVtTGFuZ3VhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBTVkdDdXJzb3JFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCkBAIC02NSw5ICs2Nyw5IEBAIHByaXZh
dGU6CiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgLy8gU1ZHVGVz
dHMKLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIGZpbmFsIHsgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQotICAgIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQotICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSgpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7
IH0KKyAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIGZpbmFsIHsgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygqdGhpcyk7IH0KKyAgICB2b2lkIHN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMoKnRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgqdGhp
cyk7IH0KIAogICAgIEhhc2hTZXQ8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+IG1fY2xpZW50czsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaQogICAgIH0KIAogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjp2YWx1ZXNBdHRyKSB7Ci0gICAgICAgIFNWR051bWJlckxpc3QgbmV3TGlzdDsK
KyAgICAgICAgU1ZHTnVtYmVyTGlzdFZhbHVlcyBuZXdMaXN0OwogICAgICAgICBuZXdMaXN0LnBh
cnNlKHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRWYWx1ZXNMaXN0V3JhcHBlcnMobmV3
TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRWYWx1ZXNCYXNlVmFsdWUobmV3TGlzdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUg
IlNWR1BhcnNlclV0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMjQsNyAr
MTI1LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cGFyc2VBdAogICAgIH0K
IAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRyKSB7Ci0gICAgICAg
IFNWR051bWJlckxpc3QgbmV3TGlzdDsKKyAgICAgICAgU1ZHTnVtYmVyTGlzdFZhbHVlcyBuZXdM
aXN0OwogICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0
ZWRLZXJuZWxNYXRyaXhMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRL
ZXJuZWxNYXRyaXhCYXNlVmFsdWUobmV3TGlzdCk7CkBAIC0yMzMsNyArMjM0LDcgQEAgdm9pZCBT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cgogCiBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBhdXRvKiBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmICghaW5wdXQx
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0Nyw3ICsyNDgsNyBAQCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4CiAgICAgLy8gU3BlYyBzYXlzIG9yZGVyIG11
c3QgYmUgPiAwLiBCYWlsIGlmIGl0IGlzIG5vdC4KICAgICBpZiAob3JkZXJYVmFsdWUgPCAxIHx8
IG9yZGVyWVZhbHVlIDwgMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgU1ZHTnVtYmVy
TGlzdCYga2VybmVsTWF0cml4ID0gdGhpcy0+a2VybmVsTWF0cml4KCk7CisgICAgYXV0byYga2Vy
bmVsTWF0cml4ID0gdGhpcy0+a2VybmVsTWF0cml4KCk7CiAgICAgaW50IGtlcm5lbE1hdHJpeFNp
emUgPSBrZXJuZWxNYXRyaXguc2l6ZSgpOwogICAgIC8vIFRoZSBzcGVjIHNheXMgdGhpcyBpcyBh
IHJlcXVpcmVtZW50LCBhbmQgc2hvdWxkIGJhaWwgb3V0IGlmIGZhaWxzCiAgICAgaWYgKG9yZGVy
WFZhbHVlICogb3JkZXJZVmFsdWUgIT0ga2VybmVsTWF0cml4U2l6ZSkKQEAgLTI4NiwxMiArMjg3
LDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeAogICAgICAgICAg
ICAgZGl2aXNvclZhbHVlID0gMTsKICAgICB9CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRUNvbnZvbHZlTWF0cml4OjpjcmVhdGUoZmlsdGVyLAotICAgICAgICAgICAgICAg
ICAgICBJbnRTaXplKG9yZGVyWFZhbHVlLCBvcmRlcllWYWx1ZSksIGRpdmlzb3JWYWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgYmlhcygpLCBJbnRQb2ludCh0YXJnZXRYVmFsdWUsIHRhcmdldFlW
YWx1ZSksIGVkZ2VNb2RlKCksCi0gICAgICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoa2VybmVs
VW5pdExlbmd0aFhWYWx1ZSwga2VybmVsVW5pdExlbmd0aFlWYWx1ZSksIHByZXNlcnZlQWxwaGEo
KSwga2VybmVsTWF0cml4KTsKKyAgICBhdXRvIGVmZmVjdCA9IEZFQ29udm9sdmVNYXRyaXg6OmNy
ZWF0ZShmaWx0ZXIsIEludFNpemUob3JkZXJYVmFsdWUsIG9yZGVyWVZhbHVlKSwgZGl2aXNvclZh
bHVlLCBiaWFzKCksIEludFBvaW50KHRhcmdldFhWYWx1ZSwgdGFyZ2V0WVZhbHVlKSwgZWRnZU1v
ZGUoKSwgRmxvYXRQb2ludChrZXJuZWxVbml0TGVuZ3RoWFZhbHVlLCBrZXJuZWxVbml0TGVuZ3Ro
WVZhbHVlKSwgcHJlc2VydmVBbHBoYSgpLCBrZXJuZWxNYXRyaXgpOwogICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7Ci0gICAgcmV0dXJuIGVmZmVjdDsKKyAgICByZXR1
cm4gV1RGTW92ZShlZmZlY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Nzc1
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZVJhZGlh
bEdyYWRpZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTdG9wRWxl
bWVudC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKKyNpbmNsdWRlICJTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgogI2luY2x1
ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCkBAIC04NCw3ICs4
NCw3IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSgKICAgICB9CiAK
ICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSB7Ci0gICAg
ICAgIFNWR1RyYW5zZm9ybUxpc3QgbmV3TGlzdDsKKyAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcyBuZXdMaXN0OwogICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsKICAgICAgICAgZGV0
YWNoQW5pbWF0ZWRHcmFkaWVudFRyYW5zZm9ybUxpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7
CiAgICAgICAgIHNldEdyYWRpZW50VHJhbnNmb3JtQmFzZVZhbHVlKG5ld0xpc3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRl
ICJTVkdQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlNWR1JlY3QuaCIKKyNpbmNsdWRlICJTVkdTdHJp
bmdMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTEyMSw3ICsxMjIsNyBAQCBib29sIFNWR0dyYXBoaWNzRWxlbWVudDo6aXNT
dXBwb3J0ZWRBdHRyCiB2b2lkIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikgewotICAgICAgICBTVkdUcmFu
c2Zvcm1MaXN0IG5ld0xpc3Q7CisgICAgICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgbmV3TGlz
dDsKICAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSk7CiAgICAgICAgIGRldGFjaEFuaW1hdGVk
VHJhbnNmb3JtTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0VHJhbnNm
b3JtQmFzZVZhbHVlKG5ld0xpc3QpOwpAQCAtMTg5LDQgKzE5MCwxOSBAQCB2b2lkIFNWR0dyYXBo
aWNzRWxlbWVudDo6dG9DbGlwUGF0aChQYXRoCiAgICAgcGF0aC50cmFuc2Zvcm0oYW5pbWF0ZWRM
b2NhbFRyYW5zZm9ybSgpKTsKIH0KIAorUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR0dyYXBoaWNzRWxl
bWVudDo6cmVxdWlyZWRGZWF0dXJlcygpCit7CisgICAgcmV0dXJuIFNWR1Rlc3RzOjpyZXF1aXJl
ZEZlYXR1cmVzKCp0aGlzKTsKK30KKworUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR0dyYXBoaWNzRWxl
bWVudDo6cmVxdWlyZWRFeHRlbnNpb25zKCkKK3sgCisgICAgcmV0dXJuIFNWR1Rlc3RzOjpyZXF1
aXJlZEV4dGVuc2lvbnMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHR3JhcGhp
Y3NFbGVtZW50OjpzeXN0ZW1MYW5ndWFnZSgpCit7CisgICAgcmV0dXJuIFNWR1Rlc3RzOjpzeXN0
ZW1MYW5ndWFnZSgqdGhpcyk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
cGhpY3NFbGVtZW50LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFwaGljc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTEgQEAgcHVi
bGljOgogCiAgICAgc2l6ZV90IGFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHNpemVvZigqdGhpcyk7IH0KIAorICAgIC8vIFNWR1Rlc3RzCisgICAgUmVmPFNW
R1N0cmluZ0xpc3Q+IHJlcXVpcmVkRmVhdHVyZXMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4g
cmVxdWlyZWRFeHRlbnNpb25zKCk7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHN5c3RlbUxhbmd1
YWdlKCk7CisKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTc5LDkgKzg0LDkgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAK
ICAgICAvLyBTVkdUZXN0cwotICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkg
b3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9
Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIG92ZXJyaWRlIHsgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9Ci0gICAgdm9pZCBz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCp0
aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSBmaW5hbCB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygqdGhpcyk7IH0KKyAgICB2
b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKCp0aGlzKTsgfQogCiAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1v
dGlvbj4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWZmaW5lVHJhbnNmb3JtPiBtX3N1cHBsZW1lbnRh
bFRyYW5zZm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgJKHJldmlzaW9uIDIwODc3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
OSArNDgsOCBAQCBwdWJsaWM6CiAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BDID0gTGVuZ3RoVHlw
ZVBDCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xl
bmd0aFZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aD4gY3JlYXRlKFNWR0Fu
aW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBT
VkdMZW5ndGhWYWx1ZSYgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9w
ZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0xlbmd0aChhbmltYXRlZFBy
b3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KIApAQCAtMTU1LDggKzE1NCw4IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHTGVuZ3RoKFNWR0FuaW1hdGVkUHJvcGVydHkq
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdMZW5ndGhWYWx1ZSYg
dmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aFZhbHVlPihhbmlt
YXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKKyAgICBTVkdMZW5ndGgoU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0aFZh
bHVlJiB2YWx1ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoVmFsdWU+
KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJTVkdMZW5ndGhMaXN0LmgiCi0KLSNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIK
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotdm9pZCBTVkdMZW5ndGhMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlLCBTVkdM
ZW5ndGhNb2RlIG1vZGUpCi17Ci0gICAgY2xlYXIoKTsKLQotICAgIGF1dG8gdXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzID0gU3RyaW5nVmlldyh2YWx1ZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0g
ICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAgICBjb25zdCBV
Q2hhciogZW5kID0gcHRyICsgdmFsdWUubGVuZ3RoKCk7Ci0gICAgd2hpbGUgKHB0ciA8IGVuZCkg
ewotICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBwdHI7Ci0gICAgICAgIHdoaWxlIChwdHIg
PCBlbmQgJiYgKnB0ciAhPSAnLCcgJiYgIWlzU1ZHU3BhY2UoKnB0cikpCi0gICAgICAgICAgICBw
dHIrKzsKLSAgICAgICAgaWYgKHB0ciA9PSBzdGFydCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aChtb2RlKTsKLSAgICAgICAgU3RyaW5nIHZhbHVl
U3RyaW5nKHN0YXJ0LCBwdHIgLSBzdGFydCk7Ci0gICAgICAgIGlmICh2YWx1ZVN0cmluZy5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChsZW5ndGguc2V0VmFsdWVB
c1N0cmluZyh2YWx1ZVN0cmluZykuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGFwcGVuZChsZW5ndGgpOwotICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNP
ckRlbGltaXRlcihwdHIsIGVuZCk7Ci0gICAgfQotfQotCi1TdHJpbmcgU1ZHTGVuZ3RoTGlzdDo6
dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotCi0g
ICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSkudmFsdWVBc1N0
cmluZygpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi19
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
ZW5ndGhMaXN0LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
ZW5ndGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzEsNTEgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCiAgKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhMaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAi
U1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNWR0xlbmd0aDsKLQotY2xhc3MgU1ZHTGVuZ3RoTGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8
U1ZHTGVuZ3RoVmFsdWU+IHsKK2NsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJsaWMgU1ZHTGlzdFBy
b3BlcnR5VGVhck9mZjxTVkdMZW5ndGhMaXN0VmFsdWVzPiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBw
YXJzZShjb25zdCBTdHJpbmcmIHZhbHVlLCBTVkdMZW5ndGhNb2RlKTsKLSAgICBTdHJpbmcgdmFs
dWVBc1N0cmluZygpIGNvbnN0OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8U1ZHTGVuZ3RoTGlzdD4gewotICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR0xlbmd0
aFZhbHVlOwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR0xlbmd0aDsKKyAgICB1c2lu
ZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmY8U1ZHTGVuZ3RoTGlzdFZhbHVlcz47CisgICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9
IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKIAotICAgIHN0
YXRpYyBTVkdMZW5ndGhMaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuICB7IH07IH0KLSAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aExpc3QmIHR5cGUpIHsgcmV0dXJu
IHR5cGUudmFsdWVBc1N0cmluZygpOyB9CisgICAgc3RhdGljIFJlZjxTVkdMZW5ndGhMaXN0PiBj
cmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQ
cm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTGVuZ3RoTGlzdFZhbHVlcyYgdmFsdWVzLCBMaXN0V3JhcHBl
ckNhY2hlJiB3cmFwcGVycykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNW
R0xlbmd0aExpc3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTVkdMZW5ndGhMaXN0KEFuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0
aExpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgICAg
IDogU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdMZW5ndGhMaXN0VmFsdWVzPihhbmltYXRlZFBy
b3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJzKQorICAgIHsKKyAgICB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlz
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaWRs
CShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLWludGVyZmFjZSBTVkdMZW5ndGhMaXN0IHsKK1sKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlv
bgorXSBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZJdGVtczsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBjbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVz
LmNwcAkocmV2aXNpb24gMjA4NzA1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3Ro
TGlzdC5jcHA6MjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKKwor
I2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNWR0xlbmd0aExpc3Q6
OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSkKK3sKKyAgICBj
bGVhcigpOworCisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZh
bHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogcHRyID0gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyB2YWx1ZS5s
ZW5ndGgoKTsKKyAgICB3aGlsZSAocHRyIDwgZW5kKSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBz
dGFydCA9IHB0cjsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRyICE9ICcsJyAmJiAh
aXNTVkdTcGFjZSgqcHRyKSkKKyAgICAgICAgICAgIHB0cisrOworICAgICAgICBpZiAocHRyID09
IHN0YXJ0KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVu
Z3RoKG1vZGUpOworICAgICAgICBTdHJpbmcgdmFsdWVTdHJpbmcoc3RhcnQsIHB0ciAtIHN0YXJ0
KTsKKyAgICAgICAgaWYgKHZhbHVlU3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKGxlbmd0aC5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlU3RyaW5nKS5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXBwZW5kKGxlbmd0aCk7
CisgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0ciwgZW5kKTsKKyAg
ICB9Cit9CisKK1N0cmluZyBTVkdMZW5ndGhMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK3sK
KyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+
c2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
ICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKworICAgICAg
ICBidWlsZGVyLmFwcGVuZChhdChpKS52YWx1ZUFzU3RyaW5nKCkpOworICAgIH0KKworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTks
MTQgKzE5LDE0IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0xl
bmd0aExpc3QuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhMaXN0VmFsdWVzLmgiCiAKICNpbmNsdWRl
ICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTVkdMZW5ndGhMaXN0OjpwYXJzZShj
b25zdCBTdHJpbmcmIHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUpCit2b2lkIFNWR0xlbmd0aExp
c3RWYWx1ZXM6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSkK
IHsKICAgICBjbGVhcigpOwogCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgU1ZHTGVuZ3RoTGlzdDo6
cGFyc2UoY29uc3QgU3RyaW5nJiAKICAgICB9CiB9CiAKLVN0cmluZyBTVkdMZW5ndGhMaXN0Ojp2
YWx1ZUFzU3RyaW5nKCkgY29uc3QKK1N0cmluZyBTVkdMZW5ndGhMaXN0VmFsdWVzOjp2YWx1ZUFz
U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjA4NzA1KQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oOjIwODcwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0xlbmd0aDsKKworY2xhc3MgU1ZHTGVuZ3Ro
TGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHsKK3B1YmxpYzoKKyAg
ICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0xlbmd0aE1vZGUpOworICAgIFN0
cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhMaXN0PiB7CisgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0g
U1ZHTGVuZ3RoVmFsdWU7CisgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHTGVuZ3RoOwor
CisgICAgc3RhdGljIFNWR0xlbmd0aExpc3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gIHsgfTsg
fQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHTGVuZ3RoTGlzdCYgdHlwZSkg
eyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuaAkocmV2
aXNpb24gMjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTkgKzI2LDIxIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNWR0xlbmd0aDsKK2NsYXNzIFNWR0xlbmd0aExpc3Q7CiAKLWNsYXNzIFNWR0xl
bmd0aExpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiB7CitjbGFzcyBT
VkdMZW5ndGhMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4g
ewogcHVibGljOgogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHTGVuZ3Ro
TW9kZSk7CiAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKIH07CiAKLXRlbXBsYXRl
PD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3Q+IHsKK3RlbXBsYXRlPD4g
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3RWYWx1ZXM+IHsKICAgICB1c2lu
ZyBMaXN0SXRlbVR5cGUgPSBTVkdMZW5ndGhWYWx1ZTsKICAgICB1c2luZyBMaXN0SXRlbVRlYXJP
ZmYgPSBTVkdMZW5ndGg7CisgICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0xlbmd0
aExpc3Q7CiAKLSAgICBzdGF0aWMgU1ZHTGVuZ3RoTGlzdCBpbml0aWFsVmFsdWUoKSB7IHJldHVy
biAgeyB9OyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdMZW5ndGhMaXN0
JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorICAgIHN0YXRpYyBTVkdM
ZW5ndGhMaXN0VmFsdWVzIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuICB7IH07IH0KKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMmIHR5cGUpIHsgcmV0
dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNs
dWRlICJSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVu
Z3RoVmFsdWUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9y
bUxpc3QuaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRl
clN1cHBvcnQuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHVW5p
dFR5cGVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgpAQCAtMTYyLDQgKzE2MywxOSBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHTWFza0VsZW1lbnQ6CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jl
c291cmNlTWFza2VyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCitSZWY8U1ZHU3RyaW5n
TGlzdD4gU1ZHTWFza0VsZW1lbnQ6OnJlcXVpcmVkRmVhdHVyZXMoKQoreworICAgIHJldHVybiBT
VkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlcygqdGhpcyk7Cit9CisKK1JlZjxTVkdTdHJpbmdMaXN0
PiBTVkdNYXNrRWxlbWVudDo6cmVxdWlyZWRFeHRlbnNpb25zKCkKK3sgCisgICAgcmV0dXJuIFNW
R1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMoKnRoaXMpOworfQorCitSZWY8U1ZHU3RyaW5nTGlz
dD4gU1ZHTWFza0VsZW1lbnQ6OnN5c3RlbUxhbmd1YWdlKCkKK3sKKyAgICByZXR1cm4gU1ZHVGVz
dHM6OnN5c3RlbUxhbmd1YWdlKCp0aGlzKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdNYXNrRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBT
VkdFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkIHsKK2NsYXNzIFNWR01hc2tFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0VsZW1l
bnQsIHB1YmxpYyBTVkdUZXN0cywgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U1ZHTWFza0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAorICAgIC8vIFNWR1Rlc3RzCisgICAgUmVmPFNW
R1N0cmluZ0xpc3Q+IHJlcXVpcmVkRmVhdHVyZXMoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4g
cmVxdWlyZWRFeHRlbnNpb25zKCk7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHN5c3RlbUxhbmd1
YWdlKCk7CisKIHByaXZhdGU6CiAgICAgU1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKQEAgLTYyLDkgKzY1LDkgQEAgcHJpdmF0ZToKICAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBTVkdUZXN0cwotICAgIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucygpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KHRoaXMpOyB9Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgZmluYWwgeyBT
VkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQorICAgIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKCp0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cygqdGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSBmaW5hbCB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCp0aGlzKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaAkocmV2aXNpb24g
MjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw5ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHTWF0cml4
IDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdNYXRyaXhWYWx1ZT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U1ZHTWF0cml4PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5p
bWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR01hdHJpeFZhbHVlJiB2YWx1
ZSkKKyAgICBzdGF0aWMgUmVmPFNWR01hdHJpeD4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdNYXRyaXhWYWx1ZSYg
dmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR01hdHJpeChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2
YWx1ZSkpOwogICAgIH0KIApAQCAtMjc4LDggKzI3Nyw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
b3RlY3RlZDoKLSAgICBTVkdNYXRyaXgoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9w
ZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR01hdHJpeFZhbHVlJiB2YWx1ZSkKLSAgICAg
ICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTWF0cml4VmFsdWU+KGFuaW1hdGVkUHJvcGVydHks
IHJvbGUsIHZhbHVlKQorICAgIFNWR01hdHJpeChTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRl
ZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTWF0cml4VmFsdWUmIHZhbHVlKQor
ICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdNYXRyaXhWYWx1ZT4oJmFuaW1hdGVkUHJv
cGVydHksIHJvbGUsIHZhbHVlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdOdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVt
YmVyLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNWR051bWJlciA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8ZmxvYXQ+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR051bWJlcj4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVy
dHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBmbG9hdCYgdmFsdWUp
CisgICAgc3RhdGljIFJlZjxTVkdOdW1iZXI+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5JiBh
bmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgZmxvYXQmIHZhbHVlKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdOdW1iZXIoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKICAg
ICB9CiAKQEAgLTcyLDggKzcxLDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBT
VkdOdW1iZXIoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVy
dHlSb2xlIHJvbGUsIGZsb2F0JiB2YWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8
ZmxvYXQ+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIFNWR051bWJlcihTVkdB
bmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwg
ZmxvYXQmIHZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxmbG9hdD4oJmFuaW1h
dGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNW
R051bWJlckxpc3QuaCIKLQotI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
b2lkIFNWR051bWJlckxpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgY2xl
YXIoKTsKLQotICAgIGZsb2F0IG51bWJlciA9IDA7Ci0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJh
Y3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBj
b25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGNvbnN0IFVDaGFy
KiBlbmQgPSBwdHIgKyB2YWx1ZS5sZW5ndGgoKTsKLQotICAgIC8vIFRoZSBzcGVjIHN0cmFuZ2Vs
eSBkb2Vzbid0IGFsbG93IGxlYWRpbmcgd2hpdGVzcGFjZS4gIFdlIG1pZ2h0IGNob29zZSB0byB2
aW9sYXRlIHRoYXQgaW50ZW50aW9uYWxseS4gKHNlY3Rpb24gNC4xKQotICAgIHdoaWxlIChwdHIg
PCBlbmQpIHsKLSAgICAgICAgaWYgKCFwYXJzZU51bWJlcihwdHIsIGVuZCwgbnVtYmVyKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXBwZW5kKG51bWJlcik7Ci0gICAgfQotfQotCi1T
dHJpbmcgU1ZHTnVtYmVyTGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4g
MCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgYnVpbGRlci5h
cHBlbmROdW1iZXIoYXQoaSkpOwotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdO
dW1iZXJMaXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR051bWJlckxpc3QuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR051bWJlckxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMSw1MSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KICAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJh
aXRzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIK
KyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU1ZHTnVtYmVyOwotCi1jbGFzcyBTVkdOdW1iZXJMaXN0IGZpbmFsIDogcHVibGlj
IFZlY3RvcjxmbG9hdD4geworY2xhc3MgU1ZHTnVtYmVyTGlzdCA6IHB1YmxpYyBTVkdMaXN0UHJv
cGVydHlUZWFyT2ZmPFNWR051bWJlckxpc3RWYWx1ZXM+IHsKIHB1YmxpYzoKLSAgICB2b2lkIHBh
cnNlKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Ci19
OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdOdW1iZXJMaXN0PiB7
Ci0gICAgc3RhdGljIFNWR051bWJlckxpc3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHTnVt
YmVyTGlzdCgpOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdOdW1iZXJM
aXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorICAgIHVzaW5nIEFu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZjxTVkdOdW1iZXJMaXN0VmFsdWVzPjsKKyAgICB1c2luZyBMaXN0V3JhcHBlckNhY2hlID0gQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpMaXN0V3JhcHBlckNhY2hlOwogCi0gICAgdXNpbmcg
TGlzdEl0ZW1UeXBlID0gZmxvYXQ7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHTnVt
YmVyOworICAgIHN0YXRpYyBSZWY8U1ZHTnVtYmVyTGlzdD4gY3JlYXRlKEFuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNW
R051bWJlckxpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdOdW1iZXJMaXN0KGFuaW1hdGVk
UHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgU1ZHTnVtYmVyTGlzdChBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJv
cGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdOdW1iZXJMaXN0VmFsdWVzJiB2YWx1ZXMs
IExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQorICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmY8U1ZHTnVtYmVyTGlzdFZhbHVlcz4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVz
LCB3cmFwcGVycykKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmNwcAkocmV2aXNp
b24gMjA4NzA0KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHA6MjA4
NzA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKKworI2luY2x1ZGUgIlNW
R1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNWR051bWJlckxpc3Q6OnBhcnNlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CisgICAgY2xlYXIoKTsKKworICAgIGZsb2F0IG51bWJlciA9IDA7
CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzOworICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyB2YWx1ZS5sZW5ndGgoKTsK
KworICAgIC8vIFRoZSBzcGVjIHN0cmFuZ2VseSBkb2Vzbid0IGFsbG93IGxlYWRpbmcgd2hpdGVz
cGFjZS4gIFdlIG1pZ2h0IGNob29zZSB0byB2aW9sYXRlIHRoYXQgaW50ZW50aW9uYWxseS4gKHNl
Y3Rpb24gNC4xKQorICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKKyAgICAgICAgaWYgKCFwYXJzZU51
bWJlcihwdHIsIGVuZCwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXBw
ZW5kKG51bWJlcik7CisgICAgfQorfQorCitTdHJpbmcgU1ZHTnVtYmVyTGlzdDo6dmFsdWVBc1N0
cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgdW5zaWdu
ZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoYXQoaSkpOworICAgIH0KKwor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTksMTQgKzE5LDE0IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNWR051bWJlckxpc3QuaCIKKyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCiAKICNp
bmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTVkdOdW1iZXJMaXN0Ojpw
YXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdOdW1iZXJMaXN0VmFsdWVzOjpwYXJz
ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNsZWFyKCk7CiAKQEAgLTM1LDcgKzM1LDcg
QEAgdm9pZCBTVkdOdW1iZXJMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIAogICAgIGNvbnN0IFVD
aGFyKiBwdHIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CiAgICAgY29uc3QgVUNoYXIqIGVuZCA9
IHB0ciArIHZhbHVlLmxlbmd0aCgpOwogCi0gICAgLy8gVGhlIHNwZWMgc3RyYW5nZWx5IGRvZXNu
J3QgYWxsb3cgbGVhZGluZyB3aGl0ZXNwYWNlLiAgV2UgbWlnaHQgY2hvb3NlIHRvIHZpb2xhdGUg
dGhhdCBpbnRlbnRpb25hbGx5LiAoc2VjdGlvbiA0LjEpCisgICAgLy8gVGhlIHNwZWMgKHNlY3Rp
b24gNC4xKSBzdHJhbmdlbHkgZG9lc24ndCBhbGxvdyBsZWFkaW5nIHdoaXRlc3BhY2UuIFdlIG1p
Z2h0IGNob29zZSB0byB2aW9sYXRlIHRoYXQgaW50ZW50aW9uYWxseS4KICAgICB3aGlsZSAocHRy
IDwgZW5kKSB7CiAgICAgICAgIGlmICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIG51bWJlcikpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgU1ZHTnVtYmVyTGlzdDo6
cGFyc2UoY29uc3QgU3RyaW5nJiAKICAgICB9CiB9CiAKLVN0cmluZyBTVkdOdW1iZXJMaXN0Ojp2
YWx1ZUFzU3RyaW5nKCkgY29uc3QKK1N0cmluZyBTVkdOdW1iZXJMaXN0VmFsdWVzOjp2YWx1ZUFz
U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjA4NzA1KQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oOjIwODcwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR051bWJlcjsKKworY2xhc3MgU1ZHTnVtYmVyTGlz
dCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8ZmxvYXQ+IHsKK3B1YmxpYzoKKyAgICB2b2lkIHBhcnNl
KGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdOdW1iZXJMaXN0PiB7Cisg
ICAgc3RhdGljIFNWR051bWJlckxpc3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHTnVtYmVy
TGlzdCgpOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdOdW1iZXJMaXN0
JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorCisgICAgdXNpbmcgTGlz
dEl0ZW1UeXBlID0gZmxvYXQ7CisgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHTnVtYmVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR051bWJlckxpc3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTnVtYmVyTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxOSArMjYs
MjEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHTnVtYmVyOworY2xhc3MgU1ZH
TnVtYmVyTGlzdDsKIAotY2xhc3MgU1ZHTnVtYmVyTGlzdCBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8
ZmxvYXQ+IHsKK2NsYXNzIFNWR051bWJlckxpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9y
PGZsb2F0PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKICAgICBT
dHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZH
UHJvcGVydHlUcmFpdHM8U1ZHTnVtYmVyTGlzdD4gewotICAgIHN0YXRpYyBTVkdOdW1iZXJMaXN0
IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR051bWJlckxpc3QoKTsgfQotICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHTnVtYmVyTGlzdCYgdHlwZSkgeyByZXR1cm4gdHlwZS52
YWx1ZUFzU3RyaW5nKCk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R051bWJlckxpc3RWYWx1ZXM+IHsKKyAgICBzdGF0aWMgU1ZHTnVtYmVyTGlzdFZhbHVlcyBpbml0
aWFsVmFsdWUoKSB7IHJldHVybiB7IH07IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNv
bnN0IFNWR051bWJlckxpc3RWYWx1ZXMmIGxpc3QpIHsgcmV0dXJuIGxpc3QudmFsdWVBc1N0cmlu
ZygpOyB9CiAKICAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBmbG9hdDsKICAgICB1c2luZyBMaXN0
SXRlbVRlYXJPZmYgPSBTVkdOdW1iZXI7CisgICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9
IFNWR051bWJlckxpc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjA4Nzc1KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUG9p
bnRMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNU
eXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpAQCAtMjM2LDcgKzIzNiw3
IEBAIGJvb2wgcGFyc2VSZWN0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGbG8KICAgICByZXR1cm4g
dmFsaWQ7CiB9CiAKLWJvb2wgcG9pbnRzTGlzdEZyb21TVkdEYXRhKFNWR1BvaW50TGlzdCYgcG9p
bnRzTGlzdCwgY29uc3QgU3RyaW5nJiBwb2ludHMpCitib29sIHBvaW50c0xpc3RGcm9tU1ZHRGF0
YShTVkdQb2ludExpc3RWYWx1ZXMmIHBvaW50c0xpc3QsIGNvbnN0IFN0cmluZyYgcG9pbnRzKQog
ewogICAgIGlmIChwb2ludHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmgJKHJldmlzaW9uIDIwODc3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9p
bnQ7CiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBTVkdQb2ludExpc3Q7CitjbGFzcyBTVkdQb2lu
dExpc3RWYWx1ZXM7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogYm9vbCBw
YXJzZVNWR051bWJlcihDaGFyYWN0ZXJUeXBlKiBwdHIsIHNpemVfdCBsZW5ndGgsIGRvdWJsZSYg
bnVtYmVyKTsKQEAgLTgwLDcgKzgwLDcgQEAgaW5saW5lIGJvb2wgc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzT3JEZWxpbQogICAgIHJldHVybiBwdHIgPCBlbmQ7CiB9CiAKLWJvb2wgcG9pbnRzTGlzdEZy
b21TVkdEYXRhKFNWR1BvaW50TGlzdCYgcG9pbnRzTGlzdCwgY29uc3QgU3RyaW5nJiBwb2ludHMp
OworYm9vbCBwb2ludHNMaXN0RnJvbVNWR0RhdGEoU1ZHUG9pbnRMaXN0VmFsdWVzJiwgY29uc3Qg
U3RyaW5nJiBwb2ludHMpOwogVmVjdG9yPFN0cmluZz4gcGFyc2VEZWxpbWl0ZWRTdHJpbmcoY29u
c3QgU3RyaW5nJiBpbnB1dCwgY29uc3QgY2hhciBzZXBlcmF0b3IpOwogYm9vbCBwYXJzZUtlcm5p
bmdVbmljb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYgaW5wdXQsIFVuaWNvZGVSYW5nZXMmLCBIYXNo
U2V0PFN0cmluZz4mIHN0cmluZ0xpc3QpOwogYm9vbCBwYXJzZUdseXBoTmFtZShjb25zdCBTdHJp
bmcmIGlucHV0LCBIYXNoU2V0PFN0cmluZz4mIHZhbHVlcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAK
ICNpbmNsdWRlICJTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMuaCIKICNpbmNsdWRlICJTVkdQ
YXRoU2VnTGluZXRvVmVydGljYWxSZWwuaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgot
I2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aFNlZ01vdmV0b0Ficy5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG9SZWwuaCIKICNp
bmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCkBAIC0yNTMsOCArMjUyLDggQEAgdm9pZCBTVkdQ
YXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogCiAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpkQXR0cikgewogICAgICAgICBpZiAobV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJv
bml6ZSAmJiAhU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxTVkdQYXRoRWxlbWVu
dCwgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4odGhpcywgZFByb3BlcnR5
SW5mbygpKS0+aXNBbmltYXRpbmcoKSkgewotICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpc3QgbmV3
TGlzdChQYXRoU2VnVW5hbHRlcmVkUm9sZSk7Ci0gICAgICAgICAgICBidWlsZFNWR1BhdGhTZWdM
aXN0RnJvbUJ5dGVTdHJlYW0obV9wYXRoQnl0ZVN0cmVhbSwgKnRoaXMsIG5ld0xpc3QsIFVuYWx0
ZXJlZFBhcnNpbmcpOworICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMgbmV3TGlzdChQ
YXRoU2VnVW5hbHRlcmVkUm9sZSk7CisgICAgICAgICAgICBidWlsZFNWR1BhdGhTZWdMaXN0VmFs
dWVzRnJvbUJ5dGVTdHJlYW0obV9wYXRoQnl0ZVN0cmVhbSwgKnRoaXMsIG5ld0xpc3QsIFVuYWx0
ZXJlZFBhcnNpbmcpOwogICAgICAgICAgICAgbV9wYXRoU2VnTGlzdC52YWx1ZSA9IG5ld0xpc3Q7
CiAgICAgICAgIH0KIApAQCAtMzE1LDEwICszMTQsOSBAQCBSZWY8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eT4gU1ZHUGF0aEVsZW1lbnQ6CiAgICAgICAgIHJldHVybiAqcHJvcGVydHk7CiAKICAgICBpZiAo
b3duZXJUeXBlLm1fcGF0aFNlZ0xpc3QudmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBidWlsZFNW
R1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0ob3duZXJUeXBlLm1fcGF0aEJ5dGVTdHJlYW0sIG93
bmVyVHlwZSwgb3duZXJUeXBlLm1fcGF0aFNlZ0xpc3QudmFsdWUsIFVuYWx0ZXJlZFBhcnNpbmcp
OworICAgICAgICBidWlsZFNWR1BhdGhTZWdMaXN0VmFsdWVzRnJvbUJ5dGVTdHJlYW0ob3duZXJU
eXBlLm1fcGF0aEJ5dGVTdHJlYW0sIG93bmVyVHlwZSwgb3duZXJUeXBlLm1fcGF0aFNlZ0xpc3Qu
dmFsdWUsIFVuYWx0ZXJlZFBhcnNpbmcpOwogCi0gICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVy
dHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3Q+Ci0gICAgICAgICgmb3duZXJU
eXBlLCBkUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS5tX3BhdGhTZWdMaXN0LnZhbHVlKTsKKyAg
ICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1Bh
dGhFbGVtZW50LCBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQYXRo
U2VnTGlzdFZhbHVlcz4oJm93bmVyVHlwZSwgZFByb3BlcnR5SW5mbygpLCBvd25lclR5cGUubV9w
YXRoU2VnTGlzdC52YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXpl
RChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKQEAgLTMzOSwyNiArMzM3LDI2IEBAIHZvaWQg
U1ZHUGF0aEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlXaWwKICAgICBtX3BhdGhTZWdMaXN0LnNo
b3VsZFN5bmNocm9uaXplID0gZmFsc2U7CiB9CiAKLVJlZlB0cjxTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZj4gU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KCkKK1JlZjxTVkdQYXRoU2Vn
TGlzdD4gU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KCkKIHsKICAgICBtX3BhdGhTZWdMaXN0
LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0
aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqPihzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0
ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4obG9va3VwT3JDcmVhdGVEV3JhcHBlcih0aGlz
KSktPmJhc2VWYWwoKS5nZXQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxT
VkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihsb29rdXBPckNyZWF0ZURXcmFw
cGVyKHRoaXMpKS0+YmFzZVZhbCgpOwogfQogCi1SZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmY+IFNWR1BhdGhFbGVtZW50Ojpub3JtYWxpemVkUGF0aFNlZ0xpc3QoKQorUmVmUHRy
PFNWR1BhdGhTZWdMaXN0PiBTVkdQYXRoRWxlbWVudDo6bm9ybWFsaXplZFBhdGhTZWdMaXN0KCkK
IHsKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NDEyIC0gSW1wbGVtZW50IG5vcm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+
IFNWR1BhdGhFbGVtZW50OjphbmltYXRlZFBhdGhTZWdMaXN0KCkKK1JlZjxTVkdQYXRoU2VnTGlz
dD4gU1ZHUGF0aEVsZW1lbnQ6OmFuaW1hdGVkUGF0aFNlZ0xpc3QoKQogewogICAgIG1fcGF0aFNl
Z0xpc3Quc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwogICAgIG1faXNBbmltVmFsT2JzZXJ2ZWQg
PSB0cnVlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZio+KHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmPihsb29rdXBPckNyZWF0ZURXcmFwcGVyKHRoaXMpKS0+YW5pbVZhbCgpLmdldCgp
KTsKKyAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodGhpcykpLT5hbmltVmFs
KCk7CiB9CiAKLVJlZlB0cjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gU1ZHUGF0aEVs
ZW1lbnQ6OmFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0KCkKK1JlZlB0cjxTVkdQYXRoU2Vn
TGlzdD4gU1ZHUGF0aEVsZW1lbnQ6OmFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0KCkKIHsK
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDEyIC0gSW1wbGVtZW50IG5vcm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMzgzLDcgKzM4MSw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhdGhT
ZWdMaXN0Q2hhbmdlZCgKICAgICAgICAgICAgIEFTU0VSVCghbV9wYXRoU2VnTGlzdC52YWx1ZS5p
c0VtcHR5KCkpOwogICAgICAgICAgICAgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0
aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3QoKS5jb3B5UmVmKCksIG1fcGF0aEJ5dGVTdHJl
YW0sIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJ1aWxk
U1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QobV9wYXRoU2VnTGlzdC52YWx1ZSwg
bV9wYXRoQnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAgICBidWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0VmFsdWVzKG1fcGF0aFNlZ0xpc3QudmFs
dWUsIG1fcGF0aEJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBhdGhTZWdVbmRlZmluZWRSb2xlOgogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNl
Z0xpc3QuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdFZhbHVlcy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1Ntb290aEFiczsKIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw7CiBjbGFz
cyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFiczsKIGNsYXNzIFNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsOwotY2xhc3MgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmY7CitjbGFzcyBTVkdQYXRoU2VnTGlzdDsKIGNsYXNzIFNWR1BvaW50OwogCiBjbGFzcyBT
VkdQYXRoRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdHcmFwaGljc0VsZW1lbnQsCkBAIC04Miwx
MCArODIsMTAgQEAgcHVibGljOgogICAgIFJlZjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Nt
b290aFJlbD4gY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwoZmxvYXQg
eCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CiAKICAg
ICAvLyBVc2VkIGluIHRoZSBiaW5kaW5ncyBvbmx5LgotICAgIFJlZlB0cjxTVkdQYXRoU2VnTGlz
dFByb3BlcnR5VGVhck9mZj4gcGF0aFNlZ0xpc3QoKTsKLSAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmY+IGFuaW1hdGVkUGF0aFNlZ0xpc3QoKTsKLSAgICBSZWZQdHI8U1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IG5vcm1hbGl6ZWRQYXRoU2VnTGlzdCgpOwotICAg
IFJlZlB0cjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gYW5pbWF0ZWROb3JtYWxpemVk
UGF0aFNlZ0xpc3QoKTsKKyAgICBSZWY8U1ZHUGF0aFNlZ0xpc3Q+IHBhdGhTZWdMaXN0KCk7Cisg
ICAgUmVmPFNWR1BhdGhTZWdMaXN0PiBhbmltYXRlZFBhdGhTZWdMaXN0KCk7CisgICAgUmVmUHRy
PFNWR1BhdGhTZWdMaXN0PiBub3JtYWxpemVkUGF0aFNlZ0xpc3QoKTsKKyAgICBSZWZQdHI8U1ZH
UGF0aFNlZ0xpc3Q+IGFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0KCk7CiAKICAgICBjb25z
dCBTVkdQYXRoQnl0ZVN0cmVhbSYgcGF0aEJ5dGVTdHJlYW0oKSBjb25zdDsKIApAQCAtMTMxLDcg
KzEzMSw3IEBAIHByaXZhdGU6CiAKIHByaXZhdGU6CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0gbV9w
YXRoQnl0ZVN0cmVhbTsKLSAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9w
ZXJ0eTxTVkdQYXRoU2VnTGlzdD4gbV9wYXRoU2VnTGlzdDsKKyAgICBtdXRhYmxlIFNWR1N5bmNo
cm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdQYXRoU2VnTGlzdFZhbHVlcz4gbV9wYXRoU2Vn
TGlzdDsKICAgICBXZWFrUHRyRmFjdG9yeTxTVkdQYXRoRWxlbWVudD4gbV93ZWFrUHRyRmFjdG9y
eTsKICAgICBib29sIG1faXNBbmltVmFsT2JzZXJ2ZWQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNCBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAt
MjMsMjMgKzIwLDEwOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR1BhdGhT
ZWdMaXN0LmgiCiAKKyNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5o
IgotI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnV2l0
aENvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgU1ZHUGF0aFNlZ0xp
c3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAordm9pZCBTVkdQYXRoU2VnTGlzdDo6Y2xlYXJDb250
ZXh0QW5kUm9sZXMoKQogewotICAgIFN0cmluZyBwYXRoU3RyaW5nOwotICAgIGJ1aWxkU3RyaW5n
RnJvbVNWR1BhdGhTZWdMaXN0KCp0aGlzLCBwYXRoU3RyaW5nLCBVbmFsdGVyZWRQYXJzaW5nKTsK
LSAgICByZXR1cm4gcGF0aFN0cmluZzsKKyAgICBBU1NFUlQobV92YWx1ZXMpOworICAgIGZvciAo
YXV0byYgaXRlbSA6ICptX3ZhbHVlcykKKyAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1dp
dGhDb250ZXh0Kj4oaXRlbS5nZXQoKSktPnNldENvbnRleHRBbmRSb2xlKG51bGxwdHIsIFBhdGhT
ZWdVbmRlZmluZWRSb2xlKTsKIH0KIAotdm9pZCBTVkdQYXRoU2VnTGlzdDo6Y29tbWl0Q2hhbmdl
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uIGxpc3RNb2RpZmlj
YXRpb24pCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdQYXRoU2VnTGlzdDo6Y2xlYXIoKQogeworICAg
IEFTU0VSVChtX3ZhbHVlcyk7CisgICAgaWYgKG1fdmFsdWVzLT5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBjbGVhckNvbnRleHRBbmRSb2xlcygpOworICAgIHJldHVybiBC
YXNlOjpjbGVhclZhbHVlcygpOworfQorCitFeGNlcHRpb25PcjxTVkdQYXRoU2VnTGlzdDo6UHRy
TGlzdEl0ZW1UeXBlPiBTVkdQYXRoU2VnTGlzdDo6Z2V0SXRlbSh1bnNpZ25lZCBpbmRleCkKK3sK
KyAgICByZXR1cm4gQmFzZTo6Z2V0SXRlbVZhbHVlcyhpbmRleCk7Cit9CisKK0V4Y2VwdGlvbk9y
PFNWR1BhdGhTZWdMaXN0OjpQdHJMaXN0SXRlbVR5cGU+IFNWR1BhdGhTZWdMaXN0OjpyZXBsYWNl
SXRlbShQdHJMaXN0SXRlbVR5cGUgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8g
Tm90IHNwZWNpZmllZCwgYnV0IEZGL09wZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBqdXN0
IHNhbmUuCisgICAgaWYgKCFuZXdJdGVtKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZH
RXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlIgfTsKKworICAgIGlmIChpbmRleCA8IG1fdmFs
dWVzLT5zaXplKCkpIHsKKyAgICAgICAgTGlzdEl0ZW1UeXBlIHJlcGxhY2VkSXRlbSA9IG1fdmFs
dWVzLT5hdChpbmRleCk7CisgICAgICAgIEFTU0VSVChyZXBsYWNlZEl0ZW0pOworICAgICAgICBz
dGF0aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihyZXBsYWNlZEl0ZW0uZ2V0KCkpLT5z
ZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgfQor
CisgICAgcmV0dXJuIEJhc2U6OnJlcGxhY2VJdGVtVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsKK30K
KworRXhjZXB0aW9uT3I8U1ZHUGF0aFNlZ0xpc3Q6OlB0ckxpc3RJdGVtVHlwZT4gU1ZHUGF0aFNl
Z0xpc3Q6OnJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCit7CisgICAgYXV0byByZXN1bHQgPSBC
YXNlOjpyZW1vdmVJdGVtVmFsdWVzKGluZGV4KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gcmVtb3ZlZEl0ZW0gPSByZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKHJlbW92ZWRJdGVtKQorICAgICAgICBz
dGF0aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQmPigqcmVtb3ZlZEl0ZW0pLnNldENvbnRl
eHRBbmRSb2xlKG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICByZXR1cm4gV1RG
TW92ZShyZW1vdmVkSXRlbSk7Cit9CisKK1NWR1BhdGhFbGVtZW50KiBTVkdQYXRoU2VnTGlzdDo6
Y29udGV4dEVsZW1lbnQoKSBjb25zdAoreworICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
ID0gbV9hbmltYXRlZFByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgpOwogICAgIEFTU0VSVChjb250
ZXh0RWxlbWVudCk7Ci0gICAgZG93bmNhc3Q8U1ZHUGF0aEVsZW1lbnQ+KGNvbnRleHRFbGVtZW50
KS0+cGF0aFNlZ0xpc3RDaGFuZ2VkKG1fcm9sZSwgbGlzdE1vZGlmaWNhdGlvbik7CisgICAgcmV0
dXJuIGRvd25jYXN0PFNWR1BhdGhFbGVtZW50Pihjb250ZXh0RWxlbWVudCk7Cit9CisKK2Jvb2wg
U1ZHUGF0aFNlZ0xpc3Q6OnByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0
ZW1UeXBlJiBuZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhUb01vZGlmeSkKK3sKKyAgICBTVkdQYXRo
U2VnV2l0aENvbnRleHQqIG5ld0l0ZW1XaXRoQ29udGV4dCA9IHN0YXRpY19jYXN0PFNWR1BhdGhT
ZWdXaXRoQ29udGV4dCo+KG5ld0l0ZW0uZ2V0KCkpOworICAgIFJlZlB0cjxTVkdBbmltYXRlZFBy
b3BlcnR5PiBhbmltYXRlZFByb3BlcnR5T2ZJdGVtID0gbmV3SXRlbVdpdGhDb250ZXh0LT5hbmlt
YXRlZFByb3BlcnR5KCk7CisKKyAgICAvLyBBbHRlciB0aGUgcm9sZSwgYWZ0ZXIgY2FsbGluZyBh
bmltYXRlZFByb3BlcnR5KCksIGFzIHRoYXQgbWF5IGluZmx1ZW5jZSB0aGUgcmV0dXJuZWQgYW5p
bWF0ZWQgcHJvcGVydHkuCisgICAgbmV3SXRlbVdpdGhDb250ZXh0LT5zZXRDb250ZXh0QW5kUm9s
ZShjb250ZXh0RWxlbWVudCgpLCBtX3BhdGhTZWdSb2xlKTsKKworICAgIGlmICghYW5pbWF0ZWRQ
cm9wZXJ0eU9mSXRlbSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBuZXdJdGVtIGJl
bG9uZ3MgdG8gYSBTVkdQYXRoRWxlbWVudCwgYnV0IGl0cyBhc3NvY2lhdGVkIFNWR0FuaW1hdGVk
UHJvcGVydHkgaXMgbm90IGFuIGFuaW1hdGVkIGxpc3QgdGVhciBvZmYuCisgICAgLy8gKGZvciBl
eGFtcGxlOiAicGF0aEVsZW1lbnQucGF0aFNlZ0xpc3QuYXBwZW5kSXRlbShwYXRoRWxlbWVudC5j
cmVhdGVTVkdQYXRoU2VnQ2xvc2VwYXRoKCkpIikKKyAgICBpZiAoIWFuaW1hdGVkUHJvcGVydHlP
Zkl0ZW0tPmlzQW5pbWF0ZWRMaXN0VGVhck9mZigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIFNwZWM6IElmIG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92
ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlz
IGxpc3QuCisgICAgLy8gJ25ld0l0ZW0nIGlzIGFscmVhZHkgbGl2aW5nIGluIGFub3RoZXIgbGlz
dC4gSWYgaXQncyBub3Qgb3VyIGxpc3QsIHN5bmNocm9uaXplIHRoZSBvdGhlciBsaXN0cyB3cmFw
cGVycyBhZnRlciB0aGUgcmVtb3ZhbC4KKyAgICBib29sIGxpdmVzSW5PdGhlckxpc3QgPSBhbmlt
YXRlZFByb3BlcnR5T2ZJdGVtICE9IG1fYW5pbWF0ZWRQcm9wZXJ0eTsKKyAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gcHJvcGVydHlUZWFyT2ZmID0gc3Rh
dGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihh
bmltYXRlZFByb3BlcnR5T2ZJdGVtKTsKKyAgICBpbnQgaW5kZXhUb1JlbW92ZSA9IHByb3BlcnR5
VGVhck9mZi0+ZmluZEl0ZW0obmV3SXRlbS5nZXQoKSk7CisgICAgQVNTRVJUKGluZGV4VG9SZW1v
dmUgIT0gLTEpOworCisgICAgLy8gRG8gbm90IHJlbW92ZSBuZXdJdGVtIGlmIGFscmVhZHkgaW4g
dGhpcyBsaXN0IGF0IHRoZSB0YXJnZXQgaW5kZXguCisgICAgaWYgKCFsaXZlc0luT3RoZXJMaXN0
ICYmIGluZGV4VG9Nb2RpZnkgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4VG9SZW1vdmUp
ID09ICppbmRleFRvTW9kaWZ5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwcm9wZXJ0
eVRlYXJPZmYtPnJlbW92ZUl0ZW1Gcm9tTGlzdChpbmRleFRvUmVtb3ZlLCBsaXZlc0luT3RoZXJM
aXN0KTsKKworICAgIGlmICghaW5kZXhUb01vZGlmeSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBJZiB0aGUgaXRlbSBsaXZlZCBpbiBvdXIgbGlzdCwgYWRqdXN0IHRoZSBpbnNlcnRp
b24gaW5kZXguCisgICAgaWYgKCFsaXZlc0luT3RoZXJMaXN0KSB7CisgICAgICAgIHVuc2lnbmVk
JiBpbmRleCA9ICppbmRleFRvTW9kaWZ5OworICAgICAgICAvLyBTcGVjOiBJZiB0aGUgaXRlbSBp
cyBhbHJlYWR5IGluIHRoaXMgbGlzdCwgbm90ZSB0aGF0IHRoZSBpbmRleCBvZiB0aGUgaXRlbSB0
byAocmVwbGFjZXxpbnNlcnQgYmVmb3JlKSBpcyBiZWZvcmUgdGhlIHJlbW92YWwgb2YgdGhlIGl0
ZW0uCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhUb1JlbW92ZSkgPCBp
bmRleCkKKyAgICAgICAgICAgIC0taW5kZXg7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCShyZXZpc2lvbiAyMDg3
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwg
PGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MTksNDAgKzE5LDE0MyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0xpc3RQcm9w
ZXJ0eS5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRy
YWl0cy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKyNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNp
bmNsdWRlICJTVkdQYXRoU2VnTGlzdFZhbHVlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdQYXRoRWxlbWVudDsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gCi1jbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7Ci0KLWNsYXNzIFNWR1BhdGhTZWdM
aXN0IDogcHVibGljIFZlY3RvcjxSZWZQdHI8U1ZHUGF0aFNlZz4+IHsKK2NsYXNzIFNWR1BhdGhT
ZWdMaXN0IGZpbmFsIDogcHVibGljIFNWR0xpc3RQcm9wZXJ0eTxTVkdQYXRoU2VnTGlzdFZhbHVl
cz4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhTZWdSb2xl
IHJvbGUpCi0gICAgICAgIDogbV9yb2xlKHJvbGUpCisgICAgdXNpbmcgQmFzZSA9IFNWR0xpc3RQ
cm9wZXJ0eTxTVkdQYXRoU2VnTGlzdFZhbHVlcz47CisgICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdM
aXN0VmFsdWVzPjsKKyAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdQYXRoU2VnTGlzdFZhbHVlcz46Okxpc3RJdGVtVHlwZTsKKyAgICB1c2luZyBQdHJMaXN0SXRl
bVR5cGUgPSBSZWZQdHI8U1ZHUGF0aFNlZz47CisKKyAgICBzdGF0aWMgUmVmPFNWR1BhdGhTZWdM
aXN0PiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5
LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUGF0aFNlZ1JvbGUgcGF0aFNlZ1JvbGUsIFNWR1Bh
dGhTZWdMaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGF0aFNlZ0xpc3QoYW5pbWF0ZWRQ
cm9wZXJ0eSwgcm9sZSwgcGF0aFNlZ1JvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgUmVmPFNWR1BhdGhTZWdMaXN0PiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUGF0
aFNlZ0xpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU1ZHUGF0aFNlZ0xpc3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgUGF0aFNlZ1VuZGVm
aW5lZFJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisKKyAgICBpbnQgZmluZEl0ZW0o
Y29uc3QgTGlzdEl0ZW1UeXBlJiBpdGVtKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dmFsdWVzKTsKKworICAgICAgICB1bnNpZ25lZCBzaXplID0gbV92YWx1ZXMtPnNpemUoKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChpdGVtID09IG1fdmFsdWVzLT5hdChpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUl0
ZW1Gcm9tTGlzdChzaXplX3QgaXRlbUluZGV4LCBib29sIHNob3VsZFN5bmNocm9uaXplV3JhcHBl
cnMpCiAgICAgeworICAgICAgICBBU1NFUlQobV92YWx1ZXMpOworICAgICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihpdGVtSW5kZXggPCBtX3ZhbHVlcy0+c2l6ZSgpKTsKKwor
ICAgICAgICBtX3ZhbHVlcy0+cmVtb3ZlKGl0ZW1JbmRleCk7CisKKyAgICAgICAgaWYgKHNob3Vs
ZFN5bmNocm9uaXplV3JhcHBlcnMpCisgICAgICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICB9
CisKKyAgICAvLyBTVkdMaXN0IEFQSQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCk7CisK
KyAgICBFeGNlcHRpb25PcjxQdHJMaXN0SXRlbVR5cGU+IGluaXRpYWxpemUoUHRyTGlzdEl0ZW1U
eXBlIG5ld0l0ZW0pCisgICAgeworICAgICAgICAvLyBOb3Qgc3BlY2lmaWVkLCBidXQgRkYvT3Bl
cmEgZG8gaXQgdGhpcyB3YXksIGFuZCBpdCdzIGp1c3Qgc2FuZS4KKyAgICAgICAgaWYgKCFuZXdJ
dGVtKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNWR0V4Y2VwdGlvbjo6U1ZHX1dS
T05HX1RZUEVfRVJSIH07CisKKyAgICAgICAgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKKyAgICAg
ICAgcmV0dXJuIEJhc2U6OmluaXRpYWxpemVWYWx1ZXMobmV3SXRlbSk7CisgICAgfQorCisgICAg
RXhjZXB0aW9uT3I8UHRyTGlzdEl0ZW1UeXBlPiBnZXRJdGVtKHVuc2lnbmVkIGluZGV4KTsKKwor
ICAgIEV4Y2VwdGlvbk9yPFB0ckxpc3RJdGVtVHlwZT4gaW5zZXJ0SXRlbUJlZm9yZShQdHJMaXN0
SXRlbVR5cGUgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICAvLyBOb3Qg
c3BlY2lmaWVkLCBidXQgRkYvT3BlcmEgZG8gaXQgdGhpcyB3YXksIGFuZCBpdCdzIGp1c3Qgc2Fu
ZS4KKyAgICAgICAgaWYgKCFuZXdJdGVtKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFNWR0V4Y2VwdGlvbjo6U1ZHX1dST05HX1RZUEVfRVJSIH07CisKKyAgICAgICAgcmV0dXJuIEJh
c2U6Omluc2VydEl0ZW1CZWZvcmVWYWx1ZXMobmV3SXRlbSwgaW5kZXgpOwogICAgIH0KIAotICAg
IFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UHRyTGlzdEl0
ZW1UeXBlPiByZXBsYWNlSXRlbShQdHJMaXN0SXRlbVR5cGUsIHVuc2lnbmVkIGluZGV4KTsKIAot
ICAgIC8vIE9ubHkgdXNlZCBieSBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi4KLSAgICB2
b2lkIGNvbW1pdENoYW5nZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgTGlzdE1vZGlmaWNh
dGlvbik7CisgICAgRXhjZXB0aW9uT3I8UHRyTGlzdEl0ZW1UeXBlPiByZW1vdmVJdGVtKHVuc2ln
bmVkIGluZGV4KTsKKworICAgIEV4Y2VwdGlvbk9yPFB0ckxpc3RJdGVtVHlwZT4gYXBwZW5kSXRl
bShQdHJMaXN0SXRlbVR5cGUgbmV3SXRlbSkKKyAgICB7CisgICAgICAgIC8vIE5vdCBzcGVjaWZp
ZWQsIGJ1dCBGRi9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgorICAg
ICAgICBpZiAoIW5ld0l0ZW0pCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhj
ZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlIgfTsKKworICAgICAgICByZXR1cm4gQmFzZTo6YXBw
ZW5kSXRlbVZhbHVlcyhuZXdJdGVtKTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHUGF0aFNl
Z1JvbGUgbV9yb2xlOwotfTsKKyAgICBTVkdQYXRoU2VnTGlzdChBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQYXRo
U2VnUm9sZSBwYXRoU2VnUm9sZSwgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdy
YXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgICAgIDogU1ZHTGlzdFByb3BlcnR5PFNWR1BhdGhT
ZWdMaXN0VmFsdWVzPihyb2xlLCB2YWx1ZXMsICZ3cmFwcGVycykKKyAgICAgICAgLCBtX2FuaW1h
dGVkUHJvcGVydHkoJmFuaW1hdGVkUHJvcGVydHkpCisgICAgICAgICwgbV9wYXRoU2VnUm9sZShw
YXRoU2VnUm9sZSkKKyAgICB7CisgICAgfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdQYXRoU2VnTGlzdD4gewotICAgIHN0YXRpYyBTVkdQYXRoU2VnTGlzdCBpbml0
aWFsVmFsdWUoKSB7IHJldHVybiBTVkdQYXRoU2VnTGlzdChQYXRoU2VnVW5kZWZpbmVkUm9sZSk7
IH0KKyAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnTGlzdCgpCisgICAgeworICAgICAgICBpZiAobV9h
bmltYXRlZFByb3BlcnR5KQorICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5LT5wcm9wZXJ0
eVdpbGxCZURlbGV0ZWQoKnRoaXMpOworICAgIH0KKworICAgIFNWR1BhdGhFbGVtZW50KiBjb250
ZXh0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gUmVmUHRyPFNW
R1BhdGhTZWc+OwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9m
ZjxSZWZQdHI8U1ZHUGF0aFNlZz4+OworICAgIHZvaWQgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsK
KworICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKKworICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9yb2xlID09IEFuaW1WYWxSb2xlKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHkgJiYgbV9h
bmltYXRlZFByb3BlcnR5LT5pc1JlYWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkg
ZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7CisgICAgICAgIG1fdmFsdWVz
LT5jb21taXRDaGFuZ2UoKm1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y29udGV4dEVsZW1lbnQoKSwgTGlz
dE1vZGlmaWNhdGlvblVua25vd24pOworICAgIH0KKworICAgIHZvaWQgY29tbWl0Q2hhbmdlKExp
c3RNb2RpZmljYXRpb24gbGlzdE1vZGlmaWNhdGlvbikgZmluYWwKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3ZhbHVlcyk7CisgICAgICAgIG1fdmFsdWVzLT5jb21taXRDaGFuZ2UoKm1fYW5pbWF0
ZWRQcm9wZXJ0eS0+Y29udGV4dEVsZW1lbnQoKSwgbGlzdE1vZGlmaWNhdGlvbik7CisgICAgfQor
CisgICAgYm9vbCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVZhbHVlKGNvbnN0IExpc3RJdGVtVHlw
ZSYgbmV3SXRlbSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkpIGZpbmFsOworICAgIGJvb2wgcHJv
Y2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKFJlZjxMaXN0SXRlbVRlYXJPZmY+JiwgdW5zaWdu
ZWQqKSBmaW5hbAorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8QW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPiBtX2FuaW1hdGVkUHJvcGVydHk7CisgICAgU1ZHUGF0aFNlZ1JvbGUg
bV9wYXRoU2VnUm9sZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyMDg3
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDEzIEBACiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpbmV0
b1JlbC5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicy5oIgogI2luY2x1
ZGUgIlNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdM
aXN0LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdQ
YXRoU2VnTW92ZXRvQWJzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyKFNWR1BhdGhFbGVtZW50JiBwYXRoRWxlbWVudCwgU1ZHUGF0aFNlZ0xpc3QmIHBh
dGhTZWdMaXN0LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpT
VkdQYXRoU2VnTGlzdEJ1aWxkZXIoU1ZHUGF0aEVsZW1lbnQmIHBhdGhFbGVtZW50LCBTVkdQYXRo
U2VnTGlzdFZhbHVlcyYgcGF0aFNlZ0xpc3QsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiAgICAgOiBt
X3BhdGhFbGVtZW50KHBhdGhFbGVtZW50KQogICAgICwgbV9wYXRoU2VnTGlzdChwYXRoU2VnTGlz
dCkKICAgICAsIG1fcGF0aFNlZ1JvbGUocm9sZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR1BhdGhDb25z
dW1lci5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNl
Z0xpc3RWYWx1ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMyw3ICszMyw3IEBA
IGNsYXNzIFNWR1BhdGhFbGVtZW50OwogCiBjbGFzcyBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIgZmlu
YWwgOiBwdWJsaWMgU1ZHUGF0aENvbnN1bWVyIHsKIHB1YmxpYzoKLSAgICBTVkdQYXRoU2VnTGlz
dEJ1aWxkZXIoU1ZHUGF0aEVsZW1lbnQmLCBTVkdQYXRoU2VnTGlzdCYsIFNWR1BhdGhTZWdSb2xl
KTsKKyAgICBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIoU1ZHUGF0aEVsZW1lbnQmLCBTVkdQYXRoU2Vn
TGlzdFZhbHVlcyYsIFNWR1BhdGhTZWdSb2xlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluY3Jl
bWVudFBhdGhTZWdtZW50Q291bnQoKSBmaW5hbCB7IH0KQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wgbGFyZ2VBcmNGbGFn
LCBib29sIHN3ZWVwRmxhZywgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkg
ZmluYWw7CiAKICAgICBTVkdQYXRoRWxlbWVudCYgbV9wYXRoRWxlbWVudDsKLSAgICBTVkdQYXRo
U2VnTGlzdCYgbV9wYXRoU2VnTGlzdDsKKyAgICBTVkdQYXRoU2VnTGlzdFZhbHVlcyYgbV9wYXRo
U2VnTGlzdDsKICAgICBTVkdQYXRoU2VnUm9sZSBtX3BhdGhTZWdSb2xlIHsgUGF0aFNlZ1VuZGVm
aW5lZFJvbGUgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlz
dFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0U291cmNlLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhTZWdMaXN0U291cmNlOjpTVkdQYXRoU2Vn
TGlzdFNvdXJjZShjb25zdCBTVkdQYXRoU2VnTGlzdCYgcGF0aFNlZ0xpc3QpCitTVkdQYXRoU2Vn
TGlzdFNvdXJjZTo6U1ZHUGF0aFNlZ0xpc3RTb3VyY2UoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1
ZXMmIHBhdGhTZWdMaXN0KQogICAgIDogbV9wYXRoU2VnTGlzdChwYXRoU2VnTGlzdCkKIHsKICAg
ICBtX2l0ZW1DdXJyZW50ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdFNvdXJjZS5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ0xpc3RTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogCiAj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKLSNpbmNsdWRl
ICJTVkdQYXRoU2VnTGlzdC5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0VmFsdWVzLmgiCiAj
aW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAt
MjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1BhdGhTZWdMaXN0
U291cmNlIGZpbmFsIDogcHVibGljIFNWR1BhdGhTb3VyY2UgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IFNWR1BhdGhTZWdMaXN0U291cmNlKGNvbnN0IFNWR1BhdGhTZWdMaXN0Jik7CisgICAgZXhw
bGljaXQgU1ZHUGF0aFNlZ0xpc3RTb3VyY2UoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmKTsK
IAogcHJpdmF0ZToKICAgICBib29sIGhhc01vcmVEYXRhKCkgY29uc3QgZmluYWw7CkBAIC00Nyw3
ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhT
ZWdtZW50KEZsb2F0UG9pbnQmKSBmaW5hbDsKICAgICBib29sIHBhcnNlQXJjVG9TZWdtZW50KGZs
b2F0JiwgZmxvYXQmLCBmbG9hdCYsIGJvb2wmLCBib29sJiwgRmxvYXRQb2ludCYpIGZpbmFsOwog
Ci0gICAgY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIG1fcGF0aFNlZ0xpc3Q7CisgICAgY29uc3QgU1ZH
UGF0aFNlZ0xpc3RWYWx1ZXMmIG1fcGF0aFNlZ0xpc3Q7CiAgICAgUmVmUHRyPFNWR1BhdGhTZWc+
IG1fc2VnbWVudDsKICAgICBpbnQgbV9pdGVtQ3VycmVudDsKICAgICBpbnQgbV9pdGVtRW5kOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCShyZXZp
c2lvbiAyMDg3MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHA6
MjA4NzA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
KyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdM
aXN0LmgiCisKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50
LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1N0cmluZyBTVkdQYXRoU2VnTGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0Cit7CisgICAg
U3RyaW5nIHBhdGhTdHJpbmc7CisgICAgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoKnRo
aXMsIHBhdGhTdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgIHJldHVybiBwYXRoU3RyaW5n
OworfQorCit2b2lkIFNWR1BhdGhTZWdMaXN0Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24gbGlzdE1vZGlmaWNhdGlvbikKK3sKKyAgICBB
U1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIGRvd25jYXN0PFNWR1BhdGhFbGVtZW50Pihjb250
ZXh0RWxlbWVudCktPnBhdGhTZWdMaXN0Q2hhbmdlZChtX3JvbGUsIGxpc3RNb2RpZmljYXRpb24p
OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVl
cy5jcHAJKHJldmlzaW9uIDIwODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdFZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpc3QuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoU2VnTGlzdFZhbHVlcy5oIgogCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNs
dWRlICJTVkdQYXRoRWxlbWVudC5oIgpAQCAtMjksMTcgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU3RyaW5nIFNWR1BhdGhTZWdMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QK
K1N0cmluZyBTVkdQYXRoU2VnTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZygpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nIHBhdGhTdHJpbmc7Ci0gICAgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3Qo
KnRoaXMsIHBhdGhTdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgIGJ1aWxkU3RyaW5nRnJv
bVNWR1BhdGhTZWdMaXN0VmFsdWVzKCp0aGlzLCBwYXRoU3RyaW5nLCBVbmFsdGVyZWRQYXJzaW5n
KTsKICAgICByZXR1cm4gcGF0aFN0cmluZzsKIH0KIAotdm9pZCBTVkdQYXRoU2VnTGlzdDo6Y29t
bWl0Q2hhbmdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uIGxp
c3RNb2RpZmljYXRpb24pCit2b2lkIFNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjb21taXRDaGFuZ2Uo
U1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24gbGlzdE1vZGlmaWNh
dGlvbikKIHsKLSAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgIGRvd25jYXN0PFNWR1Bh
dGhFbGVtZW50Pihjb250ZXh0RWxlbWVudCktPnBhdGhTZWdMaXN0Q2hhbmdlZChtX3JvbGUsIGxp
c3RNb2RpZmljYXRpb24pOworICAgIGRvd25jYXN0PFNWR1BhdGhFbGVtZW50Pihjb250ZXh0RWxl
bWVudCkucGF0aFNlZ0xpc3RDaGFuZ2VkKG1fcm9sZSwgbGlzdE1vZGlmaWNhdGlvbik7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5oCShyZXZp
c2lvbiAyMDg3MDQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oOjIw
ODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdM
aXN0UHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisjaW5jbHVkZSAiU1ZHUHJv
cGVydHlUcmFpdHMuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHRWxlbWVu
dDsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gCitjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CisK
K2NsYXNzIFNWR1BhdGhTZWdMaXN0IDogcHVibGljIFZlY3RvcjxSZWZQdHI8U1ZHUGF0aFNlZz4+
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTVkdQYXRoU2VnTGlzdChTVkdQYXRoU2VnUm9sZSBy
b2xlKQorICAgICAgICA6IG1fcm9sZShyb2xlKQorICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcg
dmFsdWVBc1N0cmluZygpIGNvbnN0OworCisgICAgLy8gT25seSB1c2VkIGJ5IFNWR1BhdGhTZWdM
aXN0UHJvcGVydHlUZWFyT2ZmLgorICAgIHZvaWQgY29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBMaXN0TW9kaWZpY2F0aW9uKTsKKworcHJpdmF0ZToKKyAgICBTVkdQYXRo
U2VnUm9sZSBtX3JvbGU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdQYXRoU2VnTGlzdD4geworICAgIHN0YXRpYyBTVkdQYXRoU2VnTGlzdCBpbml0aWFsVmFs
dWUoKSB7IHJldHVybiBTVkdQYXRoU2VnTGlzdChQYXRoU2VnVW5kZWZpbmVkUm9sZSk7IH0KKwor
ICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFJlZlB0cjxTVkdQYXRoU2VnPjsKKyAgICB1c2luZyBM
aXN0SXRlbVRlYXJPZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8UmVmUHRyPFNWR1BhdGhTZWc+PjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMzEgKzI4
LDMyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBT
VkdQYXRoU2VnTGlzdDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gCiBjbGFzcyBTVkdQcm9wZXJ0
eVRlYXJPZmY7CiAKLWNsYXNzIFNWR1BhdGhTZWdMaXN0IDogcHVibGljIFZlY3RvcjxSZWZQdHI8
U1ZHUGF0aFNlZz4+IHsKK2NsYXNzIFNWR1BhdGhTZWdMaXN0VmFsdWVzIDogcHVibGljIFZlY3Rv
cjxSZWZQdHI8U1ZHUGF0aFNlZz4+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTVkdQYXRoU2Vn
TGlzdChTVkdQYXRoU2VnUm9sZSByb2xlKQorICAgIGV4cGxpY2l0IFNWR1BhdGhTZWdMaXN0VmFs
dWVzKFNWR1BhdGhTZWdSb2xlIHJvbGUpCiAgICAgICAgIDogbV9yb2xlKHJvbGUpCiAgICAgewog
ICAgIH0KIAogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAKLSAgICAvLyBPbmx5
IHVzZWQgYnkgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuCi0gICAgdm9pZCBjb21taXRD
aGFuZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIExpc3RNb2RpZmljYXRpb24pOworICAg
IHZvaWQgY29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBMaXN0TW9kaWZp
Y2F0aW9uKTsKIAogcHJpdmF0ZToKICAgICBTVkdQYXRoU2VnUm9sZSBtX3JvbGU7CiB9OwogCi10
ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdQYXRoU2VnTGlzdD4gewotICAg
IHN0YXRpYyBTVkdQYXRoU2VnTGlzdCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdQYXRoU2Vn
TGlzdChQYXRoU2VnVW5kZWZpbmVkUm9sZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1BhdGhTZWdMaXN0VmFsdWVzPiB7CisgICAgc3RhdGljIFNWR1BhdGhTZWdM
aXN0VmFsdWVzIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1BhdGhTZWdMaXN0VmFsdWVzKFBh
dGhTZWdVbmRlZmluZWRSb2xlKTsgfQogCiAgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gUmVmUHRy
PFNWR1BhdGhTZWc+OwogICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1Byb3BlcnR5VGVh
ck9mZjxSZWZQdHI8U1ZHUGF0aFNlZz4+OworICAgIHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJPZmYg
PSBTVkdQYXRoU2VnTGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDIwODc3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQCBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBk
CiAgICAgcmV0dXJuIFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CiB9CiAK
LWJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQ
YXRoU2VnTGlzdCYgbGlzdCwgU1ZHUGF0aEJ5dGVTdHJlYW0mIHJlc3VsdCwgUGF0aFBhcnNpbmdN
b2RlIHBhcnNpbmdNb2RlKQorYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhT
ZWdMaXN0VmFsdWVzKGNvbnN0IFNWR1BhdGhTZWdMaXN0VmFsdWVzJiBsaXN0LCBTVkdQYXRoQnl0
ZVN0cmVhbSYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiB7CiAgICAgcmVz
dWx0LmNsZWFyKCk7CiAgICAgaWYgKGxpc3QuaXNFbXB0eSgpKQpAQCAtNjQsNyArNjQsNyBAQCBi
b29sIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTCiAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBu
b3JtYWxpemVkIHBhdGggc2VnbWVudCBsaXN0cyEKICAgICBBU1NFUlQocGFyc2luZ01vZGUgPT0g
VW5hbHRlcmVkUGFyc2luZyk7CiAKLSAgICBTVkdQYXRoU2VnTGlzdCBhcHBlbmRlZEl0ZW1MaXN0
KFBhdGhTZWdVbmFsdGVyZWRSb2xlKTsKKyAgICBTVkdQYXRoU2VnTGlzdFZhbHVlcyBhcHBlbmRl
ZEl0ZW1MaXN0KFBhdGhTZWdVbmFsdGVyZWRSb2xlKTsKICAgICBhcHBlbmRlZEl0ZW1MaXN0LmFw
cGVuZChXVEZNb3ZlKHBhdGhTZWcpKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtIGFwcGVuZGVk
Qnl0ZVN0cmVhbTsKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVh
bShjb25zdCBTVkdQYQogICAgIHJldHVybiBTVkdQYXRoUGFyc2VyOjpwYXJzZShzb3VyY2UsIGJ1
aWxkZXIpOwogfQogCi1ib29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShjb25z
dCBTVkdQYXRoQnl0ZVN0cmVhbSYgc3RyZWFtLCBTVkdQYXRoRWxlbWVudCYgZWxlbWVudCwgU1ZH
UGF0aFNlZ0xpc3QmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQorYm9vbCBi
dWlsZFNWR1BhdGhTZWdMaXN0VmFsdWVzRnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0aEJ5dGVT
dHJlYW0mIHN0cmVhbSwgU1ZHUGF0aEVsZW1lbnQmIGVsZW1lbnQsIFNWR1BhdGhTZWdMaXN0VmFs
dWVzJiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKIHsKICAgICBpZiAoc3Ry
ZWFtLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDYsNyArMTA2LDcgQEAg
Ym9vbCBidWlsZFN0cmluZ0Zyb21CeXRlU3RyZWFtKGNvbnN0IFNWRwogICAgIHJldHVybiBTVkdQ
YXRoUGFyc2VyOjpwYXJzZVRvU3RyaW5nKHNvdXJjZSwgcmVzdWx0LCBwYXJzaW5nTW9kZSk7CiB9
CiAKLWJvb2wgYnVpbGRTdHJpbmdGcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xp
c3QmIGxpc3QsIFN0cmluZyYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiti
b29sIGJ1aWxkU3RyaW5nRnJvbVNWR1BhdGhTZWdMaXN0VmFsdWVzKGNvbnN0IFNWR1BhdGhTZWdM
aXN0VmFsdWVzJiBsaXN0LCBTdHJpbmcmIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdN
b2RlKQogewogICAgIHJlc3VsdCA9IFN0cmluZygpOwogICAgIGlmIChsaXN0LmlzRW1wdHkoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAkocmV2aXNpb24gMjA4Nzc1
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsMjMgKzMwLDIzIEBAIGNsYXNzIFBhdGg7CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVh
bTsKIGNsYXNzIFNWR1BhdGhFbGVtZW50OwogY2xhc3MgU1ZHUGF0aFNlZzsKLWNsYXNzIFNWR1Bh
dGhTZWdMaXN0OworY2xhc3MgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXM7CiAKIC8vIFN0cmluZy9TVkdQ
YXRoQnl0ZVN0cmVhbSAtPiBQYXRoCiBib29sIGJ1aWxkUGF0aEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiwgUGF0aCYpOwogYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRo
Qnl0ZVN0cmVhbSYsIFBhdGgmKTsKIAotLy8gU1ZHUGF0aFNlZ0xpc3QvU3RyaW5nIC0+IFNWR1Bh
dGhCeXRlU3RyZWFtCi1ib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xp
c3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmLCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVzdWx0LCBQYXRo
UGFyc2luZ01vZGUpOworLy8gU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMvU3RyaW5nIC0+IFNWR1BhdGhC
eXRlU3RyZWFtCitib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmLCBTVkdQYXRoQnl0ZVN0cmVhbSYgcmVz
dWx0LCBQYXRoUGFyc2luZ01vZGUpOwogYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21T
VkdQYXRoU2VnKFJlZlB0cjxTVkdQYXRoU2VnPiYmLCBTVkdQYXRoQnl0ZVN0cmVhbSYsIFBhdGhQ
YXJzaW5nTW9kZSk7CiBib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYsIFNWR1BhdGhCeXRlU3RyZWFtJiwgUGF0aFBhcnNpbmdNb2RlKTsKIAotLy8gU1ZH
UGF0aEJ5dGVTdHJlYW0vU1ZHUGF0aFNlZ0xpc3QgLT4gU3RyaW5nCisvLyBTVkdQYXRoQnl0ZVN0
cmVhbS9TVkdQYXRoU2VnTGlzdFZhbHVlcyAtPiBTdHJpbmcKIGJvb2wgYnVpbGRTdHJpbmdGcm9t
Qnl0ZVN0cmVhbShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYsIFN0cmluZyYsIFBhdGhQYXJzaW5n
TW9kZSk7Ci1ib29sIGJ1aWxkU3RyaW5nRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhT
ZWdMaXN0JiwgU3RyaW5nJiwgUGF0aFBhcnNpbmdNb2RlKTsKK2Jvb2wgYnVpbGRTdHJpbmdGcm9t
U1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoY29uc3QgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmLCBTdHJpbmcm
LCBQYXRoUGFyc2luZ01vZGUpOwogCi0vLyBTVkdQYXRoQnl0ZVN0cmVhbSAtPiBTVkdQYXRoU2Vn
TGlzdAotYm9vbCBidWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0oY29uc3QgU1ZHUGF0
aEJ5dGVTdHJlYW0mLCBTVkdQYXRoRWxlbWVudCYsIFNWR1BhdGhTZWdMaXN0JiwgUGF0aFBhcnNp
bmdNb2RlKTsKKy8vIFNWR1BhdGhCeXRlU3RyZWFtIC0+IFNWR1BhdGhTZWdMaXN0VmFsdWVzCiti
b29sIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RWYWx1ZXNGcm9tQnl0ZVN0cmVhbShjb25zdCBTVkdQYXRo
Qnl0ZVN0cmVhbSYsIFNWR1BhdGhFbGVtZW50JiwgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMmLCBQYXRo
UGFyc2luZ01vZGUpOwogCiBib29sIGNhbkJsZW5kU1ZHUGF0aEJ5dGVTdHJlYW1zKGNvbnN0IFNW
R1BhdGhCeXRlU3RyZWFtJiBmcm9tLCBjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgdG8pOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDIw
ODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBvcnQuaCIK
KyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5o
IgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KQEAgLTEyMyw3ICsxMjQsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnBhdHRlcm5UcmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIFNWR1RyYW5zZm9ybUxpc3QgbmV3TGlz
dDsKKyAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyBuZXdMaXN0OwogICAgICAgICBuZXdM
aXN0LnBhcnNlKHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRQYXR0ZXJuVHJhbnNmb3Jt
TGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0UGF0dGVyblRyYW5zZm9y
bUJhc2VWYWx1ZShuZXdMaXN0KTsKQEAgLTIzMCw0ICsyMzEsMTkgQEAgQWZmaW5lVHJhbnNmb3Jt
IFNWR1BhdHRlcm5FbGVtZW50Ojpsb2NhbAogICAgIHJldHVybiBtYXRyaXg7CiB9CiAKK1JlZjxT
VkdTdHJpbmdMaXN0PiBTVkdQYXR0ZXJuRWxlbWVudDo6cmVxdWlyZWRGZWF0dXJlcygpCit7Cisg
ICAgcmV0dXJuIFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKCp0aGlzKTsKK30KKworUmVmPFNW
R1N0cmluZ0xpc3Q+IFNWR1BhdHRlcm5FbGVtZW50OjpyZXF1aXJlZEV4dGVuc2lvbnMoKQoreyAK
KyAgICByZXR1cm4gU1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9ucygqdGhpcyk7Cit9CisKK1Jl
ZjxTVkdTdHJpbmdMaXN0PiBTVkdQYXR0ZXJuRWxlbWVudDo6c3lzdGVtTGFuZ3VhZ2UoKQorewor
ICAgIHJldHVybiBTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKnRoaXMpOworfQorCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMjA4Nzc1KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDExICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBhdHRlcm5B
dHRyaWJ1dGVzOwogIAotY2xhc3MgU1ZHUGF0dGVybkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZH
RWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJl
ZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3Rz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R0ZpdFRvVmlld0JveCB7CitjbGFzcyBTVkdQYXR0ZXJuRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBT
VkdFbGVtZW50LCBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLCBwdWJsaWMgU1ZHVGVzdHMsIHB1Ymxp
YyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR1BhdHRlcm5FbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKQEAgLTUwLDYgKzQ2LDExIEBAIHB1YmxpYzoK
IAogICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdM
b2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCBmaW5hbDsKIAorICAgIC8vIFNWR1Rlc3RzCisgICAg
UmVmPFNWR1N0cmluZ0xpc3Q+IHJlcXVpcmVkRmVhdHVyZXMoKTsKKyAgICBSZWY8U1ZHU3RyaW5n
TGlzdD4gcmVxdWlyZWRFeHRlbnNpb25zKCk7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHN5c3Rl
bUxhbmd1YWdlKCk7CisKIHByaXZhdGU6CiAgICAgU1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCkBAIC04MCw5ICs4MSw5IEBAIHByaXZhdGU6
CiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgLy8gU1ZHVGVzdHMK
LSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIGZpbmFsIHsgU1ZHVGVzdHM6
OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQotICAgIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMoKSBmaW5hbCB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQotICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSgpIGZpbmFsIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0K
KyAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIGZpbmFsIHsgU1ZHVGVzdHM6
OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygqdGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRFeHRlbnNpb25zKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMoKnRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKCkgZmluYWwgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgqdGhpcyk7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5o
CShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNWR1BvaW50IDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxTVkdQb2ludD4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkq
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFBvaW50JiB2YWx1
ZSkKKyAgICBzdGF0aWMgUmVmPFNWR1BvaW50PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYg
YW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UG9pbnQmIHZhbHVl
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTVkdQb2ludChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkp
OwogICAgIH0KIApAQCAtMTAxLDggKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgU1ZHUG9pbnQoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwg
U1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UG9pbnQmIHZhbHVlKQotICAgICAgICA6IFNWR1By
b3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkK
KyAgICBTVkdQb2ludChTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQ
cm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCisgICAgICAgIDogU1ZHUHJvcGVy
dHlUZWFyT2ZmPEZsb2F0UG9pbnQ+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKKyAg
ICB7CisgICAgfQorCisgICAgU1ZHUG9pbnQoU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UG9p
bnQmIHZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PihudWxs
cHRyLCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9pbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2lu
dC5pZGwJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCiAgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLworCiBbCiAgICAgU2tpcFZUYWJsZVZhbGlk
YXRpb24KIF0gaW50ZXJmYWNlIFNWR1BvaW50IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQb2ludExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2lu
dExpc3QuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9p
bnRMaXN0LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgot
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0cmluZyBTVkdQb2ludExp
c3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
LQotICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOyAvLyBGSVhNRTogU2hvdWxkbid0IHdlIHVzZSBjb21tYXMgdG8g
c2VwZXJhdGU/Ci0KLSAgICAgICAgY29uc3QgYXV0byYgcG9pbnQgPSBhdChpKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIocG9pbnQueCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocG9pbnQueSgpKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmNwcApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgJKHJldmlzaW9u
IDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw0MyArMSw1MiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVk
ZSAiU1ZHUG9pbnQuaCIKKyNpbmNsdWRlICJTVkdQb2ludExpc3RWYWx1ZXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdQb2ludDsKLQotY2xhc3MgU1ZHUG9pbnRMaXN0IGZp
bmFsIDogcHVibGljIFZlY3RvcjxGbG9hdFBvaW50PiB7CitjbGFzcyBTVkdQb2ludExpc3QgOiBw
dWJsaWMgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3RWYWx1ZXM+IHsKIHB1Ymxp
YzoKLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwotfTsKLQotdGVtcGxhdGU8PiBz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUG9pbnRMaXN0PiB7Ci0gICAgc3RhdGljIFNWR1Bv
aW50TGlzdCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdQb2ludExpc3QoKTsgfQorICAgIHVz
aW5nIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZjxTVkdQb2ludExpc3RWYWx1ZXM+OworICAgIHVzaW5nIExpc3RXcmFwcGVyQ2FjaGUg
PSBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6Okxpc3RXcmFwcGVyQ2FjaGU7CiAKLSAgICB1
c2luZyBMaXN0SXRlbVR5cGUgPSBGbG9hdFBvaW50OwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9m
ZiA9IFNWR1BvaW50OworICAgIHN0YXRpYyBSZWY8U1ZHUG9pbnRMaXN0PiBjcmVhdGUoQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUg
cm9sZSwgU1ZHUG9pbnRMaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBw
ZXJzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUG9pbnRMaXN0KGFu
aW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgU1ZHUG9pbnRMaXN0KEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0
ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1BvaW50TGlzdFZhbHVlcyYgdmFs
dWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICAgICAgOiBTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmPFNWR1BvaW50TGlzdFZhbHVlcz4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFs
dWVzLCB3cmFwcGVycykKKyAgICB7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAJKHJldmlz
aW9uIDIwODcwNSkJKGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5jcHA6MjA4
NzA1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIFNWR1BvaW50TGlzdDo6dmFsdWVBc1N0cmlu
ZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgdW5zaWduZWQg
c2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CisgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7IC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UgdXNlIGNvbW1hcyB0byBzZXBlcmF0ZT8KKworICAg
ICAgICBjb25zdCBhdXRvJiBwb2ludCA9IGF0KGkpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihwb2ludC54KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihwb2ludC55KCkpOworICAgIH0KKworICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2lu
dExpc3RWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2lu
dExpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksMTQgKzE5LDE0IEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgor
I2luY2x1ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVN0cmluZyBTVkdQb2ludExpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25z
dAorU3RyaW5nIFNWR1BvaW50TGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZygpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9pbnRMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bv
aW50TGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2ludExpc3QuaDoyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNs
dWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdQb2ludDsKKworY2xhc3MgU1ZHUG9pbnRMaXN0
IGZpbmFsIDogcHVibGljIFZlY3RvcjxGbG9hdFBvaW50PiB7CitwdWJsaWM6CisgICAgU3RyaW5n
IHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1BvaW50TGlzdD4geworICAgIHN0YXRpYyBTVkdQb2ludExpc3QgaW5pdGlh
bFZhbHVlKCkgeyByZXR1cm4gU1ZHUG9pbnRMaXN0KCk7IH0KKworICAgIHVzaW5nIExpc3RJdGVt
VHlwZSA9IEZsb2F0UG9pbnQ7CisgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUG9pbnQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9pbnRMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BvaW50TGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMDg3MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNywxOSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQb2ludDsKK2NsYXNzIFNWR1BvaW50
TGlzdDsKIAotY2xhc3MgU1ZHUG9pbnRMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxGbG9hdFBv
aW50PiB7CitjbGFzcyBTVkdQb2ludExpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPEZs
b2F0UG9pbnQ+IHsKIHB1YmxpYzoKICAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0Owog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUG9pbnRMaXN0PiB7
Ci0gICAgc3RhdGljIFNWR1BvaW50TGlzdCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdQb2lu
dExpc3QoKTsgfQordGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUG9pbnRM
aXN0VmFsdWVzPiB7CisgICAgc3RhdGljIFNWR1BvaW50TGlzdFZhbHVlcyBpbml0aWFsVmFsdWUo
KSB7IHJldHVybiB7IH07IH0KIAogICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IEZsb2F0UG9pbnQ7
CiAgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUG9pbnQ7CisgICAgdXNpbmcgTGlzdFBy
b3BlcnR5VGVhck9mZiA9IFNWR1BvaW50TGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4
Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAi
U1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKKyNpbmNsdWRlICJT
VkdQb2ludExpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw3ICs2NSw3IEBA
IFNWR1BvbHlFbGVtZW50OjpTVkdQb2x5RWxlbWVudChjb25zdCBRdWEKIHZvaWQgU1ZHUG9seUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0
dHIpIHsKLSAgICAgICAgU1ZHUG9pbnRMaXN0IG5ld0xpc3Q7CisgICAgICAgIFNWR1BvaW50TGlz
dFZhbHVlcyBuZXdMaXN0OwogICAgICAgICBpZiAoIXBvaW50c0xpc3RGcm9tU1ZHRGF0YShuZXdM
aXN0LCB2YWx1ZSkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS5yZXBvcnRFcnJvcigiUHJvYmxlbSBwYXJzaW5nIHBvaW50cz1cIiIgKyB2YWx1ZSArICJcIiIp
OwogCkBAIC0xMTQsMjAgKzExNSwxOSBAQCBSZWY8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHUG9s
eUVsZW1lbnQ6CiB7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKICAgICBTVkdQb2x5RWxl
bWVudCYgb3duZXJUeXBlID0gZG93bmNhc3Q8U1ZHUG9seUVsZW1lbnQ+KCpjb250ZXh0RWxlbWVu
dCk7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBl
cjxTVkdQb2x5RWxlbWVudCwgU1ZHQW5pbWF0ZWRQb2ludExpc3QsIFNWR1BvaW50TGlzdD4KLSAg
ICAgICAgKCZvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5mbygpLCBvd25lclR5cGUubV9wb2lu
dHMudmFsdWUpOworICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0
ZVdyYXBwZXI8U1ZHUG9seUVsZW1lbnQsIFNWR0FuaW1hdGVkUG9pbnRMaXN0LCBTVkdQb2ludExp
c3RWYWx1ZXM+KCZvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5mbygpLCBvd25lclR5cGUubV9w
b2ludHMudmFsdWUpOwogfQogCi1SZWZQdHI8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2lu
dExpc3Q+PiBTVkdQb2x5RWxlbWVudDo6cG9pbnRzKCkKK1JlZjxTVkdQb2ludExpc3Q+IFNWR1Bv
bHlFbGVtZW50Ojpwb2ludHMoKQogewogICAgIG1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplID0g
dHJ1ZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQ
b2ludExpc3Q+Kj4oc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0FuaW1hdGVkUG9pbnRMaXN0Pihs
b29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5iYXNlVmFsKCkuZ2V0KCkpOworICAg
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGxvb2t1
cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcih0aGlzKSktPmJhc2VWYWwoKTsKIH0KIAotUmVmUHRyPFNW
R0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pj4gU1ZHUG9seUVsZW1lbnQ6OmFuaW1h
dGVkUG9pbnRzKCkKK1JlZjxTVkdQb2ludExpc3Q+IFNWR1BvbHlFbGVtZW50OjphbmltYXRlZFBv
aW50cygpCiB7CiAgICAgbV9wb2ludHMuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qPihz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGxvb2t1cE9yQ3JlYXRl
UG9pbnRzV3JhcHBlcih0aGlzKSktPmFuaW1WYWwoKS5nZXQoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19yZWZlcmVuY2VfY2FzdDxTVkdBbmltYXRlZFBvaW50TGlzdD4obG9va3VwT3JDcmVhdGVQb2lu
dHNXcmFwcGVyKHRoaXMpKS0+YW5pbVZhbCgpOwogfQogCiBzaXplX3QgU1ZHUG9seUVsZW1lbnQ6
OmFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9s
eUVsZW1lbnQuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bv
bHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE2ICsyNCwxNiBAQAogI2luY2x1ZGUg
IlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5o
IgorI2luY2x1ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNWR1BvbHlFbGVtZW50IDogcHVibGljIFNWR0dyYXBoaWNzRWxlbWVudCwgcHVi
bGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewogcHVibGljOgotICAgIFJlZlB0cjxT
VkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4+IHBvaW50cygpOwotICAgIFJlZlB0
cjxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4+IGFuaW1hdGVkUG9pbnRzKCk7
CisgICAgUmVmPFNWR1BvaW50TGlzdD4gcG9pbnRzKCk7CisgICAgUmVmPFNWR1BvaW50TGlzdD4g
YW5pbWF0ZWRQb2ludHMoKTsKIAotICAgIFNWR1BvaW50TGlzdCYgcG9pbnRMaXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9wb2ludHMudmFsdWU7IH0KKyAgICBTVkdQb2ludExpc3RWYWx1ZXMmIHBvaW50
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLnZhbHVlOyB9CiAKICAgICBzdGF0aWMgY29u
c3QgU1ZHUHJvcGVydHlJbmZvKiBwb2ludHNQcm9wZXJ0eUluZm8oKTsKIApAQCAtNTksNyArNTks
NyBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogcHJv
dGVjdGVkOgotICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNW
R1BvaW50TGlzdD4gbV9wb2ludHM7CisgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1h
dGVkUHJvcGVydHk8U1ZHUG9pbnRMaXN0VmFsdWVzPiBtX3BvaW50czsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8uaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCisK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtMzIsOSArMzMs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8g
OiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4gY3JlYXRl
KFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSBy
b2xlLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1h
dGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkpOwog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKGFuaW1h
dGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQogCkBAIC05Miw4ICs5Miw4IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyhTVkdB
bmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiB2YWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0
eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPihhbmltYXRlZFByb3BlcnR5LCBy
b2xlLCB2YWx1ZSkKKyAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR0FuaW1hdGVkUHJvcGVy
dHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmIHZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkK
ICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDYgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTdG9wRWxlbWVudC5oIgotI2luY2x1
ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdC5oCShyZXZp
c2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw5ICsyNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUmVj
dCA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRSZWN0PiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxTVkdSZWN0PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQ
cm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UmVjdCYgdmFsdWUpCisgICAgc3Rh
dGljIFJlZjxTVkdSZWN0PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9w
ZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UmVjdCYgdmFsdWUpCiAgICAgewotICAg
ICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR1JlY3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKICAgICB9CiAKQEAg
LTExNCw4ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR1JlY3Qo
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJv
bGUsIEZsb2F0UmVjdCYgdmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0
UmVjdD4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCisgICAgU1ZHUmVjdChTVkdBbmlt
YXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxv
YXRSZWN0JiB2YWx1ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRSZWN0Pigm
YW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAgICAgewogICAgIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuY3BwCShub25leGlzdGVudCkKQEAgLTEsODAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiU1ZHU3RyaW5nTGlzdC5oIgotCi0jaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUg
IlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFNWR1N0cmluZ0xpc3Q6OmNvbW1pdENo
YW5nZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKLXsKLSAgICBBU1NFUlQoY29udGV4dEVs
ZW1lbnQpOwotICAgIGNvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwot
ICAgIGNvbnRleHRFbGVtZW50LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlTmFtZSk7
Ci19Ci0KLXZvaWQgU1ZHU3RyaW5nTGlzdDo6cmVzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17
Ci0gICAgcGFyc2Uoc3RyaW5nLCAnICcpOwotCi0gICAgLy8gQWRkIGVtcHR5IHN0cmluZywgaWYg
bGlzdCBpcyBlbXB0eS4KLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICBhcHBlbmQoZW1wdHlT
dHJpbmcoKSk7Ci19Ci0KLXZvaWQgU1ZHU3RyaW5nTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiBk
YXRhLCBVQ2hhciBkZWxpbWl0ZXIpCi17Ci0gICAgLy8gVE9ETyA6IG1vcmUgZXJyb3IgY2hlY2tp
bmcvcmVwb3J0aW5nCi0gICAgY2xlYXIoKTsKLQotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzID0gU3RyaW5nVmlldyhkYXRhKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25z
dCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGNvbnN0IFVDaGFyKiBl
bmQgPSBwdHIgKyBkYXRhLmxlbmd0aCgpOwotICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKLSAgICAg
ICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gcHRyOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYm
ICpwdHIgIT0gZGVsaW1pdGVyICYmICFpc1NWR1NwYWNlKCpwdHIpKQotICAgICAgICAgICAgcHRy
Kys7Ci0gICAgICAgIGlmIChwdHIgPT0gc3RhcnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgYXBwZW5kKFN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpKTsKLSAgICAgICAgc2tpcE9wdGlv
bmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQsIGRlbGltaXRlcik7Ci0gICAgfQotfQot
Ci1TdHJpbmcgU1ZHU3RyaW5nTGlzdDo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChp
ID4gMCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoYXQoaSkpOwotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJp
bmdMaXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAj
IwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0cmluZ0xpc3QuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0cmluZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMSw1MSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KICAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlF1YWxpZmllZE5h
bWUuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNs
dWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZh
bHVlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0VsZW1lbnQ7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IAotY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2ZmOwotCi1jbGFzcyBT
VkdTdHJpbmdMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxTdHJpbmc+IHsKK2NsYXNzIFNWR1N0
cmluZ0xpc3QgZmluYWwgOiBwdWJsaWMgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdT
dHJpbmdMaXN0VmFsdWVzPiB7CiBwdWJsaWM6Ci0gICAgU1ZHU3RyaW5nTGlzdChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgICAgICA6IG1fYXR0cmlidXRlTmFtZShhdHRy
aWJ1dGVOYW1lKQorICAgIHVzaW5nIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdMaXN0VmFsdWVzPjsKKyAgICB1c2lu
ZyBMaXN0V3JhcHBlckNhY2hlID0gQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpMaXN0V3Jh
cHBlckNhY2hlOworCisgICAgc3RhdGljIFJlZjxTVkdTdHJpbmdMaXN0PiBjcmVhdGUoU1ZHRWxl
bWVudCYgY29udGV4dEVsZW1lbnQsIFNWR1N0cmluZ0xpc3RWYWx1ZXMmIHZhbHVlcykKICAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1N0cmluZ0xpc3QoY29udGV4dEVsZW1l
bnQsIHZhbHVlcykpOwogICAgIH0KIAotICAgIHZvaWQgcmVzZXQoY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmLCBVQ2hhciBkZWxpbWl0ZXIgPSAnLCcpOwotCi0g
ICAgLy8gT25seSB1c2VkIGJ5IFNWR1N0cmluZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuCi0gICAgdm9p
ZCBjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwotCi0gICAgU3RyaW5n
IHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKLQogcHJpdmF0ZToKLSAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiBtX2F0dHJpYnV0ZU5hbWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdTdHJpbmdMaXN0PiB7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU3RyaW5n
OwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxTdHJpbmc+
OworICAgIFNWR1N0cmluZ0xpc3QoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIFNWR1N0cmlu
Z0xpc3RWYWx1ZXMmIHZhbHVlcykKKyAgICAgICAgOiBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFy
T2ZmPFNWR1N0cmluZ0xpc3RWYWx1ZXM+KGNvbnRleHRFbGVtZW50LCB2YWx1ZXMpCisgICAgewor
ICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNCkJKGZyb20gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuY3BwOjIwODcwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTVkdTdHJpbmdMaXN0LmgiCisKKyNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU1ZHU3RyaW5nTGlzdDo6Y29tbWl0
Q2hhbmdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0
RWxlbWVudCk7CisgICAgY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7
CisgICAgY29udGV4dEVsZW1lbnQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVOYW1l
KTsKK30KKwordm9pZCBTVkdTdHJpbmdMaXN0OjpyZXNldChjb25zdCBTdHJpbmcmIHN0cmluZykK
K3sKKyAgICBwYXJzZShzdHJpbmcsICcgJyk7CisKKyAgICAvLyBBZGQgZW1wdHkgc3RyaW5nLCBp
ZiBsaXN0IGlzIGVtcHR5LgorICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAgIGFwcGVuZChlbXB0
eVN0cmluZygpKTsKK30KKwordm9pZCBTVkdTdHJpbmdMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcm
IGRhdGEsIFVDaGFyIGRlbGltaXRlcikKK3sKKyAgICAvLyBUT0RPIDogbW9yZSBlcnJvciBjaGVj
a2luZy9yZXBvcnRpbmcKKyAgICBjbGVhcigpOworCisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJh
Y3RlcnMgPSBTdHJpbmdWaWV3KGRhdGEpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgIGNv
bnN0IFVDaGFyKiBwdHIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgY29uc3QgVUNoYXIq
IGVuZCA9IHB0ciArIGRhdGEubGVuZ3RoKCk7CisgICAgd2hpbGUgKHB0ciA8IGVuZCkgeworICAg
ICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBwdHI7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQg
JiYgKnB0ciAhPSBkZWxpbWl0ZXIgJiYgIWlzU1ZHU3BhY2UoKnB0cikpCisgICAgICAgICAgICBw
dHIrKzsKKyAgICAgICAgaWYgKHB0ciA9PSBzdGFydCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBhcHBlbmQoU3RyaW5nKHN0YXJ0LCBwdHIgLSBzdGFydCkpOworICAgICAgICBza2lwT3B0
aW9uYWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCwgZGVsaW1pdGVyKTsKKyAgICB9Cit9
CisKK1N0cmluZyBTVkdTdHJpbmdMaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYg
KGkgPiAwKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKworICAgICAgICBidWls
ZGVyLmFwcGVuZChhdChpKSk7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVz
LmNwcAkocmV2aXNpb24gMjA4NzA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJT
VkdTdHJpbmdMaXN0VmFsdWVzLmgiCiAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCkBAIC0yNywxNCArMjcsMTMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIFNWR1N0cmluZ0xpc3Q6OmNvbW1pdENoYW5nZShTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCkKK3ZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVlczo6Y29tbWl0Q2hhbmdl
KFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KQogewotICAgIEFTU0VSVChjb250ZXh0RWxlbWVu
dCk7Ci0gICAgY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7Ci0gICAg
Y29udGV4dEVsZW1lbnQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVOYW1lKTsKKyAg
ICBjb250ZXh0RWxlbWVudC5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOworICAgIGNvbnRleHRF
bGVtZW50LnN2Z0F0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVOYW1lKTsKIH0KIAotdm9pZCBT
VkdTdHJpbmdMaXN0OjpyZXNldChjb25zdCBTdHJpbmcmIHN0cmluZykKK3ZvaWQgU1ZHU3RyaW5n
TGlzdFZhbHVlczo6cmVzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgcGFyc2Uoc3Ry
aW5nLCAnICcpOwogCkBAIC00Myw3ICs0Miw3IEBAIHZvaWQgU1ZHU3RyaW5nTGlzdDo6cmVzZXQo
Y29uc3QgU3RyaW5nJiAKICAgICAgICAgYXBwZW5kKGVtcHR5U3RyaW5nKCkpOwogfQogCi12b2lk
IFNWR1N0cmluZ0xpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVy
KQordm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVzOjpwYXJzZShjb25zdCBTdHJpbmcmIGRhdGEsIFVD
aGFyIGRlbGltaXRlcikKIHsKICAgICAvLyBUT0RPIDogbW9yZSBlcnJvciBjaGVja2luZy9yZXBv
cnRpbmcKICAgICBjbGVhcigpOwpAQCAtNjIsNyArNjEsNyBAQCB2b2lkIFNWR1N0cmluZ0xpc3Q6
OnBhcnNlKGNvbnN0IFN0cmluZyYgCiAgICAgfQogfQogCi1TdHJpbmcgU1ZHU3RyaW5nTGlzdDo6
dmFsdWVBc1N0cmluZygpIGNvbnN0CitTdHJpbmcgU1ZHU3RyaW5nTGlzdFZhbHVlczo6dmFsdWVB
c1N0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgJKHJldmlzaW9uIDIwODcwNCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaDoyMDg3MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMu
aCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU1ZHRWxlbWVudDsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gCitjbGFzcyBTVkdQcm9wZXJ0
eVRlYXJPZmY7CisKK2NsYXNzIFNWR1N0cmluZ0xpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFN0
cmluZz4geworcHVibGljOgorICAgIFNWR1N0cmluZ0xpc3QoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKKyAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCByZXNldChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHBhcnNlKGNvbnN0IFN0cmluZyYsIFVDaGFyIGRlbGltaXRlciA9ICcsJyk7CisKKyAgICAvLyBP
bmx5IHVzZWQgYnkgU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi4KKyAgICB2b2lkIGNvbW1p
dENoYW5nZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisKKyAgICBTdHJpbmcgdmFsdWVB
c1N0cmluZygpIGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG1f
YXR0cmlidXRlTmFtZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1N0cmluZ0xpc3Q+IHsKKyAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBTdHJpbmc7CisgICAg
dXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2ZmPFN0cmluZz47Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Ry
aW5nTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJp
bmdMaXN0VmFsdWVzLmgJKHJldmlzaW9uIDIwODcwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHJpbmdMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxNCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZHU3RyaW5n
TGlzdDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gCiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7
CiAKLWNsYXNzIFNWR1N0cmluZ0xpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFN0cmluZz4gewor
Y2xhc3MgU1ZHU3RyaW5nTGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U3RyaW5nPiB7
CiBwdWJsaWM6Ci0gICAgU1ZHU3RyaW5nTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIFNWR1N0cmluZ0xpc3RWYWx1ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKICAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKICAg
ICB7CiAgICAgfQpAQCAtNDEsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldChjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYsIFVDaGFyIGRlbGltaXRl
ciA9ICcsJyk7CiAKLSAgICAvLyBPbmx5IHVzZWQgYnkgU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVh
ck9mZi4KLSAgICB2b2lkIGNvbW1pdENoYW5nZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7
CisgICAgLy8gT25seSB1c2VkIGJ5IFNWR1N0cmluZ0xpc3QuCisgICAgdm9pZCBjb21taXRDaGFu
Z2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpOwogCiAgICAgU3RyaW5nIHZhbHVlQXNTdHJp
bmcoKSBjb25zdDsKIApAQCAtNTAsOSArNTEsMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBtX2F0dHJpYnV0ZU5hbWU7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdTdHJpbmdMaXN0PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdTdHJpbmdMaXN0VmFsdWVzPiB7CiAgICAgdXNpbmcgTGlzdEl0ZW1UeXBl
ID0gU3RyaW5nOwogICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9m
ZjxTdHJpbmc+OworICAgIHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdTdHJpbmdMaXN0
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1Rlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMu
Y3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNDUgKzIwNCw0NCBAQCB2b2lkIFNWR1Rlc3RzOjphZGRT
dXBwb3J0ZWRBdHRyaWJ1dGVzKEhhCiAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoc3lzdGVt
TGFuZ3VhZ2VBdHRyKTsKIH0KIAotdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVBdHRyaWJ1dGUo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9w
ZXJ0eTxTVkdTdHJpbmdMaXN0PiYgcHJvcGVydHksIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCit2b2lkIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZUF0dHJpYnV0ZShTVkdFbGVtZW50
JiBjb250ZXh0RWxlbWVudCwgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0
cmluZ0xpc3RWYWx1ZXM+JiBwcm9wZXJ0eSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIGlmICghcHJvcGVydHku
c2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3JlcXVpcmVkRmVhdHVy
ZXMuc3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5LnZh
bHVlLnZhbHVlQXNTdHJpbmcoKSk7CisgICAgbV9yZXF1aXJlZEZlYXR1cmVzLnN5bmNocm9uaXpl
KCZjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgcHJvcGVydHkudmFsdWUudmFsdWVBc1N0
cmluZygpKTsKIH0KIAotdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQordm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KQogewogICAgIHN5bmNo
cm9uaXplQXR0cmlidXRlKGNvbnRleHRFbGVtZW50LCBtX3JlcXVpcmVkRmVhdHVyZXMsIHJlcXVp
cmVkRmVhdHVyZXNBdHRyKTsKIH0KIAotdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCit2b2lkIFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCkK
IHsKICAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShjb250ZXh0RWxlbWVudCwgbV9yZXF1aXJlZEV4
dGVuc2lvbnMsIHJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIpOwogfQogCi12b2lkIFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQordm9p
ZCBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50JiBjb250ZXh0
RWxlbWVudCkKIHsKICAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShjb250ZXh0RWxlbWVudCwgbV9z
eXN0ZW1MYW5ndWFnZSwgc3lzdGVtTGFuZ3VhZ2VBdHRyKTsKIH0KIAotU1ZHU3RyaW5nTGlzdCYg
U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKQorUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1Rlc3Rz
OjpyZXF1aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KQogewogICAgIG1f
cmVxdWlyZWRGZWF0dXJlcy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Ci0gICAgcmV0dXJuIG1f
cmVxdWlyZWRGZWF0dXJlcy52YWx1ZTsKKyAgICByZXR1cm4gU1ZHU3RyaW5nTGlzdDo6Y3JlYXRl
KGNvbnRleHRFbGVtZW50LCBtX3JlcXVpcmVkRmVhdHVyZXMudmFsdWUpOwogfQogCi1TVkdTdHJp
bmdMaXN0JiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKCkKK1JlZjxTVkdTdHJpbmdMaXN0
PiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50
KQogewogICAgIG1fcmVxdWlyZWRFeHRlbnNpb25zLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsg
ICAgCi0gICAgcmV0dXJuIG1fcmVxdWlyZWRFeHRlbnNpb25zLnZhbHVlOworICAgIHJldHVybiBT
VkdTdHJpbmdMaXN0OjpjcmVhdGUoY29udGV4dEVsZW1lbnQsIG1fcmVxdWlyZWRFeHRlbnNpb25z
LnZhbHVlKTsKIH0KIAotU1ZHU3RyaW5nTGlzdCYgU1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlKCkK
K1JlZjxTVkdTdHJpbmdMaXN0PiBTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCYg
Y29udGV4dEVsZW1lbnQpCiB7CiAgICAgbV9zeXN0ZW1MYW5ndWFnZS5zaG91bGRTeW5jaHJvbml6
ZSA9IHRydWU7Ci0gICAgcmV0dXJuIG1fc3lzdGVtTGFuZ3VhZ2UudmFsdWU7CisgICAgcmV0dXJu
IFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShjb250ZXh0RWxlbWVudCwgbV9zeXN0ZW1MYW5ndWFnZS52
YWx1ZSk7CiB9CiAKIGJvb2wgU1ZHVGVzdHM6Omhhc0ZlYXR1cmVGb3JMZWdhY3lCaW5kaW5ncyhj
b25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXN0cy5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGVzdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTggKzIxLDE1IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaCIKLSNpbmNsdWRlICJTVkdT
dHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdTdHJpbmdMaXN0Owog
CiBjbGFzcyBTVkdUZXN0cyB7CiBwdWJsaWM6Ci0gICAgU1ZHU3RyaW5nTGlzdCYgcmVxdWlyZWRG
ZWF0dXJlcygpOwotICAgIFNWR1N0cmluZ0xpc3QmIHJlcXVpcmVkRXh0ZW5zaW9ucygpOwotICAg
IFNWR1N0cmluZ0xpc3QmIHN5c3RlbUxhbmd1YWdlKCk7Ci0KICAgICBzdGF0aWMgYm9vbCBoYXNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKQEAg
LTUwLDE2ICs0NywyMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGVzdHMoKTsKIAot
ICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KTsKLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KTsKLSAgICB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1
aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQmKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gcmVxdWly
ZWRFeHRlbnNpb25zKFNWR0VsZW1lbnQmKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVt
TGFuZ3VhZ2UoU1ZHRWxlbWVudCYpOworCisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMoU1ZHRWxlbWVudCYpOworICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lv
bnMoU1ZHRWxlbWVudCYpOworICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdF
bGVtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzeW5jaHJvbml6ZUF0dHJpYnV0ZShTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5
PFNWR1N0cmluZ0xpc3Q+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7Cisg
ICAgdm9pZCBzeW5jaHJvbml6ZUF0dHJpYnV0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwg
U1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3RWYWx1ZXM+Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CiAKLSAgICBTVkdTeW5jaHJvbml6
YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEZlYXR1cmVzOwot
ICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJpbmdMaXN0PiBtX3Jl
cXVpcmVkRXh0ZW5zaW9uczsKLSAgICBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8
U1ZHU3RyaW5nTGlzdD4gbV9zeXN0ZW1MYW5ndWFnZTsKKyAgICBTVkdTeW5jaHJvbml6YWJsZUFu
aW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdFZhbHVlcz4gbV9yZXF1aXJlZEZlYXR1cmVzOwor
ICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJpbmdMaXN0VmFsdWVz
PiBtX3JlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJv
cGVydHk8U1ZHU3RyaW5nTGlzdFZhbHVlcz4gbV9zeXN0ZW1MYW5ndWFnZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbAkocmV2aXNpb24g
MjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjgsOSArMjgsOSBAQAogICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogICAgIFN1cHByZXNz
VG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFNWR1Rlc3RzIHsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBTVkdTdHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgU1ZHU3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKKyAgICBbTmV3T2JqZWN0XSByZWFkb25s
eSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOworICAgIFtOZXdPYmpl
Y3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsK
KyAgICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCBzeXN0ZW1M
YW5ndWFnZTsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBh
cmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICBib29sZWFuIGhhc0V4dGVuc2lvbihvcHRpb25h
bCBET01TdHJpbmcgZXh0ZW5zaW9uID0gInVuZGVmaW5lZCIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4
Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVz
b3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdUZXh0LmgiCiAjaW5jbHVkZSAiU1ZHQWx0R2x5
cGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgorI2luY2x1ZGUgIlNWR0xl
bmd0aExpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR051
bWJlckxpc3QuaCIKKyNpbmNsdWRlICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAi
U1ZHVFJlZkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdUZXh0RWxlbWVudC5oIgpAQCAtNjAsNyArNjAsNyBAQCBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50OjpTVkdUZXh0UG9zaXRpCiB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAg
IFNWR0xlbmd0aExpc3QgbmV3TGlzdDsKKyAgICAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBuZXdM
aXN0OwogICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlLCBMZW5ndGhNb2RlV2lkdGgpOwogICAg
ICAgICBkZXRhY2hBbmltYXRlZFhMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAg
ICBzZXRYQmFzZVZhbHVlKG5ld0xpc3QpOwpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlQXR0CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIFNWR0xlbmd0aExpc3QgbmV3TGlzdDsKKyAgICAgICAg
U1ZHTGVuZ3RoTGlzdFZhbHVlcyBuZXdMaXN0OwogICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVl
LCBMZW5ndGhNb2RlSGVpZ2h0KTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRZTGlzdFdyYXBwZXJz
KG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0WUJhc2VWYWx1ZShuZXdMaXN0KTsKQEAgLTc2
LDcgKzc2LDcgQEAgdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0dAogICAg
IH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpkeEF0dHIpIHsKLSAgICAgICAgU1ZHTGVu
Z3RoTGlzdCBuZXdMaXN0OworICAgICAgICBTVkdMZW5ndGhMaXN0VmFsdWVzIG5ld0xpc3Q7CiAg
ICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUsIExlbmd0aE1vZGVXaWR0aCk7CiAgICAgICAgIGRl
dGFjaEFuaW1hdGVkRHhMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRE
eEJhc2VWYWx1ZShuZXdMaXN0KTsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50OjpwYXJzZUF0dAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVz
OjpkeUF0dHIpIHsKLSAgICAgICAgU1ZHTGVuZ3RoTGlzdCBuZXdMaXN0OworICAgICAgICBTVkdM
ZW5ndGhMaXN0VmFsdWVzIG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUsIExl
bmd0aE1vZGVIZWlnaHQpOwogICAgICAgICBkZXRhY2hBbmltYXRlZER5TGlzdFdyYXBwZXJzKG5l
d0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0RHlCYXNlVmFsdWUobmV3TGlzdCk7CkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHQKICAgICB9
CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cm90YXRlQXR0cikgewotICAgICAgICBTVkdO
dW1iZXJMaXN0IG5ld0xpc3Q7CisgICAgICAgIFNWR051bWJlckxpc3RWYWx1ZXMgbmV3TGlzdDsK
ICAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSk7CiAgICAgICAgIGRldGFjaEFuaW1hdGVkUm90
YXRlTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0Um90YXRlQmFzZVZh
bHVlKG5ld0xpc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaAkocmV2aXNpb24g
MjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw5ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHVHJh
bnNmb3JtIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1WYWx1ZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5z
Zm9ybVZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlKFNW
R0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xl
LCBTVkdUcmFuc2Zvcm1WYWx1ZSYgdmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0
ZWRQcm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybShh
bmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KIApAQCAtMTM2LDggKzEzNSw4
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHVHJhbnNmb3JtKFNWR0FuaW1h
dGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdU
cmFuc2Zvcm1WYWx1ZSYgdmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1Ry
YW5zZm9ybVZhbHVlPihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKKyAgICBTVkdUcmFu
c2Zvcm0oU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlS
b2xlIHJvbGUsIFNWR1RyYW5zZm9ybVZhbHVlJiB2YWx1ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0
eVRlYXJPZmY8U1ZHVHJhbnNmb3JtVmFsdWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1
ZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxp
c3QuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtTGlzdC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCi0K
LSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJTVkdTVkdFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8U1ZHVHJhbnNmb3JtPiBT
VkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCYg
bWF0cml4KSBjb25zdAotewotICAgIHJldHVybiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFu
c2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7Ci19Ci0KLVJlZjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5z
Zm9ybUxpc3Q6OmNvbnNvbGlkYXRlKCkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4Owot
ICAgIGlmICghY29uY2F0ZW5hdGUobWF0cml4KSkKLSAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9y
bTo6Y3JlYXRlKCk7Ci0KLSAgICBTVkdUcmFuc2Zvcm1WYWx1ZSB0cmFuc2Zvcm0obWF0cml4KTsK
LSAgICBjbGVhcigpOwotICAgIGFwcGVuZCh0cmFuc2Zvcm0pOwotICAgIHJldHVybiBTVkdUcmFu
c2Zvcm06OmNyZWF0ZSh0cmFuc2Zvcm0pOwotfQotCi1ib29sIFNWR1RyYW5zZm9ybUxpc3Q6OmNv
bmNhdGVuYXRlKEFmZmluZVRyYW5zZm9ybSYgcmVzdWx0KSBjb25zdAotewotICAgIHVuc2lnbmVk
IHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBy
ZXN1bHQgKj0gYXQoaSkubWF0cml4KCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5n
IFNWR1RyYW5zZm9ybUxpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGkgPiAwKQot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVu
ZChhdChpKS52YWx1ZUFzU3RyaW5nKCkpOwotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Ci19Ci0KLXZvaWQgU1ZHVHJhbnNmb3JtTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5n
JiB0cmFuc2Zvcm0pCi17Ci0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdW
aWV3KHRyYW5zZm9ybSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIq
IHN0YXJ0ID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGlmICghU1ZHVHJhbnNmb3JtYWJs
ZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoKnRoaXMsIHN0YXJ0LCBzdGFydCArIHRyYW5zZm9y
bS5sZW5ndGgoKSkpCi0gICAgICAgIGNsZWFyKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1M
aXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwot
bmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMjkgKzIwLDU4
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKLSNp
bmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHTGlzdFBy
b3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdUcmFuc2Zvcm1MaXN0IGZpbmFsIDogcHVi
bGljIFZlY3RvcjxTVkdUcmFuc2Zvcm1WYWx1ZSwgMT4geworY2xhc3MgU1ZHVHJhbnNmb3JtTGlz
dCBmaW5hbCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3RW
YWx1ZXM+IHsKIHB1YmxpYzoKLSAgICBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGVTVkdUcmFuc2Zv
cm1Gcm9tTWF0cml4KFNWR01hdHJpeCYpIGNvbnN0OwotICAgIFJlZjxTVkdUcmFuc2Zvcm0+IGNv
bnNvbGlkYXRlKCk7CisgICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+OworICAg
IHVzaW5nIExpc3RXcmFwcGVyQ2FjaGUgPSBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6Okxp
c3RXcmFwcGVyQ2FjaGU7CiAKLSAgICBib29sIGNvbmNhdGVuYXRlKEFmZmluZVRyYW5zZm9ybSYg
cmVzdWx0KSBjb25zdDsKLSAKLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwotICAg
IHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0PiB7Ci0gICAgc3RhdGljIFNWR1RyYW5zZm9y
bUxpc3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVl
QXNTdHJpbmcoKTsgfQotCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU1ZHVHJhbnNmb3JtVmFs
dWU7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHVHJhbnNmb3JtOworICAgIHN0YXRp
YyBSZWY8U1ZHVHJhbnNmb3JtTGlzdD4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybUxp
c3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm1MaXN0KGFuaW1hdGVkUHJvcGVy
dHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxS
ZWY8U1ZHVHJhbnNmb3JtPj4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgm
IG1hdHJpeCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7CisgICAgICAgIHJldHVy
biBtX3ZhbHVlcy0+Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChtYXRyaXgpOworICAgIH0K
KworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxTVkdUcmFuc2Zvcm0+PiBjb25zb2xpZGF0ZSgpCisg
ICAgeworICAgICAgICBBU1NFUlQobV92YWx1ZXMpOworICAgICAgICBBU1NFUlQobV93cmFwcGVy
cyk7CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3QoKTsKKyAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KTsKKworICAgICAgICBBU1NFUlQobV92YWx1ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLT5zaXpl
KCkpOworCisgICAgICAgIC8vIFNwZWM6IElmIHRoZSBsaXN0IHdhcyBlbXB0eSwgdGhlbiBhIHZh
bHVlIG9mIG51bGwgaXMgcmV0dXJuZWQuCisgICAgICAgIGlmIChtX3ZhbHVlcy0+aXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgZGV0YWNoTGlzdFdyYXBw
ZXJzKDApOworICAgICAgICAKKyAgICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gd3JhcHBlciA9
IG1fdmFsdWVzLT5jb25zb2xpZGF0ZSgpOworICAgICAgICBtX3dyYXBwZXJzLT5hcHBlbmQod3Jh
cHBlci5nZXQoKSk7CisKKyAgICAgICAgQVNTRVJUKG1fdmFsdWVzLT5zaXplKCkgPT0gbV93cmFw
cGVycy0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUod3JhcHBlcik7CisgICAgfQor
Citwcml2YXRlOgorICAgIFNWR1RyYW5zZm9ybUxpc3QoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3Jt
TGlzdFZhbHVlcyYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICAgICAg
OiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KGFuaW1hdGVk
UHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpCisgICAgeworICAgIH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNSkJKGZyb20gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwOjIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdU
cmFuc2Zvcm1MaXN0LmgiCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRl
ICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
ZWY8U1ZHVHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9t
TWF0cml4KFNWR01hdHJpeCYgbWF0cml4KSBjb25zdAoreworICAgIHJldHVybiBTVkdTVkdFbGVt
ZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7Cit9CisKK1JlZjxTVkdU
cmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNvbnNvbGlkYXRlKCkKK3sKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gbWF0cml4OworICAgIGlmICghY29uY2F0ZW5hdGUobWF0cml4KSkKKyAgICAgICAg
cmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKCk7CisKKyAgICBTVkdUcmFuc2Zvcm1WYWx1ZSB0
cmFuc2Zvcm0obWF0cml4KTsKKyAgICBjbGVhcigpOworICAgIGFwcGVuZCh0cmFuc2Zvcm0pOwor
ICAgIHJldHVybiBTVkdUcmFuc2Zvcm06OmNyZWF0ZSh0cmFuc2Zvcm0pOworfQorCitib29sIFNW
R1RyYW5zZm9ybUxpc3Q6OmNvbmNhdGVuYXRlKEFmZmluZVRyYW5zZm9ybSYgcmVzdWx0KSBjb25z
dAoreworICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgaWYgKCFzaXplKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQorICAgICAgICByZXN1bHQgKj0gYXQoaSkubWF0cml4KCk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworU3RyaW5nIFNWR1RyYW5zZm9ybUxpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb25z
dAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICB1bnNpZ25lZCBzaXplID0gdGhp
cy0+c2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKworICAg
ICAgICBidWlsZGVyLmFwcGVuZChhdChpKS52YWx1ZUFzU3RyaW5nKCkpOworICAgIH0KKworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgU1ZHVHJhbnNmb3JtTGlzdDo6
cGFyc2UoY29uc3QgU3RyaW5nJiB0cmFuc2Zvcm0pCit7CisgICAgYXV0byB1cGNvbnZlcnRlZENo
YXJhY3RlcnMgPSBTdHJpbmdWaWV3KHRyYW5zZm9ybSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7
CisgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGlm
ICghU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoKnRoaXMsIHN0YXJ0
LCBzdGFydCArIHRyYW5zZm9ybS5sZW5ndGgoKSkpCisgICAgICAgIGNsZWFyKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksNyAr
MTksNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zv
cm1MaXN0LmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIgogCiAjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgpAQCAtMjgs
MTIgKzI4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNWR1RyYW5zZm9ybT4g
U1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgm
IG1hdHJpeCkgY29uc3QKK1JlZjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6
OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4JiBtYXRyaXgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgo
bWF0cml4KTsKIH0KIAotUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y29uc29s
aWRhdGUoKQorUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6Y29uc29s
aWRhdGUoKQogewogICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAgICAgaWYgKCFjb25jYXRl
bmF0ZShtYXRyaXgpKQpAQCAtNDUsNyArNDUsNyBAQCBSZWY8U1ZHVHJhbnNmb3JtPiBTVkdUcmFu
c2Zvcm1MaXN0Ojpjb25zCiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKHRyYW5zZm9y
bSk7CiB9CiAKLWJvb2wgU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0ZW5hdGUoQWZmaW5lVHJhbnNm
b3JtJiByZXN1bHQpIGNvbnN0Citib29sIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNvbmNhdGVu
YXRlKEFmZmluZVRyYW5zZm9ybSYgcmVzdWx0KSBjb25zdAogewogICAgIHVuc2lnbmVkIHNpemUg
PSB0aGlzLT5zaXplKCk7CiAgICAgaWYgKCFzaXplKQpAQCAtNTcsNyArNTcsNyBAQCBib29sIFNW
R1RyYW5zZm9ybUxpc3Q6OmNvbmNhdGVuYXRlKEFmZmluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVN0cmluZyBTVkdUcmFuc2Zvcm1MaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK1N0cmluZyBT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKQEAg
LTcxLDcgKzcxLDcgQEAgU3RyaW5nIFNWR1RyYW5zZm9ybUxpc3Q6OnZhbHVlQXNTdHJpbmcoKQog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgU1ZHVHJhbnNmb3JtTGlz
dDo6cGFyc2UoY29uc3QgU3RyaW5nJiB0cmFuc2Zvcm0pCit2b2lkIFNWR1RyYW5zZm9ybUxpc3RW
YWx1ZXM6OnBhcnNlKGNvbnN0IFN0cmluZyYgdHJhbnNmb3JtKQogewogICAgIGF1dG8gdXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0cmFuc2Zvcm0pLnVwY29udmVydGVkQ2hhcmFj
dGVycygpOwogICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAkocmV2
aXNpb24gMjA4NzA1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5o
OjIwODcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCisjaW5jbHVkZSAiU1ZHVHJh
bnNmb3JtLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR1RyYW5z
Zm9ybVZhbHVlLCAxPiB7CitwdWJsaWM6CisgICAgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZH
VHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmKSBjb25zdDsKKyAgICBSZWY8U1ZHVHJhbnNm
b3JtPiBjb25zb2xpZGF0ZSgpOworCisgICAgYm9vbCBjb25jYXRlbmF0ZShBZmZpbmVUcmFuc2Zv
cm0mIHJlc3VsdCkgY29uc3Q7CisgCisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsK
KyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlzdD4geworICAgIHN0YXRpYyBTVkdUcmFu
c2Zvcm1MaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQorICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgdHlwZSkgeyByZXR1cm4gdHlwZS52
YWx1ZUFzU3RyaW5nKCk7IH0KKworICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR1RyYW5zZm9y
bVZhbHVlOworICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1RyYW5zZm9ybTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjA4NzA1KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjMgKzI2
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdCBm
aW5hbCA6IHB1YmxpYyBWZWN0b3I8U1ZHVHJhbnNmb3JtVmFsdWUsIDE+IHsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitjbGFzcyBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOworCitjbGFzcyBTVkdUcmFu
c2Zvcm1MaXN0OworCitjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIGZpbmFsIDogcHVibGlj
IFZlY3RvcjxTVkdUcmFuc2Zvcm1WYWx1ZSwgMT4gewogcHVibGljOgogICAgIFJlZjxTVkdUcmFu
c2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4JikgY29uc3Q7CiAg
ICAgUmVmPFNWR1RyYW5zZm9ybT4gY29uc29saWRhdGUoKTsKIAogICAgIGJvb2wgY29uY2F0ZW5h
dGUoQWZmaW5lVHJhbnNmb3JtJiByZXN1bHQpIGNvbnN0OwotIAorCiAgICAgU3RyaW5nIHZhbHVl
QXNTdHJpbmcoKSBjb25zdDsKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwogfTsKIAot
dGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlzdD4gewot
ICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm1MaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsg
fQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgdHlw
ZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IFNW
R1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+IHsKKyAgICBzdGF0aWMgU1ZH
VHJhbnNmb3JtTGlzdFZhbHVlcyBpbml0aWFsVmFsdWUoKSB7IHJldHVybiB7IH07IH0KKyAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIGxpc3Qp
IHsgcmV0dXJuIGxpc3QudmFsdWVBc1N0cmluZygpOyB9CiAKICAgICB1c2luZyBMaXN0SXRlbVR5
cGUgPSBTVkdUcmFuc2Zvcm1WYWx1ZTsKICAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdU
cmFuc2Zvcm07CisgICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR1RyYW5zZm9ybUxp
c3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybWFibGUuY3BwCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcg
QEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNs
dWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0Lmgi
CisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTgxLDcgKzE4MSw3IEBA
IFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlIFNWR1QKICAgICByZXR1cm4gdHlw
ZTsKIH0KIAotYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShT
VkdUcmFuc2Zvcm1MaXN0JiBsaXN0LCBjb25zdCBVQ2hhciomIGN1cnJUcmFuc2Zvcm0sIGNvbnN0
IFVDaGFyKiBlbmQsIFRyYW5zZm9ybVBhcnNpbmdNb2RlIG1vZGUpCitib29sIFNWR1RyYW5zZm9y
bWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIGxp
c3QsIGNvbnN0IFVDaGFyKiYgY3VyclRyYW5zZm9ybSwgY29uc3QgVUNoYXIqIGVuZCwgVHJhbnNm
b3JtUGFyc2luZ01vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBDbGVhckxpc3QpCiAgICAg
ICAgIGxpc3QuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1h
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUu
aAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsK
K2NsYXNzIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM7CiAKIGNsYXNzIFNWR1RyYW5zZm9ybWFibGUg
OiBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKIHB1YmxpYzoKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtYWJsZSgpOwogCi0gICAgc3RhdGljIGJvb2wg
cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCYsIGNvbnN0IFVDaGFyKiYg
cHRyLCBjb25zdCBVQ2hhciogZW5kLCBUcmFuc2Zvcm1QYXJzaW5nTW9kZSBtb2RlID0gQ2xlYXJM
aXN0KTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzJiwgY29uc3QgVUNoYXIqJiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQsIFRyYW5z
Zm9ybVBhcnNpbmdNb2RlID0gQ2xlYXJMaXN0KTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5z
Zm9ybVZhbHVlKFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlLCBjb25zdCBVQ2hh
ciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3JtVmFsdWUmKTsKICAgICBzdGF0
aWMgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgcGFyc2VUcmFuc2Zvcm1UeXBl
KGNvbnN0IFN0cmluZyYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJTVkdWaWV3
RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdM
aXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsMTAgKzUyLDE1IEBAIFJlZjxT
VkdWaWV3RWxlbWVudD4gU1ZHVmlld0VsZW1lbnQ6OmNyZWEKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTVkdWaWV3RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCitSZWY8U1ZHU3Ry
aW5nTGlzdD4gU1ZHVmlld0VsZW1lbnQ6OnZpZXdUYXJnZXQoKQoreworICAgIHJldHVybiBTVkdT
dHJpbmdMaXN0OjpjcmVhdGUoKnRoaXMsIG1fdmlld1RhcmdldCk7Cit9CisKIHZvaWQgU1ZHVmll
d0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdU
YXJnZXRBdHRyKQotICAgICAgICB2aWV3VGFyZ2V0KCkucmVzZXQodmFsdWUpOworICAgICAgICBt
X3ZpZXdUYXJnZXQucmVzZXQodmFsdWUpOwogCiAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgIFNWR0ZpdFRvVmlld0JveDo6
cGFyc2VBdHRyaWJ1dGUodGhpcywgbmFtZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ZpZXdFbGVtZW50LmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMiArMjYsMjEgQEAKICNpbmNs
dWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xp
c3QuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHWm9v
bUFuZFBhbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR1ZpZXdFbGVtZW50
IGZpbmFsIDogcHVibGljIFNWR0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHWm9vbUFuZFBhbiB7CitjbGFzcyBTVkdTdHJpbmdMaXN0OworCitj
bGFzcyBTVkdWaWV3RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJsaWMgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgcHVibGljIFNWR0ZpdFRvVmlld0JveCwgcHVibGlj
IFNWR1pvb21BbmRQYW4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U1ZHVmlld0VsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIFNW
R0VsZW1lbnQ6OnJlZjsKICAgICB1c2luZyBTVkdFbGVtZW50OjpkZXJlZjsKIAotICAgIFNWR1N0
cmluZ0xpc3QmIHZpZXdUYXJnZXQoKSB7IHJldHVybiBtX3ZpZXdUYXJnZXQ7IH0KKyAgICBSZWY8
U1ZHU3RyaW5nTGlzdD4gdmlld1RhcmdldCgpOwogICAgIFNWR1pvb21BbmRQYW5UeXBlIHpvb21B
bmRQYW4oKSBjb25zdCB7IHJldHVybiBtX3pvb21BbmRQYW47IH0KICAgICB2b2lkIHNldFpvb21B
bmRQYW4odW5zaWduZWQgc2hvcnQgem9vbUFuZFBhbikgeyBtX3pvb21BbmRQYW4gPSBTVkdab29t
QW5kUGFuOjpwYXJzZUZyb21OdW1iZXIoem9vbUFuZFBhbik7IH0KIApAQCAtNjAsNyArNTksNyBA
QCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIFNW
R1pvb21BbmRQYW5UeXBlIG1fem9vbUFuZFBhbjsKLSAgICBTVkdTdHJpbmdMaXN0IG1fdmlld1Rh
cmdldDsKKyAgICBTVkdTdHJpbmdMaXN0VmFsdWVzIG1fdmlld1RhcmdldDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50Lmlk
bAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIGludGVyZmFjZSBT
VkdWaWV3RWxlbWVudCA6IFNWR0VsZW1lbnQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdT
dHJpbmdMaXN0IHZpZXdUYXJnZXQ7CisgICAgW05ld09iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRl
IFNWR1N0cmluZ0xpc3Qgdmlld1RhcmdldDsKIH07CiAKIFNWR1ZpZXdFbGVtZW50IGltcGxlbWVu
dHMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3U3BlYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zp
ZXdTcGVjLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zp
ZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlNW
R0ZpdFRvVmlld0JveC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFy
c2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUg
IlNWR1RyYW5zZm9ybWFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA3LDcgKzEw
OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR1ZpZXdTcGVjOjpzZXRab29tQW4KIAogU3RyaW5n
IFNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm1TdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0Pjo6dG9TdHJpbmcobV90cmFuc2Zvcm0pOwor
ICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPjo6dG9T
dHJpbmcobV90cmFuc2Zvcm0pOwogfQogCiBTdHJpbmcgU1ZHVmlld1NwZWM6OnZpZXdCb3hTdHJp
bmcoKSBjb25zdApAQCAtMTMwLDEyICsxMzEsMTIgQEAgU1ZHRWxlbWVudCogU1ZHVmlld1NwZWM6
OnZpZXdUYXJnZXQoKSBjbwogICAgIHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50PihlbGVtZW50
KTsKIH0KIAotUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY+IFNWR1ZpZXdT
cGVjOjp0cmFuc2Zvcm0oKQorUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+IFNWR1ZpZXdTcGVjOjp0
cmFuc2Zvcm0oKQogewogICAgIGlmICghbV9jb250ZXh0RWxlbWVudCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgLy8gUmV0dXJuIHRoZSBhbmltVmFsIGhlcmUsIGFzIGl0cyByZWFkb25s
eSBieSBkZWZhdWx0IC0gd2hpY2ggaXMgZXhhY3RseSB3aGF0IHdlIHdhbnQgaGVyZS4KLSAgICBy
ZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2Zm
PihzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Pihsb29rdXBP
ckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIodGhpcykpLT5hbmltVmFsKCkpOworICAgIHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Pihsb29rdXBPckNy
ZWF0ZVRyYW5zZm9ybVdyYXBwZXIodGhpcykpLT5hbmltVmFsKCk7CiB9CiAKIFJlZlB0cjxTVkdB
bmltYXRlZFJlY3Q+IFNWR1ZpZXdTcGVjOjp2aWV3Qm94QW5pbWF0ZWQoKQpAQCAtMTcwLDE1ICsx
NzEsMTUgQEAgUmVmPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1ZpZXdTcGVjOjpsbwogewogICAg
IEFTU0VSVChvd25lclR5cGUpOwogICAgIEFTU0VSVChvd25lclR5cGUtPm1fY29udGV4dEVsZW1l
bnQpOwotICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBw
ZXI8U1ZHRWxlbWVudCwgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0
Pihvd25lclR5cGUtPm1fY29udGV4dEVsZW1lbnQsIHRyYW5zZm9ybVByb3BlcnR5SW5mbygpLCBv
d25lclR5cGUtPm1fdHJhbnNmb3JtKTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6
bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0VsZW1lbnQsIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dCwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4ob3duZXJUeXBlLT5tX2NvbnRleHRFbGVtZW50LCB0
cmFuc2Zvcm1Qcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3RyYW5zZm9ybSk7CiB9CiAKIHZv
aWQgU1ZHVmlld1NwZWM6OnJlc2V0KCkKIHsKICAgICBtX3pvb21BbmRQYW4gPSBTVkdab29tQW5k
UGFuTWFnbmlmeTsKICAgICBtX3RyYW5zZm9ybS5jbGVhcigpOwotICAgIG1fdmlld0JveCA9IEZs
b2F0UmVjdCgpOwotICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpbyA9IFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZSgpOworICAgIG1fdmlld0JveCA9IHsgfTsKKyAgICBtX3ByZXNlcnZlQXNwZWN0
UmF0aW8gPSB7IH07CiAgICAgbV92aWV3VGFyZ2V0U3RyaW5nID0gZW1wdHlTdHJpbmcoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMyAr
MjIsMTMgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFJlY3QuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIK
LSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlz
dFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTVkdFbGVtZW50OwotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZjsKK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAKIGNsYXNzIFNWR1ZpZXdTcGVjIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHVmlld1NwZWM+LCBwdWJsaWMgU1ZHWm9vbUFuZFBh
biwgcHVibGljIFNWR0ZpdFRvVmlld0JveCB7CiBwdWJsaWM6CkBAIC01NCw4ICs1NCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc2V0Q29udGV4dEVsZW1lbnQoKSB7IG1fY29udGV4dEVsZW1lbnQg
PSBudWxscHRyOyB9CiAKICAgICAvLyBDdXN0b20gbm9uLWFuaW1hdGVkICd0cmFuc2Zvcm0nIHBy
b3BlcnR5LgotICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmPiB0cmFu
c2Zvcm0oKTsKLSAgICBTVkdUcmFuc2Zvcm1MaXN0IHRyYW5zZm9ybUJhc2VWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CisgICAgUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+IHRy
YW5zZm9ybSgpOworICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgdHJhbnNmb3JtQmFzZVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KIAogICAgIC8vIEN1c3RvbSBhbmltYXRl
ZCAndmlld0JveCcgcHJvcGVydHkuCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUmVjdD4gdmlld0Jv
eEFuaW1hdGVkKCk7CkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICBTVkdFbGVtZW50
KiBtX2NvbnRleHRFbGVtZW50OwogICAgIFNWR1pvb21BbmRQYW5UeXBlIG1fem9vbUFuZFBhbiB7
IFNWR1pvb21BbmRQYW5NYWduaWZ5IH07Ci0gICAgU1ZHVHJhbnNmb3JtTGlzdCBtX3RyYW5zZm9y
bTsKKyAgICBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIG1fdHJhbnNmb3JtOwogICAgIEZsb2F0UmVj
dCBtX3ZpZXdCb3g7CiAgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIG1fcHJlc2VydmVB
c3BlY3RSYXRpbzsKICAgICBTdHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5nOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRM
aXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwyNyArMzYsMzMgQEAgcHVibGljOgogICAgIHVzaW5nIExpc3RJdGVtVGVh
ck9mZiA9IHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46Okxpc3RJdGVt
VGVhck9mZjsKICAgICB1c2luZyBMaXN0V3JhcHBlckNhY2hlID0gVmVjdG9yPFJlZlB0cjxMaXN0
SXRlbVRlYXJPZmY+PjsKICAgICB1c2luZyBMaXN0UHJvcGVydHkgPSBTVkdMaXN0UHJvcGVydHk8
UHJvcGVydHlUeXBlPjsKLSAgICB1c2luZyBMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHTGlzdFBy
b3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+OworICAgIHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJP
ZmYgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0UHJvcGVy
dHlUZWFyT2ZmOwogICAgIHVzaW5nIENvbnRlbnRUeXBlID0gUHJvcGVydHlUeXBlOwogCi0gICAg
dmlydHVhbCBSZWZQdHI8TGlzdFByb3BlcnR5PiBiYXNlVmFsKCkKKyAgICBzdGF0aWMgUmVmPFNW
R0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+PiBjcmVhdGUoU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUm
IHZhbHVlcykKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9w
ZXJ0eVR5cGU+KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5
VHlwZSwgdmFsdWVzKSk7CisgICAgfQorCisgICAgdmlydHVhbCBSZWY8TGlzdFByb3BlcnR5VGVh
ck9mZj4gYmFzZVZhbCgpCiAgICAgewogICAgICAgICBpZiAobV9iYXNlVmFsKQotICAgICAgICAg
ICAgcmV0dXJuIG1fYmFzZVZhbDsKKyAgICAgICAgICAgIHJldHVybiAqbV9iYXNlVmFsOwogCi0g
ICAgICAgIGF1dG8gcHJvcGVydHkgPSBMaXN0UHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUodGhpcywg
QmFzZVZhbFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJzKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0
eSA9IExpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSgqdGhpcywgQmFzZVZhbFJvbGUsIG1fdmFs
dWVzLCBtX3dyYXBwZXJzKTsKICAgICAgICAgbV9iYXNlVmFsID0gcHJvcGVydHkucHRyKCk7Ci0g
ICAgICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5
OwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPExpc3RQcm9wZXJ0eT4gYW5pbVZhbCgpCisg
ICAgdmlydHVhbCBSZWY8TGlzdFByb3BlcnR5VGVhck9mZj4gYW5pbVZhbCgpCiAgICAgewogICAg
ICAgICBpZiAobV9hbmltVmFsKQotICAgICAgICAgICAgcmV0dXJuIG1fYW5pbVZhbDsKKyAgICAg
ICAgICAgIHJldHVybiAqbV9hbmltVmFsOwogCi0gICAgICAgIGF1dG8gcHJvcGVydHkgPSBMaXN0
UHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUodGhpcywgQW5pbVZhbFJvbGUsIG1fdmFsdWVzLCBtX3dy
YXBwZXJzKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eSA9IExpc3RQcm9wZXJ0eVRlYXJPZmY6OmNy
ZWF0ZSgqdGhpcywgQW5pbVZhbFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJzKTsKICAgICAgICAg
bV9hbmltVmFsID0gcHJvcGVydHkucHRyKCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHByb3Bl
cnR5KTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5OwogICAgIH0KICAgICAKICAgICBib29sIGlz
QW5pbWF0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5OyB9
CkBAIC03MiwxNSArNzgsMTMgQEAgcHVibGljOgogICAgIGludCBmaW5kSXRlbShTVkdQcm9wZXJ0
eSogcHJvcGVydHkpCiAgICAgewogICAgICAgICAvLyBUaGlzIHNob3VsZCBldmVyIGJlIGNhbGxl
ZCBmb3Igb3VyIGJhc2VWYWwsIGFzIGFuaW1WYWwgY2FuJ3QgbW9kaWZ5IHRoZSBsaXN0LgotICAg
ICAgICAvLyBJdCdzIHNhZmUgdG8gY2FzdCB0byBMaXN0UHJvcGVydHlUZWFyT2ZmIGhlcmUgYXMg
YWxsIGNsYXNzZXMgaW5oZXJpdGluZyBmcm9tIHVzIHN1cHBseSB0aGVpciBvd24gcmVtb3ZlSXRl
bUZyb21MaXN0KCkgbWV0aG9kLgotICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxM
aXN0UHJvcGVydHlUZWFyT2ZmPihiYXNlVmFsKCkpLT5maW5kSXRlbShzdGF0aWNfY2FzdDxMaXN0
SXRlbVRlYXJPZmYqPihwcm9wZXJ0eSkpOworICAgICAgICByZXR1cm4gYmFzZVZhbCgpLT5maW5k
SXRlbShzdGF0aWNfY2FzdDxMaXN0SXRlbVRlYXJPZmYqPihwcm9wZXJ0eSkpOwogICAgIH0KIAog
ICAgIHZvaWQgcmVtb3ZlSXRlbUZyb21MaXN0KHNpemVfdCBpdGVtSW5kZXgsIGJvb2wgc2hvdWxk
U3luY2hyb25pemVXcmFwcGVycykKICAgICB7CiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGV2ZXIg
YmUgY2FsbGVkIGZvciBvdXIgYmFzZVZhbCwgYXMgYW5pbVZhbCBjYW4ndCBtb2RpZnkgdGhlIGxp
c3QuCi0gICAgICAgIC8vIEl0J3Mgc2FmZSB0byBjYXN0IHRvIExpc3RQcm9wZXJ0eVRlYXJPZmYg
aGVyZSBhcyBhbGwgY2xhc3NlcyBpbmhlcml0aW5nIGZyb20gdXMgc3VwcGx5IHRoZWlyIG93biBy
ZW1vdmVJdGVtRnJvbUxpc3QoKSBtZXRob2QuCi0gICAgICAgIHN0YXRpY19wb2ludGVyX2Nhc3Q8
TGlzdFByb3BlcnR5VGVhck9mZj4oYmFzZVZhbCgpKS0+cmVtb3ZlSXRlbUZyb21MaXN0KGl0ZW1J
bmRleCwgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycyk7CisgICAgICAgIGJhc2VWYWwoKS0+cmVt
b3ZlSXRlbUZyb21MaXN0KGl0ZW1JbmRleCwgc2hvdWxkU3luY2hyb25pemVXcmFwcGVycyk7CiAg
ICAgfQogCiAgICAgdm9pZCBkZXRhY2hMaXN0V3JhcHBlcnModW5zaWduZWQgbmV3TGlzdFNpemUp
CkBAIC0xMzgsOSArMTQyLDkgQEAgcHVibGljOgogCiAgICAgICAgIC8vIEV2ZW50dWFsbHkgdGhl
IHdyYXBwZXIgbGlzdCBuZWVkcyBzeW5jaHJvbml6YXRpb24gYmVjYXVzZSBhbnkgU1ZHQW5pbWF0
ZUxlbmd0aExpc3Q6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoKSBjYWxsIG1heQogICAgICAgICAv
LyBtdXRhdGUgdGhlIGxlbmd0aCBvZiBvdXIgdmFsdWVzKCkgbGlzdCwgYW5kIHRodXMgdGhlIHdy
YXBwZXIoKSBjYWNoZSBuZWVkcyBzeW5jaHJvbml6YXRpb24sIHRvIGhhdmUgdGhlIHNhbWUgc2l6
ZS4KLSAgICAgICAgLy8gQWxzbyBleGlzdGluZyB3cmFwcGVycyB3aGljaCBwb2ludCBkaXJlY3Rs
eSBhdCBlbGVtZW50cyBpbiB0aGUgZXhpc3RpbmcgU1ZHTGVuZ3RoTGlzdCBoYXZlIHRvIGJlIGRl
dGFjaGVkIChzbyBhIGNvcHkKKyAgICAgICAgLy8gQWxzbyBleGlzdGluZyB3cmFwcGVycyB3aGlj
aCBwb2ludCBkaXJlY3RseSBhdCBlbGVtZW50cyBpbiB0aGUgZXhpc3RpbmcgU1ZHTGVuZ3RoTGlz
dFZhbHVlcyBoYXZlIHRvIGJlIGRldGFjaGVkIChzbyBhIGNvcHkKICAgICAgICAgLy8gb2YgdGhl
bSBpcyBjcmVhdGVkLCBzbyBleGlzdGluZyBhbmltVmFsIHZhcmlhYmxlcyBpbiBKUyBhcmUga2Vw
dC1hbGl2ZSkuIElmIHdlJ2QgZGV0YWNoIHRoZW0gbGF0ZXIgdGhlIHVuZGVybHlpbmcKLSAgICAg
ICAgLy8gU1ZHTGVuZ3RoTGlzdCB3YXMgYWxyZWFkeSBtdXRhdGVkLCBhbmQgb3VyIGxpc3QgaXRl
bSB3cmFwcGVyIHRlYXIgb2ZmcyB3b3VsZCBwb2ludCBub3doZXJlLiBBc3NlcnRpb25zIHdvdWxk
IGZpcmUuCisgICAgICAgIC8vIFNWR0xlbmd0aExpc3RWYWx1ZXMgd2FzIGFscmVhZHkgbXV0YXRl
ZCwgYW5kIG91ciBsaXN0IGl0ZW0gd3JhcHBlciB0ZWFyIG9mZnMgd291bGQgcG9pbnQgbm93aGVy
ZS4gQXNzZXJ0aW9ucyB3b3VsZCBmaXJlLgogICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPmRl
dGFjaExpc3RXcmFwcGVycyhtX2FuaW1hdGVkUHJvcGVydHktPnZhbHVlcygpLnNpemUoKSk7CiAK
ICAgICAgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eS0+dmFsdWVzKCkuc2l6ZSgpID09IG1f
YW5pbWF0ZWRQcm9wZXJ0eS0+d3JhcHBlcnMoKS5zaXplKCkpOwpAQCAtMTU5LDEyICsxNjMsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHN5bmNocm9uaXplV3JhcHBlcnNJZk5lZWRlZCgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5
VHlwZT4+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0
eVR5cGUsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRl
eHRFbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCB2YWx1ZXMpKTsKLSAgICB9Ci0KIHByb3RlY3RlZDoK
ICAgICBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVy
dHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKICAgICAg
ICAgOiBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZFByb3BlcnR5VHlwZSkKQEAgLTE4Miw4ICsxODAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gQ2FjaGUgdGhlIHJhdyBwb2ludGVyIGJ1dCByZXR1cm4gYSBSZWZQdHI8Pi4gVGhpcyB3aWxs
IGJyZWFrIHRoZSBjeWNsaWMgcmVmZXJlbmNlCiAgICAgLy8gYmV0d2VlbiBTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmIGFuZCBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgb25jZSB0aGUgcHJv
cGVydHkKICAgICAvLyBwb2ludGVyIGlzIG5vdCBuZWVkZWQuCi0gICAgTGlzdFByb3BlcnR5KiBt
X2Jhc2VWYWwgeyBudWxscHRyIH07Ci0gICAgTGlzdFByb3BlcnR5KiBtX2FuaW1WYWwgeyBudWxs
cHRyIH07CisgICAgTGlzdFByb3BlcnR5VGVhck9mZiogbV9iYXNlVmFsIHsgbnVsbHB0ciB9Owor
ICAgIExpc3RQcm9wZXJ0eVRlYXJPZmYqIG1fYW5pbVZhbCB7IG51bGxwdHIgfTsKIAogICAgIFJl
ZlB0cjxMaXN0UHJvcGVydHk+IG1fYW5pbWF0ZWRQcm9wZXJ0eTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDY5ICsyMyw2OCBAQAogI2luY2x1ZGUg
IlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdQYXRoU2VnTGlzdC5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYgZmlu
YWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0
PiB7CitjbGFzcyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQYXRoU2VnTGlzdFZhbHVl
cz4gewogcHVibGljOgotICAgIFJlZlB0cjxMaXN0UHJvcGVydHk+IGJhc2VWYWwoKSBmaW5hbAor
ICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUGF0aFNl
Z0xpc3RWYWx1ZXM+OworCisgICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmPiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVk
UHJvcGVydHlUeXBlLCBTVkdQYXRoU2VnTGlzdFZhbHVlcyYgdmFsdWVzKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVudCwgYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykpOworICAgIH0KKworICAg
IFJlZjxMaXN0UHJvcGVydHlUZWFyT2ZmPiBiYXNlVmFsKCkgZmluYWwKICAgICB7CiAgICAgICAg
IGlmIChtX2Jhc2VWYWwpCi0gICAgICAgICAgICByZXR1cm4gbV9iYXNlVmFsOworICAgICAgICAg
ICAgcmV0dXJuICptX2Jhc2VWYWw7CiAKLSAgICAgICAgYXV0byBwcm9wZXJ0eSA9IFNWR1BhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUodGhpcywgQmFzZVZhbFJvbGUsIFBhdGhTZWdV
bmFsdGVyZWRSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7CisgICAgICAgIGF1dG8gcHJvcGVy
dHkgPSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlKCp0aGlzLCBCYXNlVmFsUm9sZSwgUGF0aFNlZ1Vu
YWx0ZXJlZFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJzKTsKICAgICAgICAgbV9iYXNlVmFsID0g
cHJvcGVydHkucHRyKCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnR5KTsKKyAgICAg
ICAgcmV0dXJuIHByb3BlcnR5OwogICAgIH0KIAotICAgIFJlZlB0cjxMaXN0UHJvcGVydHk+IGFu
aW1WYWwoKSBmaW5hbAorICAgIFJlZjxMaXN0UHJvcGVydHlUZWFyT2ZmPiBhbmltVmFsKCkgZmlu
YWwKICAgICB7CiAgICAgICAgIGlmIChtX2FuaW1WYWwpCi0gICAgICAgICAgICByZXR1cm4gbV9h
bmltVmFsOworICAgICAgICAgICAgcmV0dXJuICptX2FuaW1WYWw7CiAKLSAgICAgICAgYXV0byBw
cm9wZXJ0eSA9IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpjcmVhdGUodGhpcywgQW5p
bVZhbFJvbGUsIFBhdGhTZWdVbmFsdGVyZWRSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7Cisg
ICAgICAgIGF1dG8gcHJvcGVydHkgPSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlKCp0aGlzLCBBbmlt
VmFsUm9sZSwgUGF0aFNlZ1VuYWx0ZXJlZFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJzKTsKICAg
ICAgICAgbV9hbmltVmFsID0gcHJvcGVydHkucHRyKCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3Zl
KHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5OwogICAgIH0KIAogICAgIGludCBm
aW5kSXRlbShjb25zdCBSZWZQdHI8U1ZHUGF0aFNlZz4mIHNlZ21lbnQpCiAgICAgewotICAgICAg
ICAvLyBUaGlzIHNob3VsZCBldmVyIGJlIGNhbGxlZCBmb3Igb3VyIGJhc2VWYWwsIGFzIGFuaW1W
YWwgY2FuJ3QgbW9kaWZ5IHRoZSBsaXN0LgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqPihiYXNlVmFsKCkuZ2V0KCkpLT5maW5kSXRlbShz
ZWdtZW50KTsKKyAgICAgICAgcmV0dXJuIGJhc2VWYWwoKS0+ZmluZEl0ZW0oc2VnbWVudCk7CiAg
ICAgfQogCiAgICAgdm9pZCByZW1vdmVJdGVtRnJvbUxpc3Qoc2l6ZV90IGl0ZW1JbmRleCwgYm9v
bCBzaG91bGRTeW5jaHJvbml6ZVdyYXBwZXJzKQogICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91
bGQgZXZlciBiZSBjYWxsZWQgZm9yIG91ciBiYXNlVmFsLCBhcyBhbmltVmFsIGNhbid0IG1vZGlm
eSB0aGUgbGlzdC4KLSAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYqPihiYXNlVmFsKCkuZ2V0KCkpLT5yZW1vdmVJdGVtRnJvbUxpc3QoaXRlbUluZGV4LCBz
aG91bGRTeW5jaHJvbml6ZVdyYXBwZXJzKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPFNWR0Fu
aW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFNWR1BhdGhTZWdMaXN0JiB2YWx1ZXMp
Ci0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKGNvbnRl
eHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgdmFsdWVzKSk7
CisgICAgICAgIGJhc2VWYWwoKS0+cmVtb3ZlSXRlbUZyb21MaXN0KGl0ZW1JbmRleCwgc2hvdWxk
U3luY2hyb25pemVXcmFwcGVycyk7CiAgICAgfQogCi0gICAgdXNpbmcgU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0Pjo6YW5pbWF0aW9uU3RhcnRlZDsKLSAgICB2
b2lkIGFuaW1hdGlvblN0YXJ0ZWQoU1ZHUGF0aEJ5dGVTdHJlYW0qIGJ5dGVTdHJlYW0sIGNvbnN0
IFNWR1BhdGhTZWdMaXN0KiBiYXNlVmFsdWUpCisgICAgdXNpbmcgQmFzZTo6YW5pbWF0aW9uU3Rh
cnRlZDsKKyAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoU1ZHUGF0aEJ5dGVTdHJlYW0qIGJ5dGVT
dHJlYW0sIGNvbnN0IFNWR1BhdGhTZWdMaXN0VmFsdWVzKiBiYXNlVmFsdWUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoYnl0ZVN0cmVhbSk7CiAgICAgICAgIEFTU0VSVChiYXNlVmFsdWUpOwogICAg
ICAgICBBU1NFUlQoIW1fYW5pbWF0ZWRQYXRoQnl0ZVN0cmVhbSk7CiAgICAgICAgIG1fYW5pbWF0
ZWRQYXRoQnl0ZVN0cmVhbSA9IGJ5dGVTdHJlYW07CiAKLSAgICAgICAgLy8gUGFzcyBzaG91bGRP
d25WYWx1ZXM9dHJ1ZSwgYXMgdGhlIFNWR1BhdGhTZWdMaXN0IGxpZmV0aW1lIGlzIHNvbGVseSBt
YW5hZ2VkIGJ5IGl0cyB0ZWFyIG9mZiBjbGFzcy4KLSAgICAgICAgU1ZHUGF0aFNlZ0xpc3QqIGNv
cHkgPSBuZXcgU1ZHUGF0aFNlZ0xpc3QoKmJhc2VWYWx1ZSk7Ci0gICAgICAgIFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQYXRoU2VnTGlzdD46OmFuaW1hdGlvblN0YXJ0ZWQoY29w
eSwgdHJ1ZSk7CisgICAgICAgIC8vIFBhc3Mgc2hvdWxkT3duVmFsdWVzPXRydWUsIGFzIHRoZSBT
VkdQYXRoU2VnTGlzdFZhbHVlcyBsaWZldGltZSBpcyBzb2xlbHkgbWFuYWdlZCBieSBpdHMgdGVh
ciBvZmYgY2xhc3MuCisgICAgICAgIGF1dG8qIGNvcHkgPSBuZXcgU1ZHUGF0aFNlZ0xpc3RWYWx1
ZXMoKmJhc2VWYWx1ZSk7CisgICAgICAgIEJhc2U6OmFuaW1hdGlvblN0YXJ0ZWQoY29weSwgdHJ1
ZSk7CiAgICAgfQogCiAgICAgdm9pZCBhbmltYXRpb25FbmRlZCgpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9hbmltYXRlZFBhdGhCeXRlU3RyZWFtKTsKICAgICAgICAgbV9hbmltYXRlZFBhdGhC
eXRlU3RyZWFtID0gbnVsbHB0cjsKLSAgICAgICAgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmPFNWR1BhdGhTZWdMaXN0Pjo6YW5pbWF0aW9uRW5kZWQoKTsKKyAgICAgICAgQmFzZTo6YW5p
bWF0aW9uRW5kZWQoKTsKICAgICB9CiAKICAgICB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoKQpAQCAt
OTYsMTkgKzk1LDE5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gSWYgdGhlIGFuaW1WYWwgaXMgb2Jz
ZXJ2ZWQgZnJvbSBKUywgd2UgaGF2ZSB0byB1cGRhdGUgaXQgb24gZWFjaCBhbmltYXRpb24gc3Rl
cC4KICAgICAgICAgLy8gVGhpcyBpcyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uIGFuZCBvbmx5IGRv
bmUsIGlmIHNvbWVvbmUgYWN0dWFsbHkgb2JzZXJ2ZXMgdGhlIGFuaW1hdGVkUGF0aFNlZ0xpc3Qo
KSB3aGlsZSBhbiBhbmltYXRpb24gaXMgcnVubmluZy4KICAgICAgICAgaWYgKHBhdGhFbGVtZW50
LT5pc0FuaW1WYWxPYnNlcnZlZCgpKSB7Ci0gICAgICAgICAgICBTVkdQYXRoU2VnTGlzdCYgYW5p
bWF0ZWRMaXN0ID0gY3VycmVudEFuaW1hdGVkVmFsdWUoKTsKKyAgICAgICAgICAgIGF1dG8mIGFu
aW1hdGVkTGlzdCA9IGN1cnJlbnRBbmltYXRlZFZhbHVlKCk7CiAgICAgICAgICAgICBhbmltYXRl
ZExpc3QuY2xlYXIoKTsKLSAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0
cmVhbSgqbV9hbmltYXRlZFBhdGhCeXRlU3RyZWFtLCAqcGF0aEVsZW1lbnQsIGFuaW1hdGVkTGlz
dCwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAgICBidWlsZFNWR1BhdGhTZWdMaXN0VmFs
dWVzRnJvbUJ5dGVTdHJlYW0oKm1fYW5pbWF0ZWRQYXRoQnl0ZVN0cmVhbSwgKnBhdGhFbGVtZW50
LCBhbmltYXRlZExpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICB9CiAKLSAgICAgICAg
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BhdGhTZWdMaXN0Pjo6YW5pbVZhbERp
ZENoYW5nZSgpOworICAgICAgICBCYXNlOjphbmltVmFsRGlkQ2hhbmdlKCk7CiAgICAgfQogCiAg
ICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIGFuaW1hdGVkUGF0aEJ5dGVTdHJlYW0oKSBjb25zdCB7IHJl
dHVybiBtX2FuaW1hdGVkUGF0aEJ5dGVTdHJlYW07IH0KIAogcHJpdmF0ZToKLSAgICBTVkdBbmlt
YXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlw
ZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgU1ZHUGF0aFNlZ0xpc3QmIHZhbHVlcykKLSAgICAgICAg
OiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUGF0aFNlZ0xpc3Q+KGNvbnRleHRF
bGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgdmFsdWVzKQorICAg
IFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJv
cGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBTVkdQYXRoU2VnTGlzdFZhbHVlcyYgdmFs
dWVzKQorICAgICAgICA6IEJhc2UoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkUHJvcGVydHlUeXBlLCB2YWx1ZXMpCiAgICAgICAgICwgbV9hbmltYXRlZFBhdGhCeXRlU3Ry
ZWFtKG51bGxwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJP
ZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwyNCArMzIsMzAgQEAgcHVibGljOgogICAgIHVzaW5nIFByb3BlcnR5VHlwZSA9
IHR5cGVuYW1lIFByb3BlcnR5VGVhck9mZjo6UHJvcGVydHlUeXBlOwogICAgIHVzaW5nIENvbnRl
bnRUeXBlID0gUHJvcGVydHlUeXBlOwogCi0gICAgUmVmUHRyPFByb3BlcnR5VGVhck9mZj4gYmFz
ZVZhbCgpCisgICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0
eVRlYXJPZmY+PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJv
cGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUZWFyT2ZmPihjb250ZXh0RWxlbWVudCwgYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHByb3BlcnR5KSk7CisgICAgfQorCisgICAg
UmVmPFByb3BlcnR5VGVhck9mZj4gYmFzZVZhbCgpCiAgICAgewogICAgICAgICBpZiAobV9iYXNl
VmFsKQotICAgICAgICAgICAgcmV0dXJuIG1fYmFzZVZhbDsKKyAgICAgICAgICAgIHJldHVybiAq
bV9iYXNlVmFsOwogCi0gICAgICAgIGF1dG8gcHJvcGVydHkgPSBQcm9wZXJ0eVRlYXJPZmY6OmNy
ZWF0ZSh0aGlzLCBCYXNlVmFsUm9sZSwgbV9wcm9wZXJ0eSk7CisgICAgICAgIGF1dG8gcHJvcGVy
dHkgPSBQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSgqdGhpcywgQmFzZVZhbFJvbGUsIG1fcHJvcGVy
dHkpOwogICAgICAgICBtX2Jhc2VWYWwgPSBwcm9wZXJ0eS5wdHIoKTsKLSAgICAgICAgcmV0dXJu
IFdURk1vdmUocHJvcGVydHkpOworICAgICAgICByZXR1cm4gcHJvcGVydHk7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFByb3BlcnR5VGVhck9mZj4gYW5pbVZhbCgpCisgICAgUmVmPFByb3BlcnR5VGVh
ck9mZj4gYW5pbVZhbCgpCiAgICAgewogICAgICAgICBpZiAobV9hbmltVmFsKQotICAgICAgICAg
ICAgcmV0dXJuIG1fYW5pbVZhbDsKKyAgICAgICAgICAgIHJldHVybiAqbV9hbmltVmFsOwogCi0g
ICAgICAgIGF1dG8gcHJvcGVydHkgPSBQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSh0aGlzLCBBbmlt
VmFsUm9sZSwgbV9wcm9wZXJ0eSk7CisgICAgICAgIGF1dG8gcHJvcGVydHkgPSBQcm9wZXJ0eVRl
YXJPZmY6OmNyZWF0ZSgqdGhpcywgQW5pbVZhbFJvbGUsIG1fcHJvcGVydHkpOwogICAgICAgICBt
X2FuaW1WYWwgPSBwcm9wZXJ0eS5wdHIoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocHJvcGVy
dHkpOworICAgICAgICByZXR1cm4gcHJvcGVydHk7CiAgICAgfQogCiAgICAgYm9vbCBpc0FuaW1h
dGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0eTsgfQpAQCAtNjIs
MTIgKzY4LDYgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hbmltVmFsID0gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5
VGVhck9mZj4+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUsIFByb3BlcnR5VHlwZSYgcHJvcGVydHkpCi0gICAgewotICAgICAgICBBU1NFUlQo
Y29udGV4dEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVRlYXJPZmY+KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgcHJvcGVydHkpKTsKLSAgICB9Ci0KICAgICBQ
cm9wZXJ0eVR5cGUmIGN1cnJlbnRBbmltYXRlZFZhbHVlKCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc0FuaW1hdGluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3Bl
cnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNDEgKzIxLDQwIEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCi0jaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZiBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlz
dD4geworY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzPiB7CiBwdWJsaWM6Ci0gICAgUmVmUHRyPExpc3RQcm9wZXJ0eT4gYmFzZVZhbCgpIGZp
bmFsCisgICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJP
ZmY+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5
cGUsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHZhbHVlcykKKyAgICB7CisgICAgICAgIEFTU0VS
VChjb250ZXh0RWxlbWVudCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykpOworICAgIH0KKworICAgIFJlZjxM
aXN0UHJvcGVydHlUZWFyT2ZmPiBiYXNlVmFsKCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmICht
X2Jhc2VWYWwpCi0gICAgICAgICAgICByZXR1cm4gbV9iYXNlVmFsOworICAgICAgICAgICAgcmV0
dXJuICptX2Jhc2VWYWw7CiAKLSAgICAgICAgYXV0byBwcm9wZXJ0eSA9IFNWR1RyYW5zZm9ybUxp
c3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSh0aGlzLCBCYXNlVmFsUm9sZSwgbV92YWx1ZXMsIG1f
d3JhcHBlcnMpOworICAgICAgICBhdXRvIHByb3BlcnR5ID0gU1ZHVHJhbnNmb3JtTGlzdDo6Y3Jl
YXRlKCp0aGlzLCBCYXNlVmFsUm9sZSwgbV92YWx1ZXMsIG1fd3JhcHBlcnMpOwogICAgICAgICBt
X2Jhc2VWYWwgPSBwcm9wZXJ0eS5wdHIoKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocHJvcGVy
dHkpOworICAgICAgICByZXR1cm4gcHJvcGVydHk7CiAgICAgfQogCi0gICAgUmVmUHRyPExpc3RQ
cm9wZXJ0eT4gYW5pbVZhbCgpIGZpbmFsCisgICAgUmVmPExpc3RQcm9wZXJ0eVRlYXJPZmY+IGFu
aW1WYWwoKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKG1fYW5pbVZhbCkKLSAgICAgICAgICAg
IHJldHVybiBtX2FuaW1WYWw7CisgICAgICAgICAgICByZXR1cm4gKm1fYW5pbVZhbDsKIAotICAg
ICAgICBhdXRvIHByb3BlcnR5ID0gU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZjo6Y3Jl
YXRlKHRoaXMsIEFuaW1WYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7CisgICAgICAgIGF1
dG8gcHJvcGVydHkgPSBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGUoKnRoaXMsIEFuaW1WYWxSb2xl
LCBtX3ZhbHVlcywgbV93cmFwcGVycyk7CiAgICAgICAgIG1fYW5pbVZhbCA9IHByb3BlcnR5LnB0
cigpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShwcm9wZXJ0eSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY+IGNyZWF0ZShT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFNWR1RyYW5z
Zm9ybUxpc3QmIHZhbHVlcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFBy
b3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUsIHZhbHVlcykpOworICAgICAgICByZXR1cm4gcHJvcGVydHk7CiAgICAgfQogCiBw
cml2YXRlOgotICAgIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZihTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFNWR1RyYW5zZm9y
bUxpc3QmIHZhbHVlcykKLSAgICAgICAgOiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8
U1ZHVHJhbnNmb3JtTGlzdD4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
UHJvcGVydHlUeXBlLCB2YWx1ZXMpCisgICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVy
dHlUZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlw
ZSwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYgdmFsdWVzKQorICAgICAgICA6IFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPihjb250ZXh0RWxlbWVu
dCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykKICAgICB7CiAg
ICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9w
ZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xp
c3RQcm9wZXJ0eS5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIExpc3RJdGVtVHlwZSB7IG1fdmFsdWVzLT5hdChp
bmRleCkgfTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8TGlzdEl0ZW1UZWFyT2ZmPj4g
Z2V0SXRlbVZhbHVlc0FuZFdyYXBwZXJzKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5p
bWF0ZWRMaXN0LCB1bnNpZ25lZCBpbmRleCkKKyAgICBFeGNlcHRpb25PcjxSZWY8TGlzdEl0ZW1U
ZWFyT2ZmPj4gZ2V0SXRlbVZhbHVlc0FuZFdyYXBwZXJzKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZiYgYW5pbWF0ZWRMaXN0LCB1bnNpZ25lZCBpbmRleCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3dyYXBwZXJzKTsKIApAQCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIFdURk1vdmUob2xkSXRlbSk7CiAgICAgfQogCi0gICAgRXhjZXB0aW9uT3I8UmVmPExpc3RJ
dGVtVGVhck9mZj4+IHJlbW92ZUl0ZW1WYWx1ZXNBbmRXcmFwcGVycyhBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYqIGFuaW1hdGVkTGlzdCwgdW5zaWduZWQgaW5kZXgpCisgICAgRXhjZXB0aW9u
T3I8UmVmPExpc3RJdGVtVGVhck9mZj4+IHJlbW92ZUl0ZW1WYWx1ZXNBbmRXcmFwcGVycyhBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkTGlzdCwgdW5zaWduZWQgaW5kZXgpCiAg
ICAgewogICAgICAgICBBU1NFUlQobV93cmFwcGVycyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJl
dmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOCBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZTo6bV92YWx1ZXM7CiAgICAgdXNpbmcgQmFzZTo6bV93cmFwcGVyczsK
IAotICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZiogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFByb3BlcnR5VHlwZSYg
dmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICBzdGF0aWMgUmVmPFNlbGY+
IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVydHksIFNW
R1Byb3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNo
ZSYgd3JhcHBlcnMpCiAgICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwg
dmFsdWVzLCB3cmFwcGVycykpOwogICAgIH0KIApAQCAtMTEzLDcgKzExMiw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmKEFuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJv
bGUsIFByb3BlcnR5VHlwZSYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAg
ICBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5p
bWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFByb3BlcnR5VHlwZSYgdmFsdWVz
LCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKICAgICAgICAgOiBTVkdMaXN0UHJvcGVydHk8
UHJvcGVydHlUeXBlPihyb2xlLCB2YWx1ZXMsICZ3cmFwcGVycykKICAgICAgICAgLCBtX2FuaW1h
dGVkUHJvcGVydHkoYW5pbWF0ZWRQcm9wZXJ0eSkKICAgICB7CkBAIC0xMjEsMTUgKzEyMCwxNCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIH5TVkdMaXN0UHJvcGVydHlUZWFyT2ZmKCkKICAg
ICB7Ci0gICAgICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHkpCi0gICAgICAgICAgICBtX2FuaW1h
dGVkUHJvcGVydHktPnByb3BlcnR5V2lsbEJlRGVsZXRlZCgqdGhpcyk7CisgICAgICAgIG1fYW5p
bWF0ZWRQcm9wZXJ0eS0+cHJvcGVydHlXaWxsQmVEZWxldGVkKCp0aGlzKTsKICAgICB9CiAKICAg
ICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1f
cm9sZSA9PSBBbmltVmFsUm9sZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBp
ZiAobV9hbmltYXRlZFByb3BlcnR5ICYmIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+aXNSZWFkT25seSgp
KQorICAgICAgICBpZiAobV9hbmltYXRlZFByb3BlcnR5LT5pc1JlYWRPbmx5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE0Niw3
ICsxNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBMaXN0SXRlbVRlYXJPZmYqIGl0ZW0g
PSBtX3dyYXBwZXJzLT5hdChpKS5nZXQoKTsKICAgICAgICAgICAgIGlmICghaXRlbSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGl0ZW0tPnNldEFuaW1hdGVkUHJvcGVy
dHkobV9hbmltYXRlZFByb3BlcnR5LmdldCgpKTsKKyAgICAgICAgICAgIGl0ZW0tPnNldEFuaW1h
dGVkUHJvcGVydHkobV9hbmltYXRlZFByb3BlcnR5LnB0cigpKTsKICAgICAgICAgICAgIGl0ZW0t
PnNldFZhbHVlKG1fdmFsdWVzLT5hdChpKSk7CiAgICAgICAgIH0KIApAQCAtMTgyLDcgKzE4MCw3
IEBAIHByb3RlY3RlZDoKIAogICAgICAgICAvLyBTcGVjOiBJZiBuZXdJdGVtIGlzIGFscmVhZHkg
aW4gYSBsaXN0LCBpdCBpcyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0
IGlzIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgogICAgICAgICAvLyAnbmV3SXRlbScgaXMgYWxy
ZWFkeSBsaXZpbmcgaW4gYW5vdGhlciBsaXN0LiBJZiBpdCdzIG5vdCBvdXIgbGlzdCwgc3luY2hy
b25pemUgdGhlIG90aGVyIGxpc3RzIHdyYXBwZXJzIGFmdGVyIHRoZSByZW1vdmFsLgotICAgICAg
ICBib29sIGxpdmVzSW5PdGhlckxpc3QgPSBhbmltYXRlZFByb3BlcnR5T2ZJdGVtICE9IG1fYW5p
bWF0ZWRQcm9wZXJ0eTsKKyAgICAgICAgYm9vbCBsaXZlc0luT3RoZXJMaXN0ID0gYW5pbWF0ZWRQ
cm9wZXJ0eU9mSXRlbSAhPSBtX2FuaW1hdGVkUHJvcGVydHkucHRyKCk7CiAgICAgICAgIEFuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZiogcHJvcGVydHlUZWFyT2ZmID0gc3RhdGljX2Nhc3Q8QW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKj4oYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSk7CiAgICAg
ICAgIGludCBpbmRleFRvUmVtb3ZlID0gcHJvcGVydHlUZWFyT2ZmLT5maW5kSXRlbShuZXdJdGVt
LnB0cigpKTsKICAgICAgICAgQVNTRVJUKGluZGV4VG9SZW1vdmUgIT0gLTEpOwpAQCAtMjA5LDcg
KzIwNyw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEJhY2sgcG9pbnRlciB0byB0aGUgYW5pbWF0
ZWQgcHJvcGVydHkgdGhhdCBjcmVhdGVkIHVzCiAgICAgLy8gRm9yIGV4YW1wbGUgKHRleHQueC5i
YXNlVmFsKTogbV9hbmltYXRlZFByb3BlcnR5IHBvaW50cyB0byB0aGUgJ3gnIFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdCBvYmplY3QKLSAgICBSZWZQdHI8QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
PiBtX2FuaW1hdGVkUHJvcGVydHk7CisgICAgUmVmPEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
Zj4gbV9hbmltYXRlZFByb3BlcnR5OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmNwcAkocmV2aXNpb24gMjA4Nzc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCShub25leGlzdGVudCkKQEAg
LTEsMTI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIgotCi0jaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR05hbWVz
LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnV2l0
aENvbnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFNWR1BhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmOjpjbGVhckNvbnRleHRBbmRSb2xlcygpCi17Ci0gICAgQVNTRVJUKG1f
dmFsdWVzKTsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiAqbV92YWx1ZXMpIHsKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Kj4oaXRlbS5nZXQoKSktPnNldENvbnRleHRB
bmRSb2xlKG51bGxwdHIsIFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKLSAgICB9Ci19Ci0KLUV4Y2Vw
dGlvbk9yPHZvaWQ+IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpjbGVhcigpCi17Ci0g
ICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICBpZiAobV92YWx1ZXMtPmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLQotICAgIGNsZWFyQ29udGV4dEFuZFJvbGVzKCk7Ci0gICAgcmV0dXJu
IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpCYXNlOjpjbGVhclZhbHVlcygpOwotfQot
Ci1FeGNlcHRpb25PcjxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjo6UHRyTGlzdEl0ZW1U
eXBlPiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjo6Z2V0SXRlbSh1bnNpZ25lZCBpbmRl
eCkKLXsKLSAgICByZXR1cm4gQmFzZTo6Z2V0SXRlbVZhbHVlcyhpbmRleCk7Ci19Ci0KLUV4Y2Vw
dGlvbk9yPFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpQdHJMaXN0SXRlbVR5cGU+IFNW
R1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpyZXBsYWNlSXRlbShQdHJMaXN0SXRlbVR5cGUg
bmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gTm90IHNwZWNpZmllZCwgYnV0IEZG
L09wZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBqdXN0IHNhbmUuCi0gICAgaWYgKCFuZXdJ
dGVtKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdf
VFlQRV9FUlIgfTsKLQotICAgIGlmIChpbmRleCA8IG1fdmFsdWVzLT5zaXplKCkpIHsKLSAgICAg
ICAgTGlzdEl0ZW1UeXBlIHJlcGxhY2VkSXRlbSA9IG1fdmFsdWVzLT5hdChpbmRleCk7Ci0gICAg
ICAgIEFTU0VSVChyZXBsYWNlZEl0ZW0pOwotICAgICAgICBzdGF0aWNfY2FzdDxTVkdQYXRoU2Vn
V2l0aENvbnRleHQqPihyZXBsYWNlZEl0ZW0uZ2V0KCkpLT5zZXRDb250ZXh0QW5kUm9sZShudWxs
cHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEJhc2U6OnJl
cGxhY2VJdGVtVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsKLX0KLQotRXhjZXB0aW9uT3I8U1ZHUGF0
aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY6OlB0ckxpc3RJdGVtVHlwZT4gU1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmY6OnJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCi17Ci0gICAgYXV0byBy
ZXN1bHQgPSBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjo6QmFzZTo6cmVtb3ZlSXRlbVZh
bHVlcyhpbmRleCk7Ci0gICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICBhdXRvIHJlbW92ZWRJdGVtID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpOwotICAgIGlmIChyZW1vdmVkSXRlbSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHUGF0
aFNlZ1dpdGhDb250ZXh0Jj4oKnJlbW92ZWRJdGVtKS5zZXRDb250ZXh0QW5kUm9sZShudWxscHRy
LCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgcmV0dXJuIFdURk1vdmUocmVtb3ZlZEl0ZW0p
OwotfQotCi1TVkdQYXRoRWxlbWVudCogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNv
bnRleHRFbGVtZW50KCkgY29uc3QKLXsKLSAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9
IG1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y29udGV4dEVsZW1lbnQoKTsKLSAgICBBU1NFUlQoY29udGV4
dEVsZW1lbnQpOwotICAgIHJldHVybiBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4oY29udGV4dEVs
ZW1lbnQpOwotfQotCi1ib29sIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOjpwcm9jZXNz
SW5jb21pbmdMaXN0SXRlbVZhbHVlKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSwgdW5zaWdu
ZWQqIGluZGV4VG9Nb2RpZnkpCi17Ci0gICAgU1ZHUGF0aFNlZ1dpdGhDb250ZXh0KiBuZXdJdGVt
V2l0aENvbnRleHQgPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihuZXdJdGVt
LmdldCgpKTsKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gYW5pbWF0ZWRQcm9wZXJ0
eU9mSXRlbSA9IG5ld0l0ZW1XaXRoQ29udGV4dC0+YW5pbWF0ZWRQcm9wZXJ0eSgpOwotCi0gICAg
Ly8gQWx0ZXIgdGhlIHJvbGUsIGFmdGVyIGNhbGxpbmcgYW5pbWF0ZWRQcm9wZXJ0eSgpLCBhcyB0
aGF0IG1heSBpbmZsdWVuY2UgdGhlIHJldHVybmVkIGFuaW1hdGVkIHByb3BlcnR5LgotICAgIG5l
d0l0ZW1XaXRoQ29udGV4dC0+c2V0Q29udGV4dEFuZFJvbGUoY29udGV4dEVsZW1lbnQoKSwgbV9w
YXRoU2VnUm9sZSk7Ci0KLSAgICBpZiAoIWFuaW1hdGVkUHJvcGVydHlPZkl0ZW0pCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgLy8gbmV3SXRlbSBiZWxvbmdzIHRvIGEgU1ZHUGF0aEVsZW1l
bnQsIGJ1dCBpdHMgYXNzb2NpYXRlZCBTVkdBbmltYXRlZFByb3BlcnR5IGlzIG5vdCBhbiBhbmlt
YXRlZCBsaXN0IHRlYXIgb2ZmLgotICAgIC8vIChmb3IgZXhhbXBsZTogInBhdGhFbGVtZW50LnBh
dGhTZWdMaXN0LmFwcGVuZEl0ZW0ocGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlcGF0
aCgpKSIpCi0gICAgaWYgKCFhbmltYXRlZFByb3BlcnR5T2ZJdGVtLT5pc0FuaW1hdGVkTGlzdFRl
YXJPZmYoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBTcGVjOiBJZiBuZXdJdGVt
IGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBpcyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxp
c3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgotICAgIC8vICduZXdJdGVt
JyBpcyBhbHJlYWR5IGxpdmluZyBpbiBhbm90aGVyIGxpc3QuIElmIGl0J3Mgbm90IG91ciBsaXN0
LCBzeW5jaHJvbml6ZSB0aGUgb3RoZXIgbGlzdHMgd3JhcHBlcnMgYWZ0ZXIgdGhlIHJlbW92YWwu
Ci0gICAgYm9vbCBsaXZlc0luT3RoZXJMaXN0ID0gYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSAhPSBt
X2FuaW1hdGVkUHJvcGVydHk7Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmY+IHByb3BlcnR5VGVhck9mZiA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5p
bWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4oYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSk7
Ci0gICAgaW50IGluZGV4VG9SZW1vdmUgPSBwcm9wZXJ0eVRlYXJPZmYtPmZpbmRJdGVtKG5ld0l0
ZW0uZ2V0KCkpOwotICAgIEFTU0VSVChpbmRleFRvUmVtb3ZlICE9IC0xKTsKLQotICAgIC8vIERv
IG5vdCByZW1vdmUgbmV3SXRlbSBpZiBhbHJlYWR5IGluIHRoaXMgbGlzdCBhdCB0aGUgdGFyZ2V0
IGluZGV4LgotICAgIGlmICghbGl2ZXNJbk90aGVyTGlzdCAmJiBpbmRleFRvTW9kaWZ5ICYmIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleFRvUmVtb3ZlKSA9PSAqaW5kZXhUb01vZGlmeSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcHJvcGVydHlUZWFyT2ZmLT5yZW1vdmVJdGVtRnJv
bUxpc3QoaW5kZXhUb1JlbW92ZSwgbGl2ZXNJbk90aGVyTGlzdCk7Ci0KLSAgICBpZiAoIWluZGV4
VG9Nb2RpZnkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSWYgdGhlIGl0ZW0gbGl2
ZWQgaW4gb3VyIGxpc3QsIGFkanVzdCB0aGUgaW5zZXJ0aW9uIGluZGV4LgotICAgIGlmICghbGl2
ZXNJbk90aGVyTGlzdCkgewotICAgICAgICB1bnNpZ25lZCYgaW5kZXggPSAqaW5kZXhUb01vZGlm
eTsKLSAgICAgICAgLy8gU3BlYzogSWYgdGhlIGl0ZW0gaXMgYWxyZWFkeSBpbiB0aGlzIGxpc3Qs
IG5vdGUgdGhhdCB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gKHJlcGxhY2V8aW5zZXJ0IGJlZm9y
ZSkgaXMgYmVmb3JlIHRoZSByZW1vdmFsIG9mIHRoZSBpdGVtLgotICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZGV4VG9SZW1vdmUpIDwgaW5kZXgpCi0gICAgICAgICAgICAtLWlu
ZGV4OwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5
VGVhck9mZi5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdQ
YXRoU2VnTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR1BhdGhFbGVt
ZW50OwotCi1jbGFzcyBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiBmaW5hbCA6IHB1Ymxp
YyBTVkdMaXN0UHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3Q+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBC
YXNlID0gU1ZHTGlzdFByb3BlcnR5PFNWR1BhdGhTZWdMaXN0PjsKLSAgICB1c2luZyBBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZH
UGF0aFNlZ0xpc3Q+OwotICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1BhdGhTZWdMaXN0Pjo6TGlzdEl0ZW1UeXBlOwotICAgIHVzaW5nIFB0ckxpc3RJdGVtVHlw
ZSA9IFJlZlB0cjxTVkdQYXRoU2VnPjsKLQotICAgIHN0YXRpYyBSZWY8U1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmY+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1h
dGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQYXRoU2VnUm9sZSBwYXRoU2Vn
Um9sZSwgU1ZHUGF0aFNlZ0xpc3QmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMp
Ci0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKGFuaW1hdGVkUHJv
cGVydHksIHJvbGUsIHBhdGhTZWdSb2xlLCB2YWx1ZXMsIHdyYXBwZXJzKSk7Ci0gICAgfQotCi0g
ICAgaW50IGZpbmRJdGVtKGNvbnN0IExpc3RJdGVtVHlwZSYgaXRlbSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0KLSAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG1fdmFs
dWVzLT5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoaXRlbSA9PSBtX3ZhbHVlcy0+YXQoaSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0g
ICAgdm9pZCByZW1vdmVJdGVtRnJvbUxpc3Qoc2l6ZV90IGl0ZW1JbmRleCwgYm9vbCBzaG91bGRT
eW5jaHJvbml6ZVdyYXBwZXJzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAg
ICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXRlbUluZGV4IDwgbV92YWx1
ZXMtPnNpemUoKSk7Ci0KLSAgICAgICAgbV92YWx1ZXMtPnJlbW92ZShpdGVtSW5kZXgpOwotCi0g
ICAgICAgIGlmIChzaG91bGRTeW5jaHJvbml6ZVdyYXBwZXJzKQotICAgICAgICAgICAgY29tbWl0
Q2hhbmdlKCk7Ci0gICAgfQotCi0gICAgLy8gU1ZHTGlzdCBBUEkKLSAgICBFeGNlcHRpb25Pcjx2
b2lkPiBjbGVhcigpOwotCi0gICAgRXhjZXB0aW9uT3I8UHRyTGlzdEl0ZW1UeXBlPiBpbml0aWFs
aXplKFB0ckxpc3RJdGVtVHlwZSBuZXdJdGVtKQotICAgIHsKLSAgICAgICAgLy8gTm90IHNwZWNp
ZmllZCwgYnV0IEZGL09wZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBqdXN0IHNhbmUuCi0g
ICAgICAgIGlmICghbmV3SXRlbSkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTVkdF
eGNlcHRpb246OlNWR19XUk9OR19UWVBFX0VSUiB9OwotCi0gICAgICAgIGNsZWFyQ29udGV4dEFu
ZFJvbGVzKCk7Ci0gICAgICAgIHJldHVybiBCYXNlOjppbml0aWFsaXplVmFsdWVzKG5ld0l0ZW0p
OwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPFB0ckxpc3RJdGVtVHlwZT4gZ2V0SXRlbSh1bnNp
Z25lZCBpbmRleCk7Ci0KLSAgICBFeGNlcHRpb25PcjxQdHJMaXN0SXRlbVR5cGU+IGluc2VydEl0
ZW1CZWZvcmUoUHRyTGlzdEl0ZW1UeXBlIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQotICAgIHsK
LSAgICAgICAgLy8gTm90IHNwZWNpZmllZCwgYnV0IEZGL09wZXJhIGRvIGl0IHRoaXMgd2F5LCBh
bmQgaXQncyBqdXN0IHNhbmUuCi0gICAgICAgIGlmICghbmV3SXRlbSkKLSAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTVkdFeGNlcHRpb246OlNWR19XUk9OR19UWVBFX0VSUiB9OwotCi0g
ICAgICAgIHJldHVybiBCYXNlOjppbnNlcnRJdGVtQmVmb3JlVmFsdWVzKG5ld0l0ZW0sIGluZGV4
KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxQdHJMaXN0SXRlbVR5cGU+IHJlcGxhY2VJdGVt
KFB0ckxpc3RJdGVtVHlwZSwgdW5zaWduZWQgaW5kZXgpOwotCi0gICAgRXhjZXB0aW9uT3I8UHRy
TGlzdEl0ZW1UeXBlPiByZW1vdmVJdGVtKHVuc2lnbmVkIGluZGV4KTsKLQotICAgIEV4Y2VwdGlv
bk9yPFB0ckxpc3RJdGVtVHlwZT4gYXBwZW5kSXRlbShQdHJMaXN0SXRlbVR5cGUgbmV3SXRlbSkK
LSAgICB7Ci0gICAgICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1dCBGRi9PcGVyYSBkbyBpdCB0aGlz
IHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgotICAgICAgICBpZiAoIW5ld0l0ZW0pCi0gICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1ZHRXhjZXB0aW9uOjpTVkdfV1JPTkdfVFlQRV9FUlIg
fTsKLQotICAgICAgICByZXR1cm4gQmFzZTo6YXBwZW5kSXRlbVZhbHVlcyhuZXdJdGVtKTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYoQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUg
cm9sZSwgU1ZHUGF0aFNlZ1JvbGUgcGF0aFNlZ1JvbGUsIFNWR1BhdGhTZWdMaXN0JiB2YWx1ZXMs
IExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQotICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eTxT
VkdQYXRoU2VnTGlzdD4ocm9sZSwgdmFsdWVzLCAmd3JhcHBlcnMpCi0gICAgICAgICwgbV9hbmlt
YXRlZFByb3BlcnR5KGFuaW1hdGVkUHJvcGVydHkpCi0gICAgICAgICwgbV9wYXRoU2VnUm9sZShw
YXRoU2VnUm9sZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eSkK
LSAgICAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+cHJvcGVydHlXaWxsQmVEZWxldGVkKCp0
aGlzKTsKLSAgICB9Ci0KLSAgICBTVkdQYXRoRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25z
dDsKLQotICAgIHZvaWQgY2xlYXJDb250ZXh0QW5kUm9sZXMoKTsKLQotICAgIHVzaW5nIEJhc2U6
Om1fcm9sZTsKLQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IGZpbmFsCi0gICAgewotICAg
ICAgICBpZiAobV9yb2xlID09IEFuaW1WYWxSb2xlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHkgJiYgbV9hbmltYXRlZFByb3BlcnR5LT5p
c1JlYWRPbmx5KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkgZmluYWwKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAgIG1fdmFsdWVzLT5jb21taXRDaGFuZ2UobV9h
bmltYXRlZFByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgpLCBMaXN0TW9kaWZpY2F0aW9uVW5rbm93
bik7Ci0gICAgfQotCi0gICAgdm9pZCBjb21taXRDaGFuZ2UoTGlzdE1vZGlmaWNhdGlvbiBsaXN0
TW9kaWZpY2F0aW9uKSBmaW5hbAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAg
ICAgICAgbV92YWx1ZXMtPmNvbW1pdENoYW5nZShtX2FuaW1hdGVkUHJvcGVydHktPmNvbnRleHRF
bGVtZW50KCksIGxpc3RNb2RpZmljYXRpb24pOwotICAgIH0KLQotICAgIGJvb2wgcHJvY2Vzc0lu
Y29taW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVk
KiBpbmRleFRvTW9kaWZ5KSBmaW5hbDsKLSAgICBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVt
V3JhcHBlcihSZWY8TGlzdEl0ZW1UZWFyT2ZmPiYsIHVuc2lnbmVkKikgZmluYWwKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZj4gbV9h
bmltYXRlZFByb3BlcnR5OwotICAgIFNWR1BhdGhTZWdSb2xlIG1fcGF0aFNlZ1JvbGU7Ci19Owot
Ci19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVv
bC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFy
T2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw5ICs0
Miw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFVzZWQgZm9yIGNoaWxkIHR5cGVzIChiYXNlVmFsL2Fu
aW1WYWwpIG9mIGEgU1ZHQW5pbWF0ZWQqIHByb3BlcnR5IChmb3IgZXhhbXBsZTogU1ZHQW5pbWF0
ZWRMZW5ndGg6OmJhc2VWYWwoKSkuCiAgICAgLy8gQWxzbyB1c2VkIGZvciBsaXN0IHRlYXIgb2Zm
cyAoZm9yIGV4YW1wbGU6IHRleHQueC5iYXNlVmFsLmdldEl0ZW0oMCkpLgotICAgIHN0YXRpYyBS
ZWY8U2VsZj4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNW
R1Byb3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8
U2VsZj4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1By
b3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKGFuaW1hdGVkUHJvcGVydHkpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWxm
KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFBy
b3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDE4ICsyMywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFByb3BlcnR5VHlwZT4gY2xhc3MgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZiBm
aW5hbCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHk8UHJvcGVydHlUeXBlPiB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBQcm9wZXJ0eVR5cGU+IAorY2xhc3MgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9m
ZiA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHk8UHJvcGVydHlUeXBlPiB7CiBwdWJsaWM6CisgICAg
dXNpbmcgU2VsZiA9IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPjsK
ICAgICB1c2luZyBCYXNlID0gU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT47CisKICAgICB1
c2luZyBMaXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5
cGU+OjpMaXN0SXRlbVR5cGU7CiAgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gdHlwZW5hbWUg
U1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UZWFyT2ZmOwogCiAgICAg
dXNpbmcgQmFzZTo6bV9yb2xlOwogICAgIHVzaW5nIEJhc2U6Om1fdmFsdWVzOwogCi0gICAgc3Rh
dGljIFJlZjxTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4+IGNyZWF0
ZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCisgICAg
c3RhdGljIFJlZjxTZWxmPiBjcmVhdGUoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIFByb3Bl
cnR5VHlwZSYgdmFsdWVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVudCwgdmFsdWVzKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYoY29udGV4dEVsZW1lbnQsIHZhbHVlcykpOwog
ICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCkKQEAgLTcyLDkgKzc1LDkgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gQmFzZTo6YXBwZW5kSXRlbVZhbHVlcyhuZXdJdGVtKTsK
ICAgICB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgU1ZHU3RhdGljTGlzdFByb3BlcnR5
VGVhck9mZihTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZXMp
Ci0gICAgICAgIDogU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4oVW5kZWZpbmVkUm9sZSwg
dmFsdWVzLCBudWxscHRyKQorICAgICAgICA6IEJhc2UoVW5kZWZpbmVkUm9sZSwgdmFsdWVzLCBu
dWxscHRyKQogICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCiAgICAg
ewogICAgIH0KQEAgLTg3LDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0Q2hhbmdlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAgIG1f
dmFsdWVzLT5jb21taXRDaGFuZ2UobV9jb250ZXh0RWxlbWVudC5wdHIoKSk7CisgICAgICAgIG1f
dmFsdWVzLT5jb21taXRDaGFuZ2UobV9jb250ZXh0RWxlbWVudCk7CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBl
JiwgdW5zaWduZWQqKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3Rh
dGljUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODc3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTYgQEAgcHVibGljOgogICAgIC8vIChmb3Ig
ZXhhbXBsZTogU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFRyYW5zbGF0ZSkuCiAgICAgc3RhdGljIFJl
ZjxTZWxmPiBjcmVhdGUoQ29udGV4dEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0eVR5
cGUmIHZhbHVlLCBVcGRhdGVNZXRob2QgdXBkYXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2VsZigmY29udGV4dEVsZW1lbnQsIHZhbHVlLCB1cGRhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VsZihjb250ZXh0RWxlbWVudCwgdmFsdWUsIHVwZGF0
ZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoKSB7IChtX2NvbnRl
eHRFbGVtZW50LmdldCgpLT4qbV91cGRhdGUpKCk7IH0KIAogcHJpdmF0ZToKLSAgICBTVkdTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYoQ29udGV4dEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0
eVR5cGUmIHZhbHVlLCBVcGRhdGVNZXRob2QgdXBkYXRlKQotICAgICAgICA6IFByb3BlcnR5VGVh
ck9mZigwLCBVbmRlZmluZWRSb2xlLCB2YWx1ZSkKKyAgICBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJP
ZmYoQ29udGV4dEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0eVR5cGUmIHZhbHVlLCBV
cGRhdGVNZXRob2QgdXBkYXRlKQorICAgICAgICA6IFByb3BlcnR5VGVhck9mZihVbmRlZmluZWRS
b2xlLCB2YWx1ZSkKICAgICAgICAgLCBtX3VwZGF0ZSh1cGRhdGUpCi0gICAgICAgICwgbV9jb250
ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKKyAgICAgICAgLCBtX2NvbnRleHRFbGVtZW50KCZj
b250ZXh0RWxlbWVudCkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZi5oCShyZXZpc2lvbiAyMDg3NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmgJKG5vbmV4aXN0ZW50KQpAQCAt
MSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
IlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZiBmaW5hbCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9y
bUxpc3Q+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYg
PSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD47Ci0gICAg
dXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlz
dFdyYXBwZXJDYWNoZTsKLQotICAgIHN0YXRpYyBSZWY8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdUcmFuc2Zvcm1MaXN0Pj4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5p
bWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybUxpc3QmIHZh
bHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCi0gICAgewotICAgICAgICBBU1NFUlQo
YW5pbWF0ZWRQcm9wZXJ0eSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5z
Zm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3
cmFwcGVycykpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPFJlZjxTVkdUcmFuc2Zvcm0+PiBj
cmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCYgbWF0cml4KQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWVzLT5jcmVhdGVT
VkdUcmFuc2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8
UmVmUHRyPFNWR1RyYW5zZm9ybT4+IGNvbnNvbGlkYXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3ZhbHVlcyk7Ci0gICAgICAgIEFTU0VSVChtX3dyYXBwZXJzKTsKLQotICAgICAgICBhdXRv
IHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAg
ICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwotCi0gICAgICAgIEFTU0VS
VChtX3ZhbHVlcy0+c2l6ZSgpID09IG1fd3JhcHBlcnMtPnNpemUoKSk7Ci0KLSAgICAgICAgLy8g
U3BlYzogSWYgdGhlIGxpc3Qgd2FzIGVtcHR5LCB0aGVuIGEgdmFsdWUgb2YgbnVsbCBpcyByZXR1
cm5lZC4KLSAgICAgICAgaWYgKG1fdmFsdWVzLT5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgICAgICBkZXRhY2hMaXN0V3JhcHBlcnMoMCk7Ci0gICAgICAgIAot
ICAgICAgICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiB3cmFwcGVyID0gbV92YWx1ZXMtPmNvbnNvbGlk
YXRlKCk7Ci0gICAgICAgIG1fd3JhcHBlcnMtPmFwcGVuZCh3cmFwcGVyLmdldCgpKTsKLQotICAg
ICAgICBBU1NFUlQobV92YWx1ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLT5zaXplKCkpOwotICAg
ICAgICByZXR1cm4gV1RGTW92ZSh3cmFwcGVyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZH
VHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZihBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYq
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1MaXN0
JiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQotICAgICAgICA6IFNWR0xpc3RQ
cm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwg
dmFsdWVzLCB3cmFwcGVycykKLSAgICB7Ci0gICAgfQotfTsKLQotfQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVHJhbnNmb3JtTGlzdFByb3Bl
cnR5VGVhck9mZi5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>
<flag name="review"
          id="317559"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>