<?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>195767</bug_id>
          
          <creation_ts>2019-03-14 14:45:40 -0700</creation_ts>
          <short_desc>Rename SVGProperty to SVGLegacyProperty and rename SVGAnimatedProperty to SVGLegacyAnimatedProperty</short_desc>
          <delta_ts>2019-03-14 17:18:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>195722</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>pvollan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1516659</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-14 14:45:40 -0700</bug_when>
    <thetext>Preparation for removing the SVG properties tear off objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516662</commentid>
    <comment_count>1</comment_count>
      <attachid>364691</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-14 14:50:59 -0700</bug_when>
    <thetext>Created attachment 364691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516703</commentid>
    <comment_count>2</comment_count>
      <attachid>364705</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-14 15:28:02 -0700</bug_when>
    <thetext>Created attachment 364705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516747</commentid>
    <comment_count>3</comment_count>
      <attachid>364705</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-03-14 16:48:14 -0700</bug_when>
    <thetext>Comment on attachment 364705
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516764</commentid>
    <comment_count>4</comment_count>
      <attachid>364705</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-14 17:15:15 -0700</bug_when>
    <thetext>Comment on attachment 364705
Patch

Clearing flags on attachment: 364705

Committed r242978: &lt;https://trac.webkit.org/changeset/242978&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516765</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-14 17:15:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516767</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-14 17:18:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/48909337&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364691</attachid>
            <date>2019-03-14 14:50:59 -0700</date>
            <delta_ts>2019-03-14 15:28:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195767-20190314145058.patch</filename>
            <type>text/plain</type>
            <size>78482</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Mjk2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxOS0wMy0xNCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBT
VkdQcm9wZXJ0eSB0byBTVkdMZWdhY3lQcm9wZXJ0eSBhbmQgcmVuYW1lIFNWR0FuaW1hdGVkUHJv
cGVydHkgdG8gU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHN0ZXAgdG93YXJkcyByZW1vdmlu
ZyB0aGUgU1ZHIHByb3BlcnRpZXMgdGVhciBvZmYgb2JqZWN0cy4KKworICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBzdmcvU1ZHQW5nbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6OlNWR0FuZ2xlKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpjYXN0
QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Omxvb2t1cEFuaW1hdGVkUHJvcGVydHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6bG9va3VwT3JDcmVhdGVBbmlt
YXRlZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Omxvb2t1cE9yQ3Jl
YXRlQW5pbWF0ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGg6OlNWR0xlbmd0aCk6CisgICAgICAgICogc3ZnL1NWR01hdHJpeC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4
OjpTVkdNYXRyaXgpOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR051bWJlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR051bWJlcjo6U1ZH
TnVtYmVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6cHJvY2Vzc0luY29taW5nTGlzdEl0
ZW1WYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdXaXRoQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1dpdGhDb250ZXh0OjphbmltYXRlZFByb3BlcnR5IGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OlNWR1BvaW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJlc2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ByZXNl
cnZlQXNwZWN0UmF0aW86OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8pOgorICAgICAgICAqIHN2Zy9T
VkdSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVjdDo6U1ZHUmVjdCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpmaW5kSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6OlNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZik6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eS5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlUZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RhdGlj
UHJvcGVydHlUZWFyT2ZmOjpTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZik6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQWNjZXNzb3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0F0dHJpYnV0ZUFjY2Vzc29yOjpsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVy
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlQWNjZXNzb3I6Omxvb2t1
cEFuaW1hdGVkUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRl
QWNjZXNzb3I6Omxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQXR0cmlidXRlQWNjZXNzb3I6Omxvb2t1cE9yQ3JlYXRl
QW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEF0dHJpYnV0
ZUFjY2Vzc29yOjpsb29rdXBBbmltYXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVPd25lclByb3h5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVSZWdpc3RyeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlUmVn
aXN0cnk6Omxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBdHRyaWJ1dGVSZWdpc3RyeTo6bG9va3VwQW5pbWF0ZWRQcm9wZXJ0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVSZWdpc3RyeTo6bG9va3VwT3JDcmVh
dGVBbmltYXRlZFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmli
dXRlUmVnaXN0cnk6Omxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eUJhc2VUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVSZWdpc3RyeTo6bG9va3VwQW5pbWF0ZWRQcm9w
ZXJ0eUJhc2VUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVSZWdpc3RyeTo6
bG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXNCYXNlVHlwZXMpOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk6OlNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0
eTo6flNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVn
YWN5QW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkUHJvcGVydHk6OlNWR0FuaW1hdGVkUHJvcGVydHkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0FuaW1hdGVkUHJvcGVydHkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0Q2hh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHkuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBBbmltYXRlZFByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmlzQW5pbWF0aW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmlzQW5p
bWF0ZWRMaXN0VGVhck9mZiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFByb3BlcnR5Ojpjb250ZXh0RWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5OjphdHRyaWJ1dGVOYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmFuaW1hdGVkUHJv
cGVydHlUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
UHJvcGVydHk6OmlzUmVhZE9ubHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6c2V0SXNSZWFkT25seSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVy
dHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9v
a3VwQW5pbWF0ZWRQcm9wZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFByb3BlcnR5OjphbmltYXRlZFByb3BlcnR5Q2FjaGUpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeVByb3BlcnR5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmguCisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHTGlzdFByb3BlcnR5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRl
YXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VGVhck9mZjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VGVhck9mZjo6YW5pbWF0ZWRQcm9wZXJ0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRlYXJPZmY6OnNldEFuaW1hdGVk
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUZWFyT2ZmOjpTVkdQcm9w
ZXJ0eVRlYXJPZmYpOgorCiAyMDE5LTAzLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFN0b3JpbmcgYSBOb2RlIGluIFJlZi9SZWZQdHIgaW5zaWRlIGl0cyBk
ZXN0cnVjdG9yIHJlc3VsdHMgaW4gZG91YmxlIGRlbGV0ZQpJbmRleDogU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJl
dmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0yNDIzLDggKzI0MjMsOCBAQCBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIu
Y3BwCiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAogCiBzdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcAotc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAKIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJp
YnV0ZU93bmVyUHJveHkuY3BwCitzdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmltYXRlZFByb3Bl
cnR5LmNwcAogCiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcAogd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjc1LDcgKzI3NSw2IEBACiAJCTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4OEEwREZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwODhBMEUwODEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4OEEwREZGMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
Zi5oICovOyB9OwogCQkwODhBMEUwOTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5
VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg4QTBFMDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLzsg
fTsKLQkJMDg4QTBFMEExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMEUwMTEyNkVGMURCMDA5
NzhGN0EgLyogU1ZHUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwODhBMEUwQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlU
ZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODhBMEUwMjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggKi87IH07CiAJ
CTA4OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QTBFMDMxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QzJGN0ExMjM5MDA4MTAwM0Q2NUNFIC8qIFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODhDMkY3NjEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0dHJp
YnV0ZXMuaCAqLzsgfTsKQEAgLTE3ODksMTMgKzE3ODgsMTMgQEAKIAkJNTU3NkE1NjUxRDg4QTcw
ODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBMzM2
RjkxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGODFEODIxRTNDMDAyMkM0Qzcg
LyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NUFGMTRFNjFFQUFDNTlCMDAyNkVFQUEgLyogVVRJUmVnaXN0cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QUYxNEU0
MUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1RDcwRDIzMjIzQjAxN0MwMDA0NEI4RSAvKiBT
VkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NUQ3MEQyMDIyM0IwMDkxMDAwNDRCOEUgLyogU1ZHTGVnYWN5QW5p
bWF0ZWRQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU1RUM5NTk5MjA2QUE3QTAwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUM5
NTk3MjA2OUM5MkQwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNrZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUZBN0ZGMDIxMEZBMzg2
MDA1QUVGRTcgLyogU1ZHQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NUZBN0ZFRjIxMEZBMzg2MDA1QUVGRTcgLyogU1ZHQXR0cmlidXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVG
QTdGRjUyMTBGQjZCMTAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZUFjY2Vzc29yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUZBN0ZGNDIxMEZCNjg4MDA1
QUVGRTcgLyogU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUZBN0ZGNzIxMEZCRTNFMDA1QUVGRTcgLyogU1ZH
QXR0cmlidXRlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1RkE3RkY2MjEwRkJFM0UwMDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGVSZWdpc3Ry
eS5oICovOyB9OwogCQk1NUZBN0ZGQjIxMTBFQ0Q3MDA1QUVGRTcgLyogU1ZHWm9vbUFuZFBhblR5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RkE3
RkZBMjExMEVDRDcwMDVBRUZFNyAvKiBTVkdab29tQW5kUGFuVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1RkE3RkZGMjExMTBFNkUwMDVB
RUZFNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVGQTdGRkUyMTExMEU2RTAwNUFFRkU3IC8qIFNWR0Fu
aW1hdGVkUHJvcGVydHlUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNTVGQTgwMDEyMTExMTNFRTAwNUFFRkU3IC8qIFNWR0FuaW1hdGVkUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
OEEwREZDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcwNDQwNUExRTUzOTM2
MjAwMzU2NjAxIC8qIEpTQWVzQ2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzA0NDA1OTFFNTM5MzYyMDAzNTY2MDEgLyogSlNBZXND
YmNDZmJQYXJhbXMuaCAqLzsgfTsKIAkJNTcwNkE2OTYxRERFNUM5NTAwQTAzQjE0IC8qIENyeXB0
b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3MDZBNjk1MURERTVDOTUwMEEwM0IxNCAvKiBDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zLmggKi87IH07CiAJCTU3MDZBNjk4MURERTVFNDYwMEEwM0IxNCAvKiBK
U1JzYU9hZXBQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3MDZBNjk3MURERTVFNDYwMEEwM0IxNCAvKiBKU1JzYU9hZXBQYXJhbXMuaCAqLzsg
fTsKQEAgLTU2NDcsMTEgKzU2NDYsOSBAQAogCQkwODg1MDY3RDExREEwNDVCMDAxODJCOTggLyog
UGFpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50SW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODg1MDY3RTExREEwNDVCMDAxODJCOTgg
LyogUGFpbnRQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWludFBo
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEEwREZCMTI2RUYxREIwMDk3
OEY3QSAvKiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4OEEwREZDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdB
bmltYXRlZFByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0Fu
aW1hdGVkUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4QTBERkQx
MjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4QTBERkYxMjZFRjFEQjAwOTc4
RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4OEEwRTAwMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg4QTBFMDExMjZF
RjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR1Byb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEEw
RTAyMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRy
YWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eVRyYWl0
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhDMkY3NTEyMzkwMDgwMDAzRDY1
Q0UgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODY3Myw2ICs4NjcwLDkgQEAKIAkJNTVBRjE0RTMxRUFBQzU5QjAw
MjZFRUFBIC8qIFVUSVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUSVJlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRjE0RTQxRUFBQzU5QjAwMjZF
RUFBIC8qIFVUSVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUSVJlZ2lzdHJ5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJ
bWFnZUNsaWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VD
bGllbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1RDcwRDIwMjIzQjAwOTEw
MDA0NEI4RSAvKiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTVENzBEMjEyMjNCMDBCQjAwMDQ0QjhFIC8qIFNWR0xlZ2FjeUFu
aW1hdGVkUHJvcGVydHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVnYWN5QW5pbWF0ZWRQ
cm9wZXJ0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1RDcwRDIyMjIzQjAw
RUEwMDA0NEI4RSAvKiBTVkdMZWdhY3lQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdMZWdhY3lQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NUVDOTU5NzIwNjlDOTJEMDA3REQwQTkgLyogUGFpbnRGcmVxdWVuY3lUcmFja2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhaW50RnJlcXVlbmN5VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NUZBN0ZFRjIxMEZBMzg2MDA1QUVGRTcgLyogU1ZHQXR0cmlidXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NUZBN0ZGNDIxMEZCNjg4MDA1QUVGRTcgLyogU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlQWNjZXNzb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMTM4LDcgKzEwMTM4LDYgQEAKIAkJODM2
RDAzMkUxREE4QTEzMjAwRkZEOTZCIC8qIEpTQ2xpcGJvYXJkRXZlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDbGlwYm9hcmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzZEQUEwNTFDRUFCN0NEMDBBMkI3MDcgLyogUmVuZGVyRGVzY2VuZGFu
dEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckRlc2Nl
bmRhbnRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzZGQkNFOTE3
OEMxMTMyMDBCMjFBMTUgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzZGQkNFQjE3OEMxMTdGMDBCMjFBMTUgLyog
U1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdBbmltYXRlZFByb3BlcnR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODM3MDU2ODgxRjUwOTE1MDAwRDkzNDI1IC8qIEpTRmlsZUNhbGxiYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3MDU2ODkxRjUwOTE1MDAwRDkzNDI1IC8qIEpTRmls
ZVN5c3RlbUVudHJ5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzcwNTY4QTFGNTA5MTUwMDBEOTM0MjUgLyogSlNGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbGVTeXN0ZW1FbnRy
eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MTc4LDggKzE2
MTc3LDYgQEAKIAkJCQkwODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJNTVGQTdGRkMyMTEwRjgxMzAwNUFFRkU3IC8qIFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovLAogCQkJCTA4OUE4RTA2
MTI4RDhCM0QwMEU3QTUzNCAvKiBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2Zm
LmggKi8sCi0JCQkJODM2RkJDRUIxNzhDMTE3RjAwQjIxQTE1IC8qIFNWR0FuaW1hdGVkUHJvcGVy
dHkuY3BwICovLAotCQkJCTA4OEEwREZDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFBy
b3BlcnR5LmggKi8sCiAJCQkJMDg4QTBERkQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbi5oICovLAogCQkJCTA4OEEwREZGMTI2RUYxREIwMDk3OEY3QSAv
KiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTU1RkE3RkZFMjExMTBFNkUw
MDVBRUZFNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHlwZS5oICovLApAQCAtMTYxOTEsMTAgKzE2
MTg4LDEyIEBACiAJCQkJNTUzNDZBRjAyMTE1MEZBRjAwNTlCQ0REIC8qIFNWR0F0dHJpYnV0ZU93
bmVyUHJveHkuaCAqLywKIAkJCQk1NTM0NkFGQTIxMTdGRkFGMDA1OUJDREQgLyogU1ZHQXR0cmli
dXRlT3duZXJQcm94eUltcGwuaCAqLywKIAkJCQk1NUZBN0ZGNjIxMEZCRTNFMDA1QUVGRTcgLyog
U1ZHQXR0cmlidXRlUmVnaXN0cnkuaCAqLywKKwkJCQk1NUQ3MEQyMTIyM0IwMEJCMDAwNDRCOEUg
LyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5jcHAgKi8sCisJCQkJNTVENzBEMjAyMjNCMDA5
MTAwMDQ0QjhFIC8qIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCAqLywKKwkJCQk1NUQ3MEQy
MjIyM0IwMEVBMDAwNDRCOEUgLyogU1ZHTGVnYWN5UHJvcGVydHkuaCAqLywKIAkJCQkwODEwNzY0
MzEyODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBFMDAx
MjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwOENB
M0Q0MzEyODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4VGVhck9mZi5oICovLAotCQkJCTA4OEEw
RTAxMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eS5oICovLAogCQkJCTA4OEEwRTAyMTI2
RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODhBMEUwMzEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCAqLywKIAkJCQkwODgwRjcwRDEy
ODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oICovLApAQCAt
MzE4NTksNyArMzE4NTgsNiBAQAogCQkJCTA4OUE4RTA3MTI4RDhCM0QwMEU3QTUzNCAvKiBTVkdB
bmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
M0I5MzM2OTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4RkUwQkM1MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW8uaCBpbiBIZWFkZXJzICovLAotCQkJCTU1RkE4MDAxMjExMTEzRUUwMDVB
RUZFNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUw
NjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODhBMEUwODEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1RkE3RkZGMjExMTBFNkUwMDVB
RUZFNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTk0
OCw2ICszMTk0Niw3IEBACiAJCQkJMDg1NEIwMUYxMjU1RTRFNjAwQjlDREQwIC8qIFNWR0lubGlu
ZUZsb3dCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NTRCMDIxMTI1NUU0RTYwMEI5Q0REMCAv
KiBTVkdJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzMDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUQ3MEQyMzIy
M0IwMTdDMDAwNDRCOEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzEzNDQ5NkUxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3QTM2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzM5QzM2NTFEREE4NjUyMDBGRUZCMjkgLyogU1ZH
TGVuZ3RoTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjAyMSw3ICszMjAyMCw2IEBA
CiAJCQkJQjIyMjdBOTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0E5NDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg4QTBFMEExMjZF
RjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUw
QjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODhBMEUwQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTlBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuZ2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHJl
dmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZH
QW5nbGUgOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYg
YW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0FuZ2xlVmFsdWUmIHZh
bHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHQW5nbGU+IGNyZWF0ZShTVkdMZWdhY3lBbmltYXRlZFBy
b3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVW
YWx1ZSYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmds
ZShhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KQEAgLTEzMSw3ICsxMzEs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR0FuZ2xlKFNWR0FuaW1hdGVk
UHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdBbmds
ZVZhbHVlJiB2YWx1ZSkKKyAgICBTVkdBbmdsZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBh
bmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVWYWx1ZSYgdmFs
dWUpCiAgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KCZhbmltYXRl
ZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsK
K2NsYXNzIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk7CiAKIGNsYXNzIFNWR0FuaW1hdGVFbGVt
ZW50IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVFbGVtZW50QmFzZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChTVkdBbmltYXRlRWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAkocmV2aXNpb24gMjQyOTU2KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxLDE1ICsyMSwxNSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGUuaCIKKyNpbmNsdWRlICJT
VkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0aWVzIHsKICAgICBTVkdFbGVtZW50KiBlbGVtZW50OwotICAgIFZlY3RvcjxSZWZQdHI8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eT4+IHByb3BlcnRpZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTVkdMZWdh
Y3lBbmltYXRlZFByb3BlcnR5Pj4gcHJvcGVydGllczsKIH07CiB0eXBlZGVmIFZlY3RvcjxTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzPiBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Q7
CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQW5pbVZhbFR5cGU+Ci0gICAgQW5pbVZhbFR5cGUqIGNhc3RBbmltYXRlZFByb3Bl
cnR5VG9BY3R1YWxUeXBlKFNWR0FuaW1hdGVkUHJvcGVydHkqIHByb3BlcnR5KQorICAgIEFuaW1W
YWxUeXBlKiBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZShTVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5KiBwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CiAg
ICAgICAgIEFTU0VSVChwcm9wZXJ0eS0+Y29udGV4dEVsZW1lbnQoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw5ICsxNDYsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzeW5jaHJvbml6ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSB7
IGF0dHJpYnV0ZU93bmVyUHJveHkoKS5zeW5jaHJvbml6ZUF0dHJpYnV0ZShuYW1lKTsgfQogICAg
IHZvaWQgc3luY2hyb25pemVBdHRyaWJ1dGVzKCkgeyBhdHRyaWJ1dGVPd25lclByb3h5KCkuc3lu
Y2hyb25pemVBdHRyaWJ1dGVzKCk7IH0KICAgICBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+
IGFuaW1hdGVkVHlwZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Qg
eyByZXR1cm4gYXR0cmlidXRlT3duZXJQcm94eSgpLmFuaW1hdGVkVHlwZXMoYXR0cmlidXRlTmFt
ZSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9w
ZXJ0eShjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QgeyByZXR1cm4gYXR0cmli
dXRlT3duZXJQcm94eSgpLmxvb2t1cEFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlKTsgfQotICAg
IFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVy
dHkoY29uc3QgU1ZHQXR0cmlidXRlJiBhdHRyaWJ1dGUpIHsgcmV0dXJuIGF0dHJpYnV0ZU93bmVy
UHJveHkoKS5sb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlKTsgfQotICAg
IFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0
ZWRQcm9wZXJ0aWVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIHsgcmV0dXJuIGF0dHJpYnV0
ZU93bmVyUHJveHkoKS5sb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhuYW1lKTsgfQor
ICAgIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmltYXRlZFByb3Bl
cnR5KGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdCB7IHJldHVybiBhdHRyaWJ1
dGVPd25lclByb3h5KCkubG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGUpOyB9CisgICAg
UmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQ
cm9wZXJ0eShjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgeyByZXR1cm4gYXR0cmlidXRl
T3duZXJQcm94eSgpLmxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGUpOyB9
CisgICAgVmVjdG9yPFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Pj4gbG9va3VwT3JD
cmVhdGVBbmltYXRlZFByb3BlcnRpZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgeyByZXR1
cm4gYXR0cmlidXRlT3duZXJQcm94eSgpLmxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVz
KG5hbWUpOyB9CiAKICAgICAvLyBUaGVzZSBhcmUgbmVlZGVkIGZvciB0aGUgUmVuZGVyVHJlZSwg
YW5pbWF0aW9uIGFuZCBET00uCiAgICAgY29uc3QgYXV0byYgY2xhc3NOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc05hbWUuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGguaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BDID0gTGVuZ3RoVHlwZVBDCiAgICAgfTsK
IAotICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYg
YW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0aFZhbHVlJiB2
YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aD4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdMZW5n
dGhWYWx1ZSYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdM
ZW5ndGgoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKICAgICB9CkBAIC0xNDgsNyAr
MTQ4LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdMZW5ndGgoU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNW
R0xlbmd0aFZhbHVlJiB2YWx1ZSkKKyAgICBTVkdMZW5ndGgoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9w
ZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0xlbmd0aFZh
bHVlJiB2YWx1ZSkKICAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoVmFsdWU+
KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXRyaXguaAkocmV2aXNpb24gMjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjbGFzcyBvbmNlIFNWR01hdHJpeCBiZWNv
bWVzIGFuIGFsaWFzIHRvIERPTU1hdHJpeC4KIGNsYXNzIFNWR01hdHJpeCA6IHB1YmxpYyBTVkdQ
cm9wZXJ0eVRlYXJPZmY8U1ZHTWF0cml4VmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFNWR01hdHJpeD4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHks
IFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdNYXRyaXhWYWx1ZSYgdmFsdWUpCisgICAgc3RhdGlj
IFJlZjxTVkdNYXRyaXg+IGNyZWF0ZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRl
ZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTWF0cml4VmFsdWUmIHZhbHVlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTWF0cml4KGFuaW1hdGVkUHJv
cGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQpAQCAtMjcyLDcgKzI3Miw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBTVkdNYXRyaXgoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYg
YW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR01hdHJpeFZhbHVlJiB2
YWx1ZSkKKyAgICBTVkdNYXRyaXgoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQ
cm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR01hdHJpeFZhbHVlJiB2YWx1ZSkKICAg
ICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTWF0cml4VmFsdWU+KCZhbmltYXRlZFByb3Bl
cnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR051bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXIu
aAkocmV2aXNpb24gMjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU1ZHTnVtYmVyIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxmbG9hdD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U1ZHTnVtYmVyPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYg
YW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIGZsb2F0JiB2YWx1ZSkKKyAg
ICBzdGF0aWMgUmVmPFNWR051bWJlcj4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBmbG9hdCYgdmFsdWUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdOdW1iZXIoYW5pbWF0ZWRQcm9w
ZXJ0eSwgcm9sZSwgdmFsdWUpKTsKICAgICB9CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZHTnVtYmVyKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1h
dGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBmbG9hdCYgdmFsdWUpCisgICAgU1ZH
TnVtYmVyKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1By
b3BlcnR5Um9sZSByb2xlLCBmbG9hdCYgdmFsdWUpCiAgICAgICAgIDogU1ZHUHJvcGVydHlUZWFy
T2ZmPGZsb2F0PigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAgICAgewogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjQyOTU2
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgzLDcgKzI4Myw3IEBAIFBhdGggU1ZHUGF0aEVsZW1lbnQ6OnBhdGhGb3JCeXRlU3Ry
ZWFtKCkKICAgICByZXR1cm4gYnVpbGRQYXRoRnJvbUJ5dGVTdHJlYW0ocGF0aEJ5dGVTdHJlYW1U
b1VzZSk7CiB9CiAKLVJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdQYXRoRWxlbWVudDo6
bG9va3VwT3JDcmVhdGVEV3JhcHBlcigpCitSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0
eT4gU1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIoKQogewogICAgIHJldHVy
biBtX3BhdGhTZWdMaXN0LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiAyNDI5NTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAgICAgYm9vbCBzdXBwb3J0c01h
cmtlcnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1h
dGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIoKTsKKyAgICBSZWZQdHI8U1ZHTGVn
YWN5QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVEV3JhcHBlcigpOwogCiAgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCShyZXZpc2lvbiAyNDI5NTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBA
IFNWR1BhdGhFbGVtZW50KiBTVkdQYXRoU2VnTGlzdDo6Y29udGV4dEUKIGJvb2wgU1ZHUGF0aFNl
Z0xpc3Q6OnByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiBu
ZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhUb01vZGlmeSkKIHsKICAgICBTVkdQYXRoU2VnV2l0aENv
bnRleHQqIG5ld0l0ZW1XaXRoQ29udGV4dCA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29u
dGV4dCo+KG5ld0l0ZW0uZ2V0KCkpOwotICAgIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBh
bmltYXRlZFByb3BlcnR5T2ZJdGVtID0gbmV3SXRlbVdpdGhDb250ZXh0LT5hbmltYXRlZFByb3Bl
cnR5KCk7CisgICAgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IGFuaW1hdGVkUHJv
cGVydHlPZkl0ZW0gPSBuZXdJdGVtV2l0aENvbnRleHQtPmFuaW1hdGVkUHJvcGVydHkoKTsKIAog
ICAgIC8vIEFsdGVyIHRoZSByb2xlLCBhZnRlciBjYWxsaW5nIGFuaW1hdGVkUHJvcGVydHkoKSwg
YXMgdGhhdCBtYXkgaW5mbHVlbmNlIHRoZSByZXR1cm5lZCBhbmltYXRlZCBwcm9wZXJ0eS4KICAg
ICBuZXdJdGVtV2l0aENvbnRleHQtPnNldENvbnRleHRBbmRSb2xlKGNvbnRleHRFbGVtZW50KCks
IG1fcGF0aFNlZ1JvbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdXaXRo
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnV2l0
aENvbnRleHQuaAkocmV2aXNpb24gMjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdXaXRoQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGFuaW1h
dGVkUHJvcGVydHkoKSBjb25zdAorICAgIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5
PiBhbmltYXRlZFByb3BlcnR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9lbGVtZW50
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAko
cmV2aXNpb24gMjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
VkdQb2ludCA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U1ZHUG9pbnQ+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5JiBh
bmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUp
CisgICAgc3RhdGljIFJlZjxTVkdQb2ludD4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVy
dHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFBvaW50JiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BvaW50KGFuaW1h
dGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQpAQCAtOTUsNyArOTUsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHUG9pbnQoU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UG9pbnQmIHZh
bHVlKQorICAgIFNWR1BvaW50KFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJv
cGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFBvaW50JiB2YWx1ZSkKICAgICAgICAg
OiBTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4oJmFuaW1hdGVkUHJvcGVydHksIHJvbGUs
IHZhbHVlKQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmgJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIDog
cHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IGNyZWF0ZShT
VkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9s
ZSwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8+IGNyZWF0ZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBh
bmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpb1ZhbHVlJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKICAg
ICB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyhTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5
LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiB2YWx1
ZSkKKyAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWUmIHZhbHVlKQogICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAg
ICB7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdC5oCShyZXZpc2lvbiAyNDI5NTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUmVjdCA6IHB1YmxpYyBTVkdQcm9w
ZXJ0eVRlYXJPZmY8RmxvYXRSZWN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdSZWN0
PiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVy
dHlSb2xlIHJvbGUsIEZsb2F0UmVjdCYgdmFsdWUpCisgICAgc3RhdGljIFJlZjxTVkdSZWN0PiBj
cmVhdGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJv
cGVydHlSb2xlIHJvbGUsIEZsb2F0UmVjdCYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdSZWN0KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAg
ICAgfQpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
U1ZHUmVjdChTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0
eVJvbGUgcm9sZSwgRmxvYXRSZWN0JiB2YWx1ZSkKKyAgICBTVkdSZWN0KFNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9h
dFJlY3QmIHZhbHVlKQogICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFJlY3Q+KCZh
bmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm0uaAkocmV2aXNpb24gMjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHVHJhbnNmb3JtIDogcHVibGljIFNWR1Byb3BlcnR5
VGVhck9mZjxTVkdUcmFuc2Zvcm1WYWx1ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZH
VHJhbnNmb3JtPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwg
U1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybVZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0
aWMgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFu
aW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1WYWx1ZSYg
dmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm0o
YW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKICAgICB9CkBAIC0xMjksNyArMTI5LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdUcmFuc2Zvcm0oU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1Ry
YW5zZm9ybVZhbHVlJiB2YWx1ZSkKKyAgICBTVkdUcmFuc2Zvcm0oU1ZHTGVnYWN5QW5pbWF0ZWRQ
cm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5z
Zm9ybVZhbHVlJiB2YWx1ZSkKICAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNm
b3JtVmFsdWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
Zi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5j
bHVkZSAiU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIgogCkBAIC0zMCw3ICszMCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KIGNsYXNzIFNWR1Byb3BlcnR5VGVhck9m
ZjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgotY2xhc3MgU1ZHQW5pbWF0ZWRM
aXN0UHJvcGVydHlUZWFyT2ZmIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHkgeworY2xhc3Mg
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmIDogcHVibGljIFNWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHkgewogcHVibGljOgogICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IHR5cGVuYW1lIFNW
R1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46Okxpc3RJdGVtVHlwZTsKICAgICB1c2luZyBM
aXN0SXRlbVRlYXJPZmYgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+
OjpMaXN0SXRlbVRlYXJPZmY7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
QW5pbWF0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5OyB9
CiAgICAgYm9vbCBpc0FuaW1hdGVkTGlzdFRlYXJPZmYoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBpbnQgZmluZEl0ZW0oU1ZHUHJvcGVydHkqIHByb3BlcnR5KQorICAg
IGludCBmaW5kSXRlbShTVkdMZWdhY3lQcm9wZXJ0eSogcHJvcGVydHkpCiAgICAgewogICAgICAg
ICAvLyBUaGlzIHNob3VsZCBldmVyIGJlIGNhbGxlZCBmb3Igb3VyIGJhc2VWYWwsIGFzIGFuaW1W
YWwgY2FuJ3QgbW9kaWZ5IHRoZSBsaXN0LgogICAgICAgICByZXR1cm4gYmFzZVZhbCgpLT5maW5k
SXRlbShzdGF0aWNfY2FzdDxMaXN0SXRlbVRlYXJPZmYqPihwcm9wZXJ0eSkpOwpAQCAtMTYyLDcg
KzE2Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5
cGUsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQotICAgICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHko
Y29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlKQorICAg
ICAgICA6IFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlKQogICAgICAgICAsIG1fdmFsdWVzKHZhbHVlcykK
ICAgICB7CiAgICAgICAgIGlmICghdmFsdWVzLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwCShy
ZXZpc2lvbiAyNDI5NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkUHJvcGVydHkuaCIKLQotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1TVkdBbmltYXRlZFByb3BlcnR5OjpTVkdBbmltYXRlZFByb3BlcnR5KFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSkKLSAgICA6IG1f
Y29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCi0gICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0
cmlidXRlTmFtZSkKLSAgICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUoYW5pbWF0ZWRQcm9wZXJ0
eVR5cGUpCi17Ci19Ci0KLVNWR0FuaW1hdGVkUHJvcGVydHk6On5TVkdBbmltYXRlZFByb3BlcnR5
KCkKLXsKLSAgICAvLyBBc3N1cmUgdGhhdCBhbmltYXRpb25FbmRlZCgpIHdhcyBjYWxsZWQsIGlm
IGFuaW1hdGlvblN0YXJ0ZWQoKSB3YXMgY2FsbGVkIGJlZm9yZS4KLSAgICBBU1NFUlQoIWlzQW5p
bWF0aW5nKCkpOwotCi0gICAgLy8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBjYWNoZS4KLSAgICBmb3Ig
KGF1dG8mIGNhY2hlIDogYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCkpIHsKLSAgICAgICAgaWYgKGNh
Y2hlLnZhbHVlID09IHRoaXMpIHsKLSAgICAgICAgICAgIGFuaW1hdGVkUHJvcGVydHlDYWNoZSgp
LnJlbW92ZShjYWNoZS5rZXkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBTVkdBbmlt
YXRlZFByb3BlcnR5Ojpjb21taXRDaGFuZ2UoKQotewotICAgIEFTU0VSVChtX2NvbnRleHRFbGVt
ZW50KTsKLSAgICBBU1NFUlQoIW1fY29udGV4dEVsZW1lbnQtPm1fZGVsZXRpb25IYXNCZWd1bik7
Ci0gICAgbV9jb250ZXh0RWxlbWVudC0+aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICBt
X2NvbnRleHRFbGVtZW50LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlTmFtZSk7Ci0g
ICAgLy8gTmVlZGVkIHRvIHN5bmNocm9uaXplIHdpdGggQ1NTT00gZm9yIHByZXNlbnRhdGlvbiBh
dHRyaWJ1dGVzIHdpdGggU1ZHIERPTS4KLSAgICBtX2NvbnRleHRFbGVtZW50LT5zeW5jaHJvbml6
ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKG1fYXR0cmlidXRlTmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVR5cGUuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFNWR0VsZW1lbnQ7Ci1jbGFzcyBTVkdQcm9wZXJ0eTsKLQotY2xhc3MgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR0FuaW1hdGVkUHJvcGVydHk+IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFByb3BlcnR5KCk7Ci0gICAgdmlydHVhbCBib29s
IGlzQW5pbWF0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNBbmltYXRlZExpc3RUZWFyT2ZmKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0RWxlbWVu
dC5nZXQoKTsgfQotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2F0dHJpYnV0ZU5hbWU7IH0KLSAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBh
bmltYXRlZFByb3BlcnR5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5
cGU7IH0KLSAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX2lzUmVhZE9ubHk7
IH0KLSAgICB2b2lkIHNldElzUmVhZE9ubHkoKSB7IG1faXNSZWFkT25seSA9IHRydWU7IH0KLQot
ICAgIHZvaWQgY29tbWl0Q2hhbmdlKCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZWFyT2Zm
VHlwZSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRl
ZFR5cGU+Ci0gICAgc3RhdGljIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNy
ZWF0ZUFuaW1hdGVkUHJvcGVydHkoU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBQcm9w
ZXJ0eVR5cGUmIHByb3BlcnR5LCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkK
LSAgICB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoJmVsZW1l
bnQsIGlkZW50aWZpZXIpOwotCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gYW5pbWF0ZWRQcm9wZXJ0
eUNhY2hlKCkuYWRkKGtleSwgbnVsbHB0cik7Ci0gICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLQotICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBUZWFyT2ZmVHlwZTo6Y3JlYXRlKCZlbGVtZW50LCBhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZFR5cGUsIHByb3BlcnR5KTsKLSAgICAgICAgaWYgKGFuaW1hdGVkU3RhdGUg
PT0gUHJvcGVydHlJc1JlYWRPbmx5KQotICAgICAgICAgICAgd3JhcHBlci0+c2V0SXNSZWFkT25s
eSgpOwotCi0gICAgICAgIC8vIENhY2hlIHRoZSByYXcgcG9pbnRlciBidXQgcmV0dXJuIGEgUmVm
UHRyPD4uIFRoaXMgd2lsbCBicmVhayB0aGUgY3ljbGljIHJlZmVyZW5jZQotICAgICAgICAvLyBi
ZXR3ZWVuIFNWR0FuaW1hdGVkUHJvcGVydHkgYW5kIFNWR0VsZW1lbnQgb25jZSB0aGUgcHJvcGVy
dHkgcG9pbnRlciBpcyBub3QgbmVlZGVkLgotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gd3JhcHBlci5wdHIoKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxT
VkdBbmltYXRlZFByb3BlcnR5Pih3cmFwcGVyKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmUHRy
PFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKQotICAgIHsKLSAg
ICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShjb25zdF9jYXN0PFNWR0Vs
ZW1lbnQqPigmZWxlbWVudCksIGlkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gYW5pbWF0ZWRQ
cm9wZXJ0eUNhY2hlKCkuZ2V0KGtleSk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIEFuaW1hdGVk
UHJvcGVydHlUeXBlKTsKLQotcHJpdmF0ZToKLSAgICAvLyBDYWNoaW5nIGZhY2lsaXRpZXMuCi0g
ICAgdXNpbmcgQ2FjaGUgPSBIYXNoTWFwPFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiwg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSosIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2gs
IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2hUcmFpdHM+OwotICAgIHN0YXRpYyBD
YWNoZSYgYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDYWNoZT4gY2FjaGU7Ci0gICAgICAgIHJldHVybiBjYWNoZTsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxlbWVudDsKLSAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBtX2F0dHJpYnV0ZU5hbWU7Ci0gICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgbV9h
bmltYXRlZFByb3BlcnR5VHlwZTsKLQotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc1JlYWRPbmx5
IHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5n
ZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHku
aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYu
aAkocmV2aXNpb24gMjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTMgKzIwLDEz
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgor
I2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdQcm9w
ZXJ0eVRlYXJPZmYuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eSB7CitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZiBmaW5h
bCA6IHB1YmxpYyBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5IHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBQcm9wZXJ0eVRlYXJPZmYgPSBUOwogICAgIHVzaW5nIFByb3BlcnR5VHlwZSA9IHR5cGVuYW1l
IFByb3BlcnR5VGVhck9mZjo6UHJvcGVydHlUeXBlOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZihTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFByb3BlcnR5VHlwZSYgcHJv
cGVydHkpCi0gICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpCisgICAgICAgIDogU1ZHTGVnYWN5QW5p
bWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUpCiAgICAgICAgICwgbV9wcm9wZXJ0eShwcm9wZXJ0eSkKICAgICB7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9w
ZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyNDI5NTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5
VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMiArMjEsMTIgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFByb3Bl
cnR5LmgiCisjaW5jbHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KLWNsYXNzIFNW
R0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHkgeworY2xhc3MgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZH
TGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBQcm9wZXJ0eVR5
cGUgQ29udGVudFR5cGU7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZihTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFByb3BlcnR5VHlwZSYgcHJvcGVydHkp
Ci0gICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpCisgICAgICAgIDogU1ZHTGVnYWN5QW5pbWF0ZWRQ
cm9wZXJ0eShjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5
cGUpCiAgICAgICAgICwgbV9wcm9wZXJ0eShwcm9wZXJ0eSkKICAgICAgICAgLCBtX2FuaW1hdGVk
UHJvcGVydHkobnVsbHB0cikKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFjY2Vzc29yLmgJKHJldmlzaW9uIDI0Mjk1NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFjY2Vzc29yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlUeXBlLmgiCiAjaW5jbHVkZSAiU1ZH
QXR0cmlidXRlLmgiCisjaW5jbHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIgogI2lu
Y2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRl
ICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgpAQCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFR5cGUoKSBjb25zdCB7IHJldHVybiBB
bmltYXRlZFVua25vd247IH0KICAgICB2aXJ0dWFsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlw
ZT4gYW5pbWF0ZWRUeXBlcygpIGNvbnN0IHsgcmV0dXJuIHsgYW5pbWF0ZWRUeXBlKCkgfTsgfQog
Ci0gICAgdmlydHVhbCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVB
bmltYXRlZFByb3BlcnR5KE93bmVyVHlwZSYsIFNWR0VsZW1lbnQmLCBjb25zdCBTVkdBdHRyaWJ1
dGUmLCBBbmltYXRlZFByb3BlcnR5U3RhdGUpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07Ci0g
ICAgdmlydHVhbCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9w
ZXJ0eShjb25zdCBPd25lclR5cGUmLCBjb25zdCBTVkdFbGVtZW50JiwgY29uc3QgU1ZHQXR0cmli
dXRlJikgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfTsKLSAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQ
dHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVz
KE93bmVyVHlwZSYsIFNWR0VsZW1lbnQmLCBBbmltYXRlZFByb3BlcnR5U3RhdGUpIGNvbnN0IHsg
cmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVy
dHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShPd25lclR5cGUmLCBTVkdFbGVtZW50
JiwgY29uc3QgU1ZHQXR0cmlidXRlJiwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9OworICAgIHZpcnR1YWwgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJv
cGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZH
RWxlbWVudCYsIGNvbnN0IFNWR0F0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07
CisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+PiBs
b29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhPd25lclR5cGUmLCBTVkdFbGVtZW50Jiwg
QW5pbWF0ZWRQcm9wZXJ0eVN0YXRlKSBjb25zdCB7IHJldHVybiB7IH07IH0KIAogcHJvdGVjdGVk
OgogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGVOYW1lOwpAQCAtMTM2LDMxICsx
MzYsMzEgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJv
cGVydHlUZWFyT2ZmID0gUHJvcGVydHlUZWFyT2ZmVHlwZSwgdHlwZW5hbWUgUHJvcGVydHkgPSBQ
cm9wZXJ0eVR5cGUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkVHlwZSA9IHR5cGU+Ci0g
ICAgc3RhdGljIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZUFuaW1h
dGVkUHJvcGVydHkoU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBQcm9wZXJ0eSYgcHJv
cGVydHksIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSBhbmltYXRlZFN0YXRlKQorICAgIHN0YXRpYyBS
ZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFBy
b3BlcnR5KFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgUHJvcGVydHkmIHByb3BlcnR5
LCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHk8
UHJvcGVydHlUZWFyT2ZmLCBQcm9wZXJ0eSwgYW5pbWF0ZWRUeXBlPihlbGVtZW50LCBhdHRyaWJ1
dGVOYW1lLCBpZGVudGlmaWVyLCBwcm9wZXJ0eSwgYW5pbWF0ZWRTdGF0ZSk7CisgICAgICAgIHJl
dHVybiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJv
cGVydHk8UHJvcGVydHlUZWFyT2ZmLCBQcm9wZXJ0eSwgYW5pbWF0ZWRUeXBlPihlbGVtZW50LCBh
dHRyaWJ1dGVOYW1lLCBpZGVudGlmaWVyLCBwcm9wZXJ0eSwgYW5pbWF0ZWRTdGF0ZSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmltYXRl
ZFByb3BlcnR5KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+
IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNWR0FuaW1h
dGVkUHJvcGVydHk6Omxvb2t1cEFuaW1hdGVkUHJvcGVydHkoZWxlbWVudCwgaWRlbnRpZmllcik7
CisgICAgICAgIHJldHVybiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBBbmltYXRl
ZFByb3BlcnR5KGVsZW1lbnQsIGlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIGJvb2wgaXNBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6aXNfc2Ft
ZTxQcm9wZXJ0eVR5cGUsIFNWR0xlbmd0aFZhbHVlPjo6dmFsdWU7IH0KICAgICBBbmltYXRlZFBy
b3BlcnR5VHlwZSBhbmltYXRlZFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0eXBlOyB9
CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRl
ZFByb3BlcnR5KE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNW
R0F0dHJpYnV0ZSYgYXR0cmlidXRlLCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0
ZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4g
bG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlLCBBbmltYXRlZFByb3Bl
cnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoYXR0cmlidXRlLCBpc01hdGNoZWQob3duZXIsIGF0dHJpYnV0ZSkpOwogICAg
ICAgICByZXR1cm4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KGVsZW1lbnQsIG1fYXR0
cmlidXRlTmFtZSwgbV9pZGVudGlmaWVyLCB0aGlzLT5hdHRyaWJ1dGUob3duZXIpLnZhbHVlKCks
IGFuaW1hdGVkU3RhdGUpOwogICAgIH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5
PiBsb29rdXBBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSYsIGNvbnN0IFNWR0VsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVm
UHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29u
c3QgT3duZXJUeXBlJiwgY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU1ZHQXR0cmli
dXRlJikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBsb29rdXBBbmltYXRl
ZFByb3BlcnR5KGVsZW1lbnQsIG1faWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgVmVjdG9yPFJl
ZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRp
ZXMoT3duZXJUeXBlJiBvd25lciwgU1ZHRWxlbWVudCYgZWxlbWVudCwgQW5pbWF0ZWRQcm9wZXJ0
eVN0YXRlIGFuaW1hdGVkU3RhdGUpIGNvbnN0IG92ZXJyaWRlCisgICAgVmVjdG9yPFJlZlB0cjxT
VkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRp
ZXMoT3duZXJUeXBlJiBvd25lciwgU1ZHRWxlbWVudCYgZWxlbWVudCwgQW5pbWF0ZWRQcm9wZXJ0
eVN0YXRlIGFuaW1hdGVkU3RhdGUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4geyBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHkoZWxlbWVudCwgbV9hdHRyaWJ1dGVO
YW1lLCBtX2lkZW50aWZpZXIsIGF0dHJpYnV0ZShvd25lcikudmFsdWUoKSwgYW5pbWF0ZWRTdGF0
ZSkgfTsKICAgICB9CkBAIC0yMTQsNyArMjE0LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxB
bmltYXRlZFByb3BlcnR5VHlwZT4gYW5pbWF0ZWRUeXBlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHsgdHlwZSwgc2Vjb25kVHlwZSB9OyB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KE93bmVyVHlwZSYgb3duZXIsIFNW
R0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlLCBBbmltYXRl
ZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWZQdHI8
U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5
KE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0
ZSYgYXR0cmlidXRlLCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChCYXNlOjppc01hdGNoZWQob3duZXIsIGF0dHJp
YnV0ZSkpCiAgICAgICAgICAgICByZXR1cm4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5
KGVsZW1lbnQsIG1fYXR0cmlidXRlTmFtZSwgbV9pZGVudGlmaWVyLCB0aGlzLT5hdHRyaWJ1dGUo
b3duZXIpLnZhbHVlKCksIGFuaW1hdGVkU3RhdGUpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBsb29rdXBPckNyZWF0ZUFuaW1hdGVk
UHJvcGVydHk8U2Vjb25kUHJvcGVydHlUZWFyT2ZmVHlwZSwgU2Vjb25kUHJvcGVydHlUeXBlLCBz
ZWNvbmRUeXBlPihlbGVtZW50LCBtX2F0dHJpYnV0ZU5hbWUsIG1fc2Vjb25kSWRlbnRpZmllciwg
c2Vjb25kQXR0cmlidXRlKG93bmVyKS52YWx1ZSgpLCBhbmltYXRlZFN0YXRlKTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShj
b25zdCBPd25lclR5cGUmIG93bmVyLCBjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBT
VkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWZQdHI8U1ZHTGVn
YWN5QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5
cGUmIG93bmVyLCBjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChCYXNlOjppc01h
dGNoZWQob3duZXIsIGF0dHJpYnV0ZSkpCiAgICAgICAgICAgICByZXR1cm4gbG9va3VwQW5pbWF0
ZWRQcm9wZXJ0eShlbGVtZW50LCBtX2lkZW50aWZpZXIpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBsb29rdXBBbmltYXRlZFByb3BlcnR5KGVsZW1lbnQsIG1f
c2Vjb25kSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRl
ZFByb3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoT3duZXJUeXBlJiBv
d25lciwgU1ZHRWxlbWVudCYgZWxlbWVudCwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVk
U3RhdGUpIGNvbnN0IG92ZXJyaWRlCisgICAgVmVjdG9yPFJlZlB0cjxTVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoT3duZXJUeXBlJiBv
d25lciwgU1ZHRWxlbWVudCYgZWxlbWVudCwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVk
U3RhdGUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gewogICAgICAgICAg
ICAgbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KGVsZW1lbnQsIG1fYXR0cmlidXRlTmFt
ZSwgbV9pZGVudGlmaWVyLCBhdHRyaWJ1dGUob3duZXIpLnZhbHVlKCksIGFuaW1hdGVkU3RhdGUp
LApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlT3duZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0
dHJpYnV0ZU93bmVyUHJveHkuaAkocmV2aXNpb24gMjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlT3duZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTsKIGNsYXNzIFNWR0F0dHJpYnV0ZTsKIGNsYXNzIFNWR0VsZW1lbnQ7CitjbGFz
cyBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5OwogCiBjbGFzcyBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5IHsKIHB1YmxpYzoKQEAgLTQ3LDkgKzQ3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBW
ZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+IGFuaW1hdGVkVHlwZXMoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVy
dHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBTVkdBdHRyaWJ1dGUmKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3Vw
QW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBTVkdBdHRyaWJ1dGUmKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+PiBsb29rdXBPckNyZWF0ZUFu
aW1hdGVkUHJvcGVydGllcyhjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlQW5p
bWF0ZWRQcm9wZXJ0eShjb25zdCBTVkdBdHRyaWJ1dGUmKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0
eShjb25zdCBTVkdBdHRyaWJ1dGUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8UmVm
UHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJv
cGVydGllcyhjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgV2Vha1B0cjxTVkdFbGVtZW50PiBtX2VsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
LmgJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE3ICs4MSwx
NyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gYXR0cmlidXRlUmVnaXN0cnkoKS5hbmltYXRl
ZFR5cGVzKGF0dHJpYnV0ZU5hbWUpOwogICAgIH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZFBy
b3BlcnR5PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHQXR0cmlidXRl
JiBhdHRyaWJ1dGUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBTVkdBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBhdHRy
aWJ1dGVSZWdpc3RyeSgpLmxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShtX293bmVyLCAq
bV9lbGVtZW50LCBhdHRyaWJ1dGUsIG1fYW5pbWF0ZWRTdGF0ZSk7CiAgICAgfQogCi0gICAgUmVm
UHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZH
QXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHQXR0cmli
dXRlJiBhdHRyaWJ1dGUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gYXR0
cmlidXRlUmVnaXN0cnkoKS5sb29rdXBBbmltYXRlZFByb3BlcnR5KG1fb3duZXIsICptX2VsZW1l
bnQsIGF0dHJpYnV0ZSk7CiAgICAgfQogCi0gICAgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFBy
b3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICBWZWN0b3I8UmVmUHRyPFNW
R0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGll
cyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkubG9va3VwT3JDcmVhdGVBbmlt
YXRlZFByb3BlcnRpZXMobV9vd25lciwgKm1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgbV9hbmlt
YXRlZFN0YXRlKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDI0Mjk1NikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDExICszNCwxMSBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVy
TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAjaW5j
bHVkZSAiU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCIKKyNpbmNsdWRlICJTVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUg
IlNWR1pvb21BbmRQYW5UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTIwMSwy
MSArMjAxLDIxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN5bmNocm9uaXplQXR0cmlidXRl
QmFzZVR5cGVzKG93bmVyLCBlbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5
KE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0
ZSYgYXR0cmlidXRlLCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkgY29uc3QK
KyAgICBSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmlt
YXRlZFByb3BlcnR5KE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlLCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRT
dGF0ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChjb25zdCBhdXRvKiBhdHRyaWJ1dGVBY2Nl
c3NvciA9IGZpbmRBdHRyaWJ1dGVBY2Nlc3Nvcihvd25lciwgYXR0cmlidXRlKSkKICAgICAgICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVBY2Nlc3Nvci0+bG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3Bl
cnR5KG93bmVyLCBlbGVtZW50LCBhdHRyaWJ1dGUsIGFuaW1hdGVkU3RhdGUpOwogICAgICAgICBy
ZXR1cm4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5QmFzZVR5cGVzKG93bmVyLCBlbGVt
ZW50LCBhdHRyaWJ1dGUsIGFuaW1hdGVkU3RhdGUpOwogICAgIH0KIAotICAgIFJlZlB0cjxTVkdB
bmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSYg
b3duZXIsIGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0
cmlidXRlKSBjb25zdAorICAgIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBsb29r
dXBBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFNWR0VsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKGNvbnN0IGF1dG8qIGF0dHJpYnV0ZUFjY2Vzc29yID0gZmluZEF0dHJpYnV0
ZUFjY2Vzc29yKG93bmVyLCBhdHRyaWJ1dGUpKQogICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZUFjY2Vzc29yLT5sb29rdXBBbmltYXRlZFByb3BlcnR5KG93bmVyLCBlbGVtZW50LCBhdHRyaWJ1
dGUpOwogICAgICAgICByZXR1cm4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eUJhc2VUeXBlcyhvd25l
ciwgZWxlbWVudCwgYXR0cmlidXRlKTsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPFNWR0Fu
aW1hdGVkUHJvcGVydHk+PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhPd25lclR5
cGUmIG93bmVyLCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkgY29uc3QKKyAg
ICBWZWN0b3I8UmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+PiBsb29rdXBPckNyZWF0
ZUFuaW1hdGVkUHJvcGVydGllcyhPd25lclR5cGUmIG93bmVyLCBTVkdFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5U3Rh
dGUgYW5pbWF0ZWRTdGF0ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChjb25zdCBhdXRvKiBh
dHRyaWJ1dGVBY2Nlc3NvciA9IGZpbmRBdHRyaWJ1dGVBY2Nlc3NvcihhdHRyaWJ1dGVOYW1lKSkK
ICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVBY2Nlc3Nvci0+bG9va3VwT3JDcmVhdGVBbmlt
YXRlZFByb3BlcnRpZXMob3duZXIsIGVsZW1lbnQsIGFuaW1hdGVkU3RhdGUpOwpAQCAtMjc0LDEw
ICsyNzQsMTAgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgSSA9IDA+
Ci0gICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPT0gc2l6ZW9mLi4uKEJhc2VU
eXBlcyksIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5Pj46OnR5cGUgbG9va3VwT3JDcmVhdGVB
bmltYXRlZFByb3BlcnR5QmFzZVR5cGVzKE93bmVyVHlwZSYsIFNWR0VsZW1lbnQmLCBjb25zdCBT
VkdBdHRyaWJ1dGUmLCBBbmltYXRlZFByb3BlcnR5U3RhdGUpIHsgcmV0dXJuIG51bGxwdHI7IH0K
KyAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA9PSBzaXplb2YuLi4oQmFzZVR5
cGVzKSwgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+Pjo6dHlwZSBsb29rdXBPckNy
ZWF0ZUFuaW1hdGVkUHJvcGVydHlCYXNlVHlwZXMoT3duZXJUeXBlJiwgU1ZHRWxlbWVudCYsIGNv
bnN0IFNWR0F0dHJpYnV0ZSYsIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSkgeyByZXR1cm4gbnVsbHB0
cjsgfQogCiAgICAgdGVtcGxhdGU8c2l6ZV90IEkgPSAwPgotICAgIHN0YXRpYyB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxJIDwgc2l6ZW9mLi4uKEJhc2VUeXBlcyksIFJlZlB0cjxTVkdBbmltYXRl
ZFByb3BlcnR5Pj46OnR5cGUgbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5QmFzZVR5cGVz
KE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0
ZSYgYXR0cmlidXRlLCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkKKyAgICBz
dGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA8IHNpemVvZi4uLihCYXNlVHlwZXMpLCBS
ZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4+Ojp0eXBlIGxvb2t1cE9yQ3JlYXRlQW5p
bWF0ZWRQcm9wZXJ0eUJhc2VUeXBlcyhPd25lclR5cGUmIG93bmVyLCBTVkdFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRl
IGFuaW1hdGVkU3RhdGUpCiAgICAgewogICAgICAgICB1c2luZyBCYXNlVHlwZSA9IHR5cGVuYW1l
IHN0ZDo6dHVwbGVfZWxlbWVudDxJLCB0eXBlbmFtZSBzdGQ6OnR1cGxlPEJhc2VUeXBlcy4uLj4+
Ojp0eXBlOwogICAgICAgICBpZiAoYXV0byBhbmltYXRlZFByb3BlcnR5ID0gQmFzZVR5cGU6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KCkubG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KG93bmVyLCBl
bGVtZW50LCBhdHRyaWJ1dGUsIGFuaW1hdGVkU3RhdGUpKQpAQCAtMjg2LDEwICsyODYsMTAgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgSSA9IDA+Ci0gICAgc3RhdGlj
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPT0gc2l6ZW9mLi4uKEJhc2VUeXBlcyksIFJlZlB0
cjxTVkdBbmltYXRlZFByb3BlcnR5Pj46OnR5cGUgbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eUJhc2VU
eXBlcyhjb25zdCBPd25lclR5cGUmLCBjb25zdCBTVkdFbGVtZW50JiwgY29uc3QgU1ZHQXR0cmli
dXRlJikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJID09IHNpemVvZi4uLihCYXNlVHlwZXMpLCBSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQ
cm9wZXJ0eT4+Ojp0eXBlIGxvb2t1cEFuaW1hdGVkUHJvcGVydHlCYXNlVHlwZXMoY29uc3QgT3du
ZXJUeXBlJiwgY29uc3QgU1ZHRWxlbWVudCYsIGNvbnN0IFNWR0F0dHJpYnV0ZSYpIHsgcmV0dXJu
IG51bGxwdHI7IH0KIAogICAgIHRlbXBsYXRlPHNpemVfdCBJID0gMD4KLSAgICBzdGF0aWMgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SSA8IHNpemVvZi4uLihCYXNlVHlwZXMpLCBSZWZQdHI8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eT4+Ojp0eXBlIGxvb2t1cEFuaW1hdGVkUHJvcGVydHlCYXNlVHlwZXMo
Y29uc3QgT3duZXJUeXBlJiBvd25lciwgY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
U1ZHQXR0cmlidXRlJiBhdHRyaWJ1dGUpCisgICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPEkgPCBzaXplb2YuLi4oQmFzZVR5cGVzKSwgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJv
cGVydHk+Pjo6dHlwZSBsb29rdXBBbmltYXRlZFByb3BlcnR5QmFzZVR5cGVzKGNvbnN0IE93bmVy
VHlwZSYgb3duZXIsIGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0
ZSYgYXR0cmlidXRlKQogICAgIHsKICAgICAgICAgdXNpbmcgQmFzZVR5cGUgPSB0eXBlbmFtZSBz
dGQ6OnR1cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxCYXNlVHlwZXMuLi4+Pjo6
dHlwZTsKICAgICAgICAgaWYgKGF1dG8gYW5pbWF0ZWRQcm9wZXJ0eSA9IEJhc2VUeXBlOjphdHRy
aWJ1dGVSZWdpc3RyeSgpLmxvb2t1cEFuaW1hdGVkUHJvcGVydHkob3duZXIsIGVsZW1lbnQsIGF0
dHJpYnV0ZSkpCkBAIC0yOTgsMTAgKzI5OCwxMCBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRl
bXBsYXRlPHNpemVfdCBJID0gMD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
SSA9PSBzaXplb2YuLi4oQmFzZVR5cGVzKSwgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3Bl
cnR5Pj4+Ojp0eXBlIGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVzQmFzZVR5cGVzKE93
bmVyVHlwZSYsIFNWR0VsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgQW5pbWF0ZWRQcm9w
ZXJ0eVN0YXRlKSB7IHJldHVybiB7IH07IH0KKyAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8SSA9PSBzaXplb2YuLi4oQmFzZVR5cGVzKSwgVmVjdG9yPFJlZlB0cjxTVkdMZWdhY3lB
bmltYXRlZFByb3BlcnR5Pj4+Ojp0eXBlIGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVz
QmFzZVR5cGVzKE93bmVyVHlwZSYsIFNWR0VsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwg
QW5pbWF0ZWRQcm9wZXJ0eVN0YXRlKSB7IHJldHVybiB7IH07IH0KIAogICAgIHRlbXBsYXRlPHNp
emVfdCBJID0gMD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA8IHNpemVv
Zi4uLihCYXNlVHlwZXMpLCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+Pj46OnR5
cGUgbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXNCYXNlVHlwZXMoT3duZXJUeXBlJiBv
d25lciwgU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpCisgICAgc3RhdGljIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPCBzaXplb2YuLi4oQmFzZVR5cGVzKSwgVmVjdG9yPFJl
ZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Pj4+Ojp0eXBlIGxvb2t1cE9yQ3JlYXRlQW5p
bWF0ZWRQcm9wZXJ0aWVzQmFzZVR5cGVzKE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVy
dHlTdGF0ZSBhbmltYXRlZFN0YXRlKQogICAgIHsKICAgICAgICAgdXNpbmcgQmFzZVR5cGUgPSB0
eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxCYXNlVHlw
ZXMuLi4+Pjo6dHlwZTsKICAgICAgICAgYXV0byBhbmltYXRlZFByb3BlcnRpZXMgPSBCYXNlVHlw
ZTo6YXR0cmlidXRlUmVnaXN0cnkoKS5sb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhv
d25lciwgZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRTdGF0ZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmlt
YXRlZFByb3BlcnR5LmNwcAkocmV2aXNpb24gMjQyOTU2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcDoyNDI5NTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCisK
KyNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpCisgICAgOiBtX2NvbnRleHRFbGVtZW50KGNvbnRl
eHRFbGVtZW50KQorICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCisgICAgLCBt
X2FuaW1hdGVkUHJvcGVydHlUeXBlKGFuaW1hdGVkUHJvcGVydHlUeXBlKQoreworfQorCitTVkdB
bmltYXRlZFByb3BlcnR5Ojp+U1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpCit7CisgICAgLy8gQXNzdXJl
IHRoYXQgYW5pbWF0aW9uRW5kZWQoKSB3YXMgY2FsbGVkLCBpZiBhbmltYXRpb25TdGFydGVkKCkg
d2FzIGNhbGxlZCBiZWZvcmUuCisgICAgQVNTRVJUKCFpc0FuaW1hdGluZygpKTsKKworICAgIC8v
IFJlbW92ZSB3cmFwcGVyIGZyb20gY2FjaGUuCisgICAgZm9yIChhdXRvJiBjYWNoZSA6IGFuaW1h
dGVkUHJvcGVydHlDYWNoZSgpKSB7CisgICAgICAgIGlmIChjYWNoZS52YWx1ZSA9PSB0aGlzKSB7
CisgICAgICAgICAgICBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS5yZW1vdmUoY2FjaGUua2V5KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0
Q2hhbmdlKCkKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKCFt
X2NvbnRleHRFbGVtZW50LT5tX2RlbGV0aW9uSGFzQmVndW4pOworICAgIG1fY29udGV4dEVsZW1l
bnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgbV9jb250ZXh0RWxlbWVudC0+c3Zn
QXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0ZU5hbWUpOworICAgIC8vIE5lZWRlZCB0byBzeW5j
aHJvbml6ZSB3aXRoIENTU09NIGZvciBwcmVzZW50YXRpb24gYXR0cmlidXRlcyB3aXRoIFNWRyBE
T00uCisgICAgbV9jb250ZXh0RWxlbWVudC0+c3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0
ZShtX2F0dHJpYnV0ZU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lB
bmltYXRlZFByb3BlcnR5LmNwcAkocmV2aXNpb24gMjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDIwICsyMCwyMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCisjaW5jbHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQ
cm9wZXJ0eS5oIgogCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNWR0FuaW1hdGVkUHJvcGVydHk6OlNWR0FuaW1hdGVkUHJvcGVydHkoU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFu
aW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlKQorU1ZHTGVnYWN5QW5pbWF0
ZWRQcm9wZXJ0eTo6U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpCiAgICAgOiBtX2NvbnRleHRFbGVtZW50KGNv
bnRleHRFbGVtZW50KQogICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCiAgICAg
LCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKGFuaW1hdGVkUHJvcGVydHlUeXBlKQogewogfQogCi1T
VkdBbmltYXRlZFByb3BlcnR5Ojp+U1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpCitTVkdMZWdhY3lBbmlt
YXRlZFByb3BlcnR5Ojp+U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSgpCiB7CiAgICAgLy8gQXNz
dXJlIHRoYXQgYW5pbWF0aW9uRW5kZWQoKSB3YXMgY2FsbGVkLCBpZiBhbmltYXRpb25TdGFydGVk
KCkgd2FzIGNhbGxlZCBiZWZvcmUuCiAgICAgQVNTRVJUKCFpc0FuaW1hdGluZygpKTsKQEAgLTQ5
LDcgKzQ5LDcgQEAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0FuaW1hdGVkUHJvcGVydAogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6Y29tbWl0Q2hhbmdlKCkKK3ZvaWQgU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eTo6Y29t
bWl0Q2hhbmdlKCkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAgICAgQVNTRVJU
KCFtX2NvbnRleHRFbGVtZW50LT5tX2RlbGV0aW9uSGFzQmVndW4pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeUFuaW1hdGVkUHJv
cGVydHkuaAkocmV2aXNpb24gMjQyOTU2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6MjQyOTU2KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVR5cGUuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdQcm9wZXJ0eTsKKworY2xhc3MgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR0FuaW1hdGVkUHJvcGVydHk+IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFByb3BlcnR5KCk7CisgICAgdmlydHVhbCBib29s
IGlzQW5pbWF0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNBbmltYXRlZExpc3RUZWFyT2ZmKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0RWxlbWVu
dC5nZXQoKTsgfQorICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2F0dHJpYnV0ZU5hbWU7IH0KKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBh
bmltYXRlZFByb3BlcnR5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5
cGU7IH0KKyAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX2lzUmVhZE9ubHk7
IH0KKyAgICB2b2lkIHNldElzUmVhZE9ubHkoKSB7IG1faXNSZWFkT25seSA9IHRydWU7IH0KKwor
ICAgIHZvaWQgY29tbWl0Q2hhbmdlKCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZWFyT2Zm
VHlwZSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRl
ZFR5cGU+CisgICAgc3RhdGljIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNy
ZWF0ZUFuaW1hdGVkUHJvcGVydHkoU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBQcm9w
ZXJ0eVR5cGUmIHByb3BlcnR5LCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkK
KyAgICB7CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoJmVsZW1l
bnQsIGlkZW50aWZpZXIpOworCisgICAgICAgIGF1dG8gcmVzdWx0ID0gYW5pbWF0ZWRQcm9wZXJ0
eUNhY2hlKCkuYWRkKGtleSwgbnVsbHB0cik7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKworICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBUZWFyT2ZmVHlwZTo6Y3JlYXRlKCZlbGVtZW50LCBhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZFR5cGUsIHByb3BlcnR5KTsKKyAgICAgICAgaWYgKGFuaW1hdGVkU3RhdGUg
PT0gUHJvcGVydHlJc1JlYWRPbmx5KQorICAgICAgICAgICAgd3JhcHBlci0+c2V0SXNSZWFkT25s
eSgpOworCisgICAgICAgIC8vIENhY2hlIHRoZSByYXcgcG9pbnRlciBidXQgcmV0dXJuIGEgUmVm
UHRyPD4uIFRoaXMgd2lsbCBicmVhayB0aGUgY3ljbGljIHJlZmVyZW5jZQorICAgICAgICAvLyBi
ZXR3ZWVuIFNWR0FuaW1hdGVkUHJvcGVydHkgYW5kIFNWR0VsZW1lbnQgb25jZSB0aGUgcHJvcGVy
dHkgcG9pbnRlciBpcyBub3QgbmVlZGVkLgorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gd3JhcHBlci5wdHIoKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxT
VkdBbmltYXRlZFByb3BlcnR5Pih3cmFwcGVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmUHRy
PFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKQorICAgIHsKKyAg
ICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShjb25zdF9jYXN0PFNWR0Vs
ZW1lbnQqPigmZWxlbWVudCksIGlkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gYW5pbWF0ZWRQ
cm9wZXJ0eUNhY2hlKCkuZ2V0KGtleSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIEFuaW1hdGVk
UHJvcGVydHlUeXBlKTsKKworcHJpdmF0ZToKKyAgICAvLyBDYWNoaW5nIGZhY2lsaXRpZXMuCisg
ICAgdXNpbmcgQ2FjaGUgPSBIYXNoTWFwPFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiwg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSosIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2gs
IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2hUcmFpdHM+OworICAgIHN0YXRpYyBD
YWNoZSYgYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDYWNoZT4gY2FjaGU7CisgICAgICAgIHJldHVybiBjYWNoZTsKKyAgICB9CisK
KyAgICBSZWZQdHI8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxlbWVudDsKKyAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBtX2F0dHJpYnV0ZU5hbWU7CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgbV9h
bmltYXRlZFByb3BlcnR5VHlwZTsKKworcHJvdGVjdGVkOgorICAgIGJvb2wgbV9pc1JlYWRPbmx5
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5n
ZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeUFuaW1hdGVkUHJv
cGVydHkuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25h
dGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0
eS5oCShyZXZpc2lvbiAyNDI5NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwx
MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50OwotY2xhc3MgU1ZH
UHJvcGVydHk7CitjbGFzcyBTVkdMZWdhY3lQcm9wZXJ0eTsKIAotY2xhc3MgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR0FuaW1hdGVkUHJvcGVydHk+IHsKK2NsYXNz
IFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdMZWdhY3lB
bmltYXRlZFByb3BlcnR5PiB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSgpOworICAgIHZpcnR1YWwgflNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkoKTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0FuaW1hdGVkTGlzdFRlYXJPZmYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdENoYW5nZSgpOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlw
ZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRUeXBlPgotICAgIHN0YXRpYyBSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KFNWR0Vs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgUHJvcGVydHlUeXBlJiBwcm9wZXJ0eSwgQW5pbWF0
ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpCisgICAgc3RhdGljIFJlZlB0cjxTVkdMZWdh
Y3lBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHkoU1ZHRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5LCBBbmltYXRl
ZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkKICAgICB7CiAgICAgICAgIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoJmVsZW1lbnQsIGlkZW50aWZpZXIpOwogCkBAIC02MSwy
MSArNjEsMjEgQEAgcHVibGljOgogICAgICAgICAvLyBDYWNoZSB0aGUgcmF3IHBvaW50ZXIgYnV0
IHJldHVybiBhIFJlZlB0cjw+LiBUaGlzIHdpbGwgYnJlYWsgdGhlIGN5Y2xpYyByZWZlcmVuY2UK
ICAgICAgICAgLy8gYmV0d2VlbiBTVkdBbmltYXRlZFByb3BlcnR5IGFuZCBTVkdFbGVtZW50IG9u
Y2UgdGhlIHByb3BlcnR5IHBvaW50ZXIgaXMgbm90IG5lZWRlZC4KICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4od3JhcHBlcik7CisgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4od3JhcHBl
cik7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29r
dXBBbmltYXRlZFByb3BlcnR5KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShjb25zdF9jYXN0PFNWR0VsZW1lbnQqPigmZWxl
bWVudCksIGlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm4gYW5pbWF0ZWRQcm9wZXJ0eUNhY2hl
KCkuZ2V0KGtleSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eShTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIEFuaW1hdGVkUHJvcGVydHlUeXBl
KTsKKyAgICBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJiwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogCiBwcml2YXRlOgogICAgIC8vIENh
Y2hpbmcgZmFjaWxpdGllcy4KLSAgICB1c2luZyBDYWNoZSA9IEhhc2hNYXA8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eURlc2NyaXB0aW9uLCBTVkdBbmltYXRlZFByb3BlcnR5KiwgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eURlc2NyaXB0aW9uSGFzaCwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uSGFzaFRy
YWl0cz47CisgICAgdXNpbmcgQ2FjaGUgPSBIYXNoTWFwPFNWR0FuaW1hdGVkUHJvcGVydHlEZXNj
cmlwdGlvbiwgU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSosIFNWR0FuaW1hdGVkUHJvcGVydHlE
ZXNjcmlwdGlvbkhhc2gsIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2hUcmFpdHM+
OwogICAgIHN0YXRpYyBDYWNoZSYgYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCkKICAgICB7CiAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDYWNoZT4gY2FjaGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeVByb3BlcnR5LmgJKHJldmlzaW9u
IDI0Mjk1NikJKGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHku
aDoyNDI5NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lQcm9w
ZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitlbnVtIFNWR1Byb3BlcnR5Um9sZSB7CisgICAgVW5kZWZpbmVkUm9sZSwK
KyAgICBCYXNlVmFsUm9sZSwKKyAgICBBbmltVmFsUm9sZQorfTsKKworY2xhc3MgU1ZHUHJvcGVy
dHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcm9wZXJ0eT4geworcHVibGljOgorICAgIHZpcnR1
YWwgflNWR1Byb3BlcnR5KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBib29sIGlzUmVhZE9u
bHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeVByb3BlcnR5LmgKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVn
YWN5UHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdMZWdhY3lQcm9wZXJ0eS5oCShyZXZpc2lvbiAyNDI5NTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw5ICsyOSw5IEBAIGVudW0gU1ZHUHJvcGVydHlSb2xlIHsKICAgICBBbmltVmFsUm9sZQogfTsK
IAotY2xhc3MgU1ZHUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcm9wZXJ0eT4gewor
Y2xhc3MgU1ZHTGVnYWN5UHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdMZWdhY3lQcm9w
ZXJ0eT4gewogcHVibGljOgotICAgIHZpcnR1YWwgflNWR1Byb3BlcnR5KCkgPSBkZWZhdWx0Owor
ICAgIHZpcnR1YWwgflNWR0xlZ2FjeVByb3BlcnR5KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCBib29sIGlzUmVhZE9ubHkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENo
YW5nZSgpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQ
cm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0xpc3RQcm9wZXJ0eS5oCShyZXZpc2lvbiAyNDI5NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CiBjbGFzcyBTVkdBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmY7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KLWNs
YXNzIFNWR0xpc3RQcm9wZXJ0eSA6IHB1YmxpYyBTVkdQcm9wZXJ0eSwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+PiB7CitjbGFzcyBTVkdMaXN0UHJv
cGVydHkgOiBwdWJsaWMgU1ZHTGVnYWN5UHJvcGVydHksIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxT
VkdMaXN0UHJvcGVydHk8UHJvcGVydHlUeXBlPj4gewogcHVibGljOgogICAgIHR5cGVkZWYgU1ZH
TGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4gU2VsZjsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCShyZXZpc2lvbiAyNDI5NTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCShub25leGlzdGVudCkKQEAg
LTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gU1ZHUHJv
cGVydHlSb2xlIHsKLSAgICBVbmRlZmluZWRSb2xlLAotICAgIEJhc2VWYWxSb2xlLAotICAgIEFu
aW1WYWxSb2xlCi19OwotCi1jbGFzcyBTVkdQcm9wZXJ0eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNW
R1Byb3BlcnR5PiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+U1ZHUHJvcGVydHkoKSA9IGRlZmF1
bHQ7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0Q2hhbmdlKCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHkuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAj
IwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCShyZXZp
c2lvbiAyNDI5NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTUgKzIxLDE1IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eS5oIgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiU1ZHTGVnYWN5QW5p
bWF0ZWRQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlNWR0xlZ2FjeVByb3BlcnR5LmgiCiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVt
ZW50OwogCi1jbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmZCYXNlIDogcHVibGljIFNWR1Byb3BlcnR5
IHsKK2NsYXNzIFNWR1Byb3BlcnR5VGVhck9mZkJhc2UgOiBwdWJsaWMgU1ZHTGVnYWN5UHJvcGVy
dHkgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXcmFwcGVyKCkgPSAwOwogfTsK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgLy8gVXNlZCBmb3IgY2hpbGQgdHlwZXMg
KGJhc2VWYWwvYW5pbVZhbCkgb2YgYSBTVkdBbmltYXRlZCogcHJvcGVydHkgKGZvciBleGFtcGxl
OiBTVkdBbmltYXRlZExlbmd0aDo6YmFzZVZhbCgpKS4KICAgICAvLyBBbHNvIHVzZWQgZm9yIGxp
c3QgdGVhciBvZmZzIChmb3IgZXhhbXBsZTogdGV4dC54LmJhc2VWYWwuZ2V0SXRlbSgwKSkuCi0g
ICAgc3RhdGljIFJlZjxTZWxmPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQ
cm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFByb3BlcnR5VHlwZSYgdmFsdWUpCisgICAg
c3RhdGljIFJlZjxTZWxmPiBjcmVhdGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0
ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFByb3BlcnR5VHlwZSYgdmFsdWUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWxmKGFuaW1hdGVkUHJvcGVydHks
IHJvbGUsIHZhbHVlKSk7CiAgICAgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgdmlydHVhbCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5UmVmZXJlbmNlKCkgeyByZXR1cm4g
Km1fdmFsdWU7IH0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5KCkg
Y29uc3QgeyByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5LmdldCgpOyB9CisgICAgU1ZHTGVnYWN5
QW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5p
bWF0ZWRQcm9wZXJ0eS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKFByb3Bl
cnR5VHlwZSYgdmFsdWUpCiAgICAgewpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fdmFsdWUgPSAmdmFsdWU7CiAgICAgfQogCi0gICAgdm9pZCBzZXRBbmltYXRlZFByb3BlcnR5
KFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHkpCisgICAgdm9pZCBzZXRBbmlt
YXRlZFByb3BlcnR5KFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHkp
CiAgICAgewogICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHkgPSBhbmltYXRlZFByb3BlcnR5Owog
ICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgU1ZHUHJvcGVydHlUZWFyT2ZmKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVy
dHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlKQorICAgIFNWR1By
b3BlcnR5VGVhck9mZihTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5
LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgUHJvcGVydHlUeXBlJiB2YWx1ZSkKICAgICAgICAgOiBt
X2FuaW1hdGVkUHJvcGVydHkoYW5pbWF0ZWRQcm9wZXJ0eSkKICAgICAgICAgLCBtX3JvbGUocm9s
ZSkKICAgICAgICAgLCBtX3ZhbHVlKCZ2YWx1ZSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIG1fY2hpbGRUZWFyT2Zmcy5jbGVhcigpOwogICAgIH0KIAotICAgIFJlZlB0
cjxTVkdBbmltYXRlZFByb3BlcnR5PiBtX2FuaW1hdGVkUHJvcGVydHk7CisgICAgUmVmUHRyPFNW
R0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IG1fYW5pbWF0ZWRQcm9wZXJ0eTsKICAgICBTVkdQcm9w
ZXJ0eVJvbGUgbV9yb2xlOwogICAgIFByb3BlcnR5VHlwZSogbV92YWx1ZTsKICAgICBWZWN0b3I8
V2Vha1B0cjxTVkdQcm9wZXJ0eVRlYXJPZmZCYXNlPj4gbV9jaGlsZFRlYXJPZmZzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364705</attachid>
            <date>2019-03-14 15:28:02 -0700</date>
            <delta_ts>2019-03-14 17:15:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195767-20190314152801.patch</filename>
            <type>text/plain</type>
            <size>78450</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Mjk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxOS0wMy0xNCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBT
VkdQcm9wZXJ0eSB0byBTVkdMZWdhY3lQcm9wZXJ0eSBhbmQgcmVuYW1lIFNWR0FuaW1hdGVkUHJv
cGVydHkgdG8gU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHN0ZXAgdG93YXJkcyByZW1vdmlu
ZyB0aGUgU1ZHIHByb3BlcnRpZXMgdGVhciBvZmYgb2JqZWN0cy4KKworICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBzdmcvU1ZHQW5nbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6OlNWR0FuZ2xlKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpjYXN0
QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Omxvb2t1cEFuaW1hdGVkUHJvcGVydHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6bG9va3VwT3JDcmVhdGVBbmlt
YXRlZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Omxvb2t1cE9yQ3Jl
YXRlQW5pbWF0ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGg6OlNWR0xlbmd0aCk6CisgICAgICAgICogc3ZnL1NWR01hdHJpeC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4
OjpTVkdNYXRyaXgpOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR051bWJlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR051bWJlcjo6U1ZH
TnVtYmVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6cHJvY2Vzc0luY29taW5nTGlzdEl0
ZW1WYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdXaXRoQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1dpdGhDb250ZXh0OjphbmltYXRlZFByb3BlcnR5IGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OlNWR1BvaW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJlc2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ByZXNl
cnZlQXNwZWN0UmF0aW86OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8pOgorICAgICAgICAqIHN2Zy9T
VkdSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVjdDo6U1ZHUmVjdCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpmaW5kSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6OlNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZik6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eS5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlUZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RhdGlj
UHJvcGVydHlUZWFyT2ZmOjpTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZik6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQWNjZXNzb3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0F0dHJpYnV0ZUFjY2Vzc29yOjpsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVy
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlQWNjZXNzb3I6Omxvb2t1
cEFuaW1hdGVkUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRl
QWNjZXNzb3I6Omxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQXR0cmlidXRlQWNjZXNzb3I6Omxvb2t1cE9yQ3JlYXRl
QW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEF0dHJpYnV0
ZUFjY2Vzc29yOjpsb29rdXBBbmltYXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVPd25lclByb3h5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVSZWdpc3RyeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlUmVn
aXN0cnk6Omxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBdHRyaWJ1dGVSZWdpc3RyeTo6bG9va3VwQW5pbWF0ZWRQcm9wZXJ0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVSZWdpc3RyeTo6bG9va3VwT3JDcmVh
dGVBbmltYXRlZFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmli
dXRlUmVnaXN0cnk6Omxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eUJhc2VUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVSZWdpc3RyeTo6bG9va3VwQW5pbWF0ZWRQcm9w
ZXJ0eUJhc2VUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVSZWdpc3RyeTo6
bG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXNCYXNlVHlwZXMpOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk6OlNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0
eTo6flNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVn
YWN5QW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkUHJvcGVydHk6OlNWR0FuaW1hdGVkUHJvcGVydHkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0FuaW1hdGVkUHJvcGVydHkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0Q2hh
bmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHkuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBBbmltYXRlZFByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmlzQW5pbWF0aW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmlzQW5p
bWF0ZWRMaXN0VGVhck9mZiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFByb3BlcnR5Ojpjb250ZXh0RWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5OjphdHRyaWJ1dGVOYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmFuaW1hdGVkUHJv
cGVydHlUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
UHJvcGVydHk6OmlzUmVhZE9ubHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6c2V0SXNSZWFkT25seSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVy
dHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9v
a3VwQW5pbWF0ZWRQcm9wZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFByb3BlcnR5OjphbmltYXRlZFByb3BlcnR5Q2FjaGUpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeVByb3BlcnR5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmguCisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHTGlzdFByb3BlcnR5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRl
YXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VGVhck9mZjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VGVhck9mZjo6YW5pbWF0ZWRQcm9wZXJ0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRlYXJPZmY6OnNldEFuaW1hdGVk
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUZWFyT2ZmOjpTVkdQcm9w
ZXJ0eVRlYXJPZmYpOgorCiAyMDE5LTAzLTE0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGVudW0gY2xhc3MgZm9yIEFuaW1hdGlvbk1v
ZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjQyMyw4ICsyNDIzLDggQEAgc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5jcHAKIAogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZi5jcHAKLXN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3Bw
CiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVPd25lclByb3h5LmNwcAorc3ZnL3Byb3BlcnRp
ZXMvU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5jcHAKIAogd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5jcHAKIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsyNzUsNiBAQAogCQkwODhBMEUwNjEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMERGRDEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QTBFMDgxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMERGRjEyNkVGMURCMDA5NzhGN0EgLyog
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKIAkJMDg4QTBFMDkxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEwRTAwMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdM
aXN0UHJvcGVydHlUZWFyT2ZmLmggKi87IH07Ci0JCTA4OEEwRTBBMTI2RUYxREIwMDk3OEY3QSAv
KiBTVkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg4QTBFMDExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QTBFMEIxMjZFRjFE
QjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QTBFMDIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1By
b3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwODhBMEUwQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZH
UHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4OEMyRjdB
MTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QzJGNzYxMjM5MDA4MDAwM0Q2
NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggKi87IH07CkBAIC0xNzg5LDEzICsxNzg4
LDEzIEBACiAJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTc2QTU2MzFEODhBNzA4
MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTU1QTMzNkY5MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tp
bmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3JlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBRjE0RTYxRUFBQzU5
QjAwMjZFRUFBIC8qIFVUSVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NUFGMTRFNDFFQUFDNTlCMDAyNkVFQUEgLyogVVRJUmVnaXN0cnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUQ3
MEQyMzIyM0IwMTdDMDAwNDRCOEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVENzBEMjAyMjNCMDA5
MTAwMDQ0QjhFIC8qIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUVDOTU5OTIwNkFBN0EwMDA3REQw
QTkgLyogUGFpbnRGcmVxdWVuY3lUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVDOTU5NzIwNjlDOTJEMDA3REQwQTkgLyogUGFpbnRGcmVx
dWVuY3lUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTVGQTdGRjAyMTBGQTM4NjAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVGQTdGRUYyMTBGQTM4
NjAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTU1RkE3RkY1MjEwRkI2QjEwMDVBRUZFNyAvKiBTVkdBdHRy
aWJ1dGVBY2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTVGQTdGRjQyMTBGQjY4ODAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVGQTdG
RjcyMTBGQkUzRTAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUZBN0ZGNjIxMEZCRTNFMDA1QUVG
RTcgLyogU1ZHQXR0cmlidXRlUmVnaXN0cnkuaCAqLzsgfTsKIAkJNTVGQTdGRkIyMTEwRUNENzAw
NUFFRkU3IC8qIFNWR1pvb21BbmRQYW5UeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NUZBN0ZGQTIxMTBFQ0Q3MDA1QUVGRTcgLyogU1ZHWm9vbUFu
ZFBhblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1NUZBN0ZGRjIxMTEwRTZFMDA1QUVGRTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVR5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RkE3RkZF
MjExMTBFNkUwMDVBRUZFNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU1RkE4MDAxMjExMTEzRUUw
MDVBRUZFNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMERGQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5p
bWF0ZWRQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU3MDQ0MDVBMUU1MzkzNjIwMDM1NjYwMSAvKiBKU0Flc0NiY0NmYlBhcmFtcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwNDQwNTkx
RTUzOTM2MjAwMzU2NjAxIC8qIEpTQWVzQ2JjQ2ZiUGFyYW1zLmggKi87IH07CiAJCTU3MDZBNjk2
MURERTVDOTUwMEEwM0IxNCAvKiBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzA2QTY5NTFEREU1Qzk1
MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oICovOyB9OwogCQk1NzA2
QTY5ODFEREU1RTQ2MDBBMDNCMTQgLyogSlNSc2FPYWVwUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzA2QTY5NzFEREU1RTQ2MDBBMDNCMTQg
LyogSlNSc2FPYWVwUGFyYW1zLmggKi87IH07CkBAIC01NjQ3LDExICs1NjQ2LDkgQEAKIAkJMDg4
NTA2N0QxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYWludEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwODhBMERG
QzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4OEEwREZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4OEEwREZGMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
Zi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5
VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhBMEUwMDEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA4OEEwRTAxMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODhBMEUwMjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVy
dHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5
VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhBMEUwMzEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUHJvcGVydHlUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg4QzJGNzUxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2NzMsNiArODY3MCw5
IEBACiAJCTU1QUYxNEUzMUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVVElSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1QUYxNEU0MUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVVElSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUQ0MDhG
NzFBN0M2MzE4MDBDNzg0NTAgLyogU1ZHSW1hZ2VDbGllbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NUQ3MEQyMDIyM0IwMDkxMDAwNDRCOEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9w
ZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1RDcwRDIxMjIzQjAw
QkIwMDA0NEI4RSAvKiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NUQ3MEQyMjIyM0IwMEVBMDAwNDRCOEUgLyogU1ZHTGVnYWN5UHJvcGVydHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVnYWN5UHJvcGVydHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVFQzk1OTcyMDY5QzkyRDAwN0REMEE5IC8q
IFBhaW50RnJlcXVlbmN5VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWludEZyZXF1ZW5jeVRy
YWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVGQTdGRUYyMTBGQTM4NjAw
NUFFRkU3IC8qIFNWR0F0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBdHRyaWJ1dGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVGQTdGRjQyMTBGQjY4ODAwNUFFRkU3IC8q
IFNWR0F0dHJpYnV0ZUFjY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR0F0dHJpYnV0ZUFjY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDEzOCw3ICsxMDEzOCw2IEBACiAJCTgzNkQwMzJFMURBOEExMzIwMEZGRDk2QiAvKiBKU0NsaXBi
b2FyZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2xpcGJvYXJk
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2REFBMDUxQ0VBQjdDRDAw
QTJCNzA3IC8qIFJlbmRlckRlc2NlbmRhbnRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW5kZXJEZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM2RkJDRTkxNzhDMTEzMjAwQjIxQTE1IC8qIFNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM2
RkJDRUIxNzhDMTE3RjAwQjIxQTE1IC8qIFNWR0FuaW1hdGVkUHJvcGVydHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzA1Njg4MUY1MDkxNTAwMEQ5MzQyNSAvKiBK
U0ZpbGVDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0ZpbGVDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzA1Njg5
MUY1MDkxNTAwMEQ5MzQyNSAvKiBKU0ZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3MDU2OEExRjUwOTE1MDAwRDkzNDI1IC8qIEpT
RmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjE3OCw4ICsxNjE3Nyw2IEBACiAJCQkJMDg4QTBERkIxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTU1RkE3
RkZDMjExMEY4MTMwMDVBRUZFNyAvKiBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmLmNwcCAqLywKIAkJCQkwODlBOEUwNjEyOEQ4QjNEMDBFN0E1MzQgLyogU1ZHQW5pbWF0ZWRQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAotCQkJCTgzNkZCQ0VCMTc4QzExN0YwMEIy
MUExNSAvKiBTVkdBbmltYXRlZFByb3BlcnR5LmNwcCAqLywKLQkJCQkwODhBMERGQzEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oICovLAogCQkJCTA4OEEwREZEMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCAqLywKIAkJCQkw
ODhBMERGRjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCAq
LywKIAkJCQk1NUZBN0ZGRTIxMTEwRTZFMDA1QUVGRTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUuaCAqLywKQEAgLTE2MTkxLDEwICsxNjE4OCwxMiBAQAogCQkJCTU1MzQ2QUYwMjExNTBGQUYw
MDU5QkNERCAvKiBTVkdBdHRyaWJ1dGVPd25lclByb3h5LmggKi8sCiAJCQkJNTUzNDZBRkEyMTE3
RkZBRjAwNTlCQ0REIC8qIFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsLmggKi8sCiAJCQkJNTVG
QTdGRjYyMTBGQkUzRTAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmggKi8sCisJCQkJ
NTVENzBEMjEyMjNCMDBCQjAwMDQ0QjhFIC8qIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuY3Bw
ICovLAorCQkJCTU1RDcwRDIwMjIzQjAwOTEwMDA0NEI4RSAvKiBTVkdMZWdhY3lBbmltYXRlZFBy
b3BlcnR5LmggKi8sCisJCQkJNTVENzBEMjIyMjNCMDBFQTAwMDQ0QjhFIC8qIFNWR0xlZ2FjeVBy
b3BlcnR5LmggKi8sCiAJCQkJMDgxMDc2NDMxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9w
ZXJ0eS5oICovLAogCQkJCTA4OEEwRTAwMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmggKi8sCiAJCQkJMDhDQTNENDMxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJp
eFRlYXJPZmYuaCAqLywKLQkJCQkwODhBMEUwMTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVy
dHkuaCAqLywKIAkJCQkwODhBMEUwMjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFy
T2ZmLmggKi8sCiAJCQkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJh
aXRzLmggKi8sCiAJCQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCAqLywKQEAgLTMxODU5LDcgKzMxODU4LDYgQEAKIAkJCQkwODlBOEUw
NzEyOEQ4QjNEMDBFN0E1MzQgLyogU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDNCOTMzNjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0Fu
aW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEZFMEJDNTEyN0UyQUMxMDAw
QzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1NUZBODAwMTIxMTExM0VFMDA1QUVGRTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDgxMjZFRjFE
QjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NUZBN0ZGRjIxMTEwRTZFMDA1QUVGRTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVR5cGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMzE5NDgsNiArMzE5NDYsNyBAQAogCQkJCTA4NTRCMDFGMTI1
NUU0RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVGbG93Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
ODU0QjAyMTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBMzAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xhbmdTcGFjZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTVENzBEMjMyMjNCMDE3QzAwMDQ0QjhFIC8qIFNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMx
MiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzNjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzOUMz
NjUxRERBODY1MjAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtMzIwMjEsNyArMzIwMjAsNiBAQAogCQkJCUIyMjI3QTkxMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOTQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBOTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCBpbiBIZWFk
ZXJzICovLAotCQkJCTA4OEEwRTBBMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMEIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5
VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMEMxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR1Byb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5QTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCShyZXZpc2lvbiAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5nbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0FuZ2xlIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9m
ZjxTVkdBbmdsZVZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdBbmdsZT4gY3Jl
YXRlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9s
ZSByb2xlLCBTVkdBbmdsZVZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBj
cmVhdGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJv
cGVydHlSb2xlIHJvbGUsIFNWR0FuZ2xlVmFsdWUmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5nbGUoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUp
KTsKICAgICB9CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBTVkdBbmdsZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQ
cm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUpCisgICAgU1ZHQW5nbGUoU1ZH
TGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xl
IHJvbGUsIFNWR0FuZ2xlVmFsdWUmIHZhbHVlKQogICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9m
ZjxTVkdBbmdsZVZhbHVlPigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAgICAgewog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCShyZXZpc2lv
biAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CitjbGFzcyBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5
OwogCiBjbGFzcyBTVkdBbmltYXRlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlRWxl
bWVudEJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHQW5pbWF0ZUVsZW1lbnQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJ
KHJldmlzaW9uIDI0Mjk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNSArMjEsMTUgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRUeXBlLmgiCisjaW5jbHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydGllcyB7CiAgICAgU1ZHRWxlbWVudCogZWxlbWVu
dDsKLSAgICBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+PiBwcm9wZXJ0aWVzOwor
ICAgIFZlY3RvcjxSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4+IHByb3BlcnRpZXM7
CiB9OwogdHlwZWRlZiBWZWN0b3I8U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydGllcz4gU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0OwogCkBAIC0xNjYsNyArMTY2LDcgQEAgcHJvdGVjdGVk
OgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1WYWxUeXBlPgotICAgIEFuaW1W
YWxUeXBlKiBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZShTVkdBbmltYXRlZFByb3Bl
cnR5KiBwcm9wZXJ0eSkKKyAgICBBbmltVmFsVHlwZSogY2FzdEFuaW1hdGVkUHJvcGVydHlUb0Fj
dHVhbFR5cGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSogcHJvcGVydHkpCiAgICAgewogICAg
ICAgICBBU1NFUlQocHJvcGVydHkpOwogICAgICAgICBBU1NFUlQocHJvcGVydHktPmNvbnRleHRF
bGVtZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyNDI5NzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDYsOSArMTQ2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3luY2hyb25pemVBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgeyBhdHRyaWJ1dGVPd25lclByb3h5KCkuc3luY2hyb25p
emVBdHRyaWJ1dGUobmFtZSk7IH0KICAgICB2b2lkIHN5bmNocm9uaXplQXR0cmlidXRlcygpIHsg
YXR0cmlidXRlT3duZXJQcm94eSgpLnN5bmNocm9uaXplQXR0cmlidXRlcygpOyB9CiAgICAgVmVj
dG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiBhbmltYXRlZFR5cGVzKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0IHsgcmV0dXJuIGF0dHJpYnV0ZU93bmVyUHJveHkoKS5h
bmltYXRlZFR5cGVzKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJv
cGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHQXR0cmlidXRlJiBhdHRyaWJ1
dGUpIGNvbnN0IHsgcmV0dXJuIGF0dHJpYnV0ZU93bmVyUHJveHkoKS5sb29rdXBBbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9v
a3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRl
KSB7IHJldHVybiBhdHRyaWJ1dGVPd25lclByb3h5KCkubG9va3VwT3JDcmVhdGVBbmltYXRlZFBy
b3BlcnR5KGF0dHJpYnV0ZSk7IH0KLSAgICBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVy
dHk+PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lKSB7IHJldHVybiBhdHRyaWJ1dGVPd25lclByb3h5KCkubG9va3VwT3JDcmVhdGVBbmlt
YXRlZFByb3BlcnRpZXMobmFtZSk7IH0KKyAgICBSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9w
ZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0
ZSkgY29uc3QgeyByZXR1cm4gYXR0cmlidXRlT3duZXJQcm94eSgpLmxvb2t1cEFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlKTsgfQorICAgIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5
PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHQXR0cmlidXRlJiBhdHRy
aWJ1dGUpIHsgcmV0dXJuIGF0dHJpYnV0ZU93bmVyUHJveHkoKS5sb29rdXBPckNyZWF0ZUFuaW1h
dGVkUHJvcGVydHkoYXR0cmlidXRlKTsgfQorICAgIFZlY3RvcjxSZWZQdHI8U1ZHTGVnYWN5QW5p
bWF0ZWRQcm9wZXJ0eT4+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVzKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpIHsgcmV0dXJuIGF0dHJpYnV0ZU93bmVyUHJveHkoKS5sb29rdXBP
ckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhuYW1lKTsgfQogCiAgICAgLy8gVGhlc2UgYXJlIG5l
ZWRlZCBmb3IgdGhlIFJlbmRlclRyZWUsIGFuaW1hdGlvbiBhbmQgRE9NLgogICAgIGNvbnN0IGF1
dG8mIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NOYW1lLmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCShyZXZp
c2lvbiAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICBTVkdfTEVOR1RIVFlQRV9Q
QyA9IExlbmd0aFR5cGVQQwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aD4gY3Jl
YXRlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9s
ZSByb2xlLCBTVkdMZW5ndGhWYWx1ZSYgdmFsdWUpCisgICAgc3RhdGljIFJlZjxTVkdMZW5ndGg+
IGNyZWF0ZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQ
cm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTGVuZ3RoVmFsdWUmIHZhbHVlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoKGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZh
bHVlKSk7CiAgICAgfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgU1ZHTGVuZ3RoKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHks
IFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdMZW5ndGhWYWx1ZSYgdmFsdWUpCisgICAgU1ZHTGVu
Z3RoKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3Bl
cnR5Um9sZSByb2xlLCBTVkdMZW5ndGhWYWx1ZSYgdmFsdWUpCiAgICAgICAgIDogU1ZHUHJvcGVy
dHlUZWFyT2ZmPFNWR0xlbmd0aFZhbHVlPigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUp
CiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmgJKHJldmlzaW9uIDI0Mjk3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
Y2xhc3Mgb25jZSBTVkdNYXRyaXggYmVjb21lcyBhbiBhbGlhcyB0byBET01NYXRyaXguCiBjbGFz
cyBTVkdNYXRyaXggOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR01hdHJpeFZhbHVlPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdNYXRyaXg+IGNyZWF0ZShTVkdBbmltYXRlZFBy
b3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTWF0cml4
VmFsdWUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHTWF0cml4PiBjcmVhdGUoU1ZHTGVnYWN5
QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUs
IFNWR01hdHJpeFZhbHVlJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR01hdHJpeChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KQEAg
LTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHTWF0
cml4KFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9s
ZSByb2xlLCBTVkdNYXRyaXhWYWx1ZSYgdmFsdWUpCisgICAgU1ZHTWF0cml4KFNWR0xlZ2FjeUFu
aW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBT
VkdNYXRyaXhWYWx1ZSYgdmFsdWUpCiAgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR01h
dHJpeFZhbHVlPigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAgICAgewogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyLmgJKHJldmlzaW9uIDI0Mjk3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdOdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR051bWJlciA6IHB1YmxpYyBTVkdQcm9wZXJ0
eVRlYXJPZmY8ZmxvYXQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR051bWJlcj4gY3Jl
YXRlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9s
ZSByb2xlLCBmbG9hdCYgdmFsdWUpCisgICAgc3RhdGljIFJlZjxTVkdOdW1iZXI+IGNyZWF0ZShT
VkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgZmxvYXQmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHTnVtYmVyKGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR051bWJlcihT
VkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9s
ZSwgZmxvYXQmIHZhbHVlKQorICAgIFNWR051bWJlcihTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5
JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgZmxvYXQmIHZhbHVlKQog
ICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxmbG9hdD4oJmFuaW1hdGVkUHJvcGVydHksIHJv
bGUsIHZhbHVlKQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI0Mjk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw3ICsyODMsNyBAQCBQYXRoIFNWR1Bh
dGhFbGVtZW50OjpwYXRoRm9yQnl0ZVN0cmVhbSgpCiAgICAgcmV0dXJuIGJ1aWxkUGF0aEZyb21C
eXRlU3RyZWFtKHBhdGhCeXRlU3RyZWFtVG9Vc2UpOwogfQogCi1SZWZQdHI8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eT4gU1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIoKQorUmVmUHRy
PFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IFNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0
ZURXcmFwcGVyKCkKIHsKICAgICByZXR1cm4gbV9wYXRoU2VnTGlzdC5hbmltYXRlZFByb3BlcnR5
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuaAkocmV2aXNpb24gMjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQo
KTsgfQogICAgIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZURXcmFw
cGVyKCk7CisgICAgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3Jl
YXRlRFdyYXBwZXIoKTsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmlu
YWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAkocmV2aXNpb24g
MjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBTVkdQYXRoRWxlbWVudCogU1ZHUGF0aFNlZ0xpc3Q6
OmNvbnRleHRFCiBib29sIFNWR1BhdGhTZWdMaXN0Ojpwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVZh
bHVlKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkp
CiB7CiAgICAgU1ZHUGF0aFNlZ1dpdGhDb250ZXh0KiBuZXdJdGVtV2l0aENvbnRleHQgPSBzdGF0
aWNfY2FzdDxTVkdQYXRoU2VnV2l0aENvbnRleHQqPihuZXdJdGVtLmdldCgpKTsKLSAgICBSZWZQ
dHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSA9IG5ld0l0ZW1X
aXRoQ29udGV4dC0+YW5pbWF0ZWRQcm9wZXJ0eSgpOworICAgIFJlZlB0cjxTVkdMZWdhY3lBbmlt
YXRlZFByb3BlcnR5PiBhbmltYXRlZFByb3BlcnR5T2ZJdGVtID0gbmV3SXRlbVdpdGhDb250ZXh0
LT5hbmltYXRlZFByb3BlcnR5KCk7CiAKICAgICAvLyBBbHRlciB0aGUgcm9sZSwgYWZ0ZXIgY2Fs
bGluZyBhbmltYXRlZFByb3BlcnR5KCksIGFzIHRoYXQgbWF5IGluZmx1ZW5jZSB0aGUgcmV0dXJu
ZWQgYW5pbWF0ZWQgcHJvcGVydHkuCiAgICAgbmV3SXRlbVdpdGhDb250ZXh0LT5zZXRDb250ZXh0
QW5kUm9sZShjb250ZXh0RWxlbWVudCgpLCBtX3BhdGhTZWdSb2xlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnV2l0aENvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ1dpdGhDb250ZXh0LmgJKHJldmlzaW9uIDI0Mjk3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnV2l0aENvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxT
VkdBbmltYXRlZFByb3BlcnR5PiBhbmltYXRlZFByb3BlcnR5KCkgY29uc3QKKyAgICBSZWZQdHI8
U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4gYW5pbWF0ZWRQcm9wZXJ0eSgpIGNvbnN0CiAgICAg
ewogICAgICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BvaW50LmgJKHJldmlzaW9uIDI0Mjk3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUG9pbnQgOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFy
T2ZmPEZsb2F0UG9pbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR1BvaW50PiBjcmVh
dGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xl
IHJvbGUsIEZsb2F0UG9pbnQmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHUG9pbnQ+IGNyZWF0
ZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0
eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdQb2ludChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAg
IH0KQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFNW
R1BvaW50KFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5
Um9sZSByb2xlLCBGbG9hdFBvaW50JiB2YWx1ZSkKKyAgICBTVkdQb2ludChTVkdMZWdhY3lBbmlt
YXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxv
YXRQb2ludCYgdmFsdWUpCiAgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+
KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKICAgICB7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiAyNDI5
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJl
c2VydmVBc3BlY3RSYXRpb1ZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvPiBjcmVhdGUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9w
ZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYg
dmFsdWUpCisgICAgc3RhdGljIFJlZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiBjcmVhdGUoU1ZH
TGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xl
IHJvbGUsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgdmFsdWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKGFuaW1hdGVkUHJv
cGVydHksIHJvbGUsIHZhbHVlKSk7CiAgICAgfQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZSYgdmFsdWUpCisgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyhT
VkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiB2YWx1ZSkKICAgICAgICAgOiBT
VkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPigmYW5pbWF0ZWRQ
cm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3Qu
aAkocmV2aXNpb24gMjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNWR1JlY3QgOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UmVjdD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U1ZHUmVjdD4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFu
aW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFJlY3QmIHZhbHVlKQor
ICAgIHN0YXRpYyBSZWY8U1ZHUmVjdD4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkm
IGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFJlY3QmIHZhbHVl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUmVjdChhbmltYXRlZFBy
b3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR1JlY3QoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5p
bWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIEZsb2F0UmVjdCYgdmFsdWUpCisg
ICAgU1ZHUmVjdChTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBT
VkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRSZWN0JiB2YWx1ZSkKICAgICAgICAgOiBTVkdQcm9w
ZXJ0eVRlYXJPZmY8RmxvYXRSZWN0PigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCiAg
ICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgJKHJldmlzaW9uIDI0
Mjk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1RyYW5z
Zm9ybSA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtVmFsdWU+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlKFNWR0FuaW1hdGVkUHJv
cGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zv
cm1WYWx1ZSYgdmFsdWUpCisgICAgc3RhdGljIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZShTVkdM
ZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUg
cm9sZSwgU1ZHVHJhbnNmb3JtVmFsdWUmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHVHJhbnNmb3JtKGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7
CiAgICAgfQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgU1ZHVHJhbnNmb3JtKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNW
R1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1WYWx1ZSYgdmFsdWUpCisgICAgU1ZHVHJh
bnNmb3JtKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1By
b3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1WYWx1ZSYgdmFsdWUpCiAgICAgICAgIDogU1ZH
UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybVZhbHVlPigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9s
ZSwgdmFsdWUpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5o
CShyZXZpc2lvbiAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIK
KyNpbmNsdWRlICJTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHTGlz
dFByb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCIKIApAQCAtMzAsNyArMzAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+
CiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5
VHlwZT4KLWNsYXNzIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5IHsKK2NsYXNzIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA6
IHB1YmxpYyBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5IHsKIHB1YmxpYzoKICAgICB1c2luZyBM
aXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpM
aXN0SXRlbVR5cGU7CiAgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gdHlwZW5hbWUgU1ZHUHJv
cGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UZWFyT2ZmOwpAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0eTsgfQogICAgIGJvb2wgaXNBbmltYXRlZExpc3RUZWFyT2Zm
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgaW50IGZpbmRJdGVtKFNW
R1Byb3BlcnR5KiBwcm9wZXJ0eSkKKyAgICBpbnQgZmluZEl0ZW0oU1ZHTGVnYWN5UHJvcGVydHkq
IHByb3BlcnR5KQogICAgIHsKICAgICAgICAgLy8gVGhpcyBzaG91bGQgZXZlciBiZSBjYWxsZWQg
Zm9yIG91ciBiYXNlVmFsLCBhcyBhbmltVmFsIGNhbid0IG1vZGlmeSB0aGUgbGlzdC4KICAgICAg
ICAgcmV0dXJuIGJhc2VWYWwoKS0+ZmluZEl0ZW0oc3RhdGljX2Nhc3Q8TGlzdEl0ZW1UZWFyT2Zm
Kj4ocHJvcGVydHkpKTsKQEAgLTE2Miw3ICsxNjIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVy
dHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKLSAgICAg
ICAgOiBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZFByb3BlcnR5VHlwZSkKKyAgICAgICAgOiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5
KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSkKICAg
ICAgICAgLCBtX3ZhbHVlcyh2YWx1ZXMpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlcy5pc0Vt
cHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5LmNwcAkocmV2aXNpb24gMjQyOTcxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEz
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCi0KLSNpbmNsdWRlICJT
VkdFbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0
ZWRQcm9wZXJ0eVR5cGUpCi0gICAgOiBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQot
ICAgICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCi0gICAgLCBtX2FuaW1hdGVkUHJv
cGVydHlUeXBlKGFuaW1hdGVkUHJvcGVydHlUeXBlKQotewotfQotCi1TVkdBbmltYXRlZFByb3Bl
cnR5Ojp+U1ZHQW5pbWF0ZWRQcm9wZXJ0eSgpCi17Ci0gICAgLy8gQXNzdXJlIHRoYXQgYW5pbWF0
aW9uRW5kZWQoKSB3YXMgY2FsbGVkLCBpZiBhbmltYXRpb25TdGFydGVkKCkgd2FzIGNhbGxlZCBi
ZWZvcmUuCi0gICAgQVNTRVJUKCFpc0FuaW1hdGluZygpKTsKLQotICAgIC8vIFJlbW92ZSB3cmFw
cGVyIGZyb20gY2FjaGUuCi0gICAgZm9yIChhdXRvJiBjYWNoZSA6IGFuaW1hdGVkUHJvcGVydHlD
YWNoZSgpKSB7Ci0gICAgICAgIGlmIChjYWNoZS52YWx1ZSA9PSB0aGlzKSB7Ci0gICAgICAgICAg
ICBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS5yZW1vdmUoY2FjaGUua2V5KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0Q2hhbmdlKCkKLXsK
LSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgQVNTRVJUKCFtX2NvbnRleHRFbGVt
ZW50LT5tX2RlbGV0aW9uSGFzQmVndW4pOwotICAgIG1fY29udGV4dEVsZW1lbnQtPmludmFsaWRh
dGVTVkdBdHRyaWJ1dGVzKCk7Ci0gICAgbV9jb250ZXh0RWxlbWVudC0+c3ZnQXR0cmlidXRlQ2hh
bmdlZChtX2F0dHJpYnV0ZU5hbWUpOwotICAgIC8vIE5lZWRlZCB0byBzeW5jaHJvbml6ZSB3aXRo
IENTU09NIGZvciBwcmVzZW50YXRpb24gYXR0cmlidXRlcyB3aXRoIFNWRyBET00uCi0gICAgbV9j
b250ZXh0RWxlbWVudC0+c3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZShtX2F0dHJpYnV0
ZU5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lv
biAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJvcGVydHlUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdFbGVtZW50OwotY2xhc3MgU1ZHUHJvcGVy
dHk7Ci0KLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdB
bmltYXRlZFByb3BlcnR5PiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRMaXN0VGVhck9mZigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnQuZ2V0KCk7IH0KLSAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVOYW1lOyB9Ci0g
ICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2FuaW1hdGVkUHJvcGVydHlUeXBlOyB9Ci0gICAgYm9vbCBpc1JlYWRPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV9pc1JlYWRPbmx5OyB9Ci0gICAgdm9pZCBzZXRJc1JlYWRPbmx5KCkgeyBt
X2lzUmVhZE9ubHkgPSB0cnVlOyB9Ci0KLSAgICB2b2lkIGNvbW1pdENoYW5nZSgpOwotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgQW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRUeXBlPgotICAgIHN0YXRpYyBSZWZQdHI8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KFNWR0VsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaWRlbnRpZmllciwgUHJvcGVydHlUeXBlJiBwcm9wZXJ0eSwgQW5pbWF0ZWRQcm9w
ZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpCi0gICAgewotICAgICAgICBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb24ga2V5KCZlbGVtZW50LCBpZGVudGlmaWVyKTsKLQotICAgICAgICBhdXRv
IHJlc3VsdCA9IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLmFkZChrZXksIG51bGxwdHIpOwotICAg
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7Ci0KLSAgICAgICAgYXV0byB3cmFwcGVyID0gVGVhck9mZlR5cGU6OmNy
ZWF0ZSgmZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRUeXBlLCBwcm9wZXJ0eSk7Ci0g
ICAgICAgIGlmIChhbmltYXRlZFN0YXRlID09IFByb3BlcnR5SXNSZWFkT25seSkKLSAgICAgICAg
ICAgIHdyYXBwZXItPnNldElzUmVhZE9ubHkoKTsKLQotICAgICAgICAvLyBDYWNoZSB0aGUgcmF3
IHBvaW50ZXIgYnV0IHJldHVybiBhIFJlZlB0cjw+LiBUaGlzIHdpbGwgYnJlYWsgdGhlIGN5Y2xp
YyByZWZlcmVuY2UKLSAgICAgICAgLy8gYmV0d2VlbiBTVkdBbmltYXRlZFByb3BlcnR5IGFuZCBT
VkdFbGVtZW50IG9uY2UgdGhlIHByb3BlcnR5IHBvaW50ZXIgaXMgbm90IG5lZWRlZC4KLSAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7Ci0gICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4od3JhcHBlcik7Ci0g
ICAgfQotCi0gICAgc3RhdGljIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmlt
YXRlZFByb3BlcnR5KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlw
dGlvbiBrZXkoY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4oJmVsZW1lbnQpLCBpZGVudGlmaWVyKTsK
LSAgICAgICAgcmV0dXJuIGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLmdldChrZXkpOwotICAgIH0K
LQotcHJvdGVjdGVkOgotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoU1ZHRWxlbWVudCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBBbmltYXRlZFByb3BlcnR5VHlwZSk7Ci0KLXByaXZhdGU6Ci0gICAg
Ly8gQ2FjaGluZyBmYWNpbGl0aWVzLgotICAgIHVzaW5nIENhY2hlID0gSGFzaE1hcDxTVkdBbmlt
YXRlZFByb3BlcnR5RGVzY3JpcHRpb24sIFNWR0FuaW1hdGVkUHJvcGVydHkqLCBTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoLCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb25I
YXNoVHJhaXRzPjsKLSAgICBzdGF0aWMgQ2FjaGUmIGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpCi0g
ICAgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+IGNhY2hlOwotICAgICAg
ICByZXR1cm4gY2FjaGU7Ci0gICAgfQotCi0gICAgUmVmUHRyPFNWR0VsZW1lbnQ+IG1fY29udGV4
dEVsZW1lbnQ7Ci0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9hdHRyaWJ1dGVOYW1lOwotICAg
IEFuaW1hdGVkUHJvcGVydHlUeXBlIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGU7Ci0KLXByb3RlY3Rl
ZDoKLSAgICBib29sIG1faXNSZWFkT25seSB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDI0Mjk3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDEzICsyMCwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdMZWdhY3lBbmltYXRlZFByb3Bl
cnR5LmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2ZmLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHlU
ZWFyT2ZmIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHkgeworY2xhc3MgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmYgZmluYWwgOiBwdWJsaWMgU1ZHTGVnYWN5QW5pbWF0ZWRQcm9w
ZXJ0eSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUHJvcGVydHlUZWFyT2ZmID0gVDsKICAgICB1c2lu
ZyBQcm9wZXJ0eVR5cGUgPSB0eXBlbmFtZSBQcm9wZXJ0eVRlYXJPZmY6OlByb3BlcnR5VHlwZTsK
QEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVy
dHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQotICAgICAgICA6IFNWR0FuaW1hdGVkUHJv
cGVydHkoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBl
KQorICAgICAgICA6IFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlKQogICAgICAgICAsIG1fcHJvcGVydHko
cHJvcGVydHkpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJP
ZmYuaAkocmV2aXNpb24gMjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMjEs
MTIgKzIxLDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQcm9wZXJ0eVR5cGU+Ci1jbGFzcyBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZiA6
IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5IHsKK2NsYXNzIFNWR0FuaW1hdGVkU3RhdGljUHJv
cGVydHlUZWFyT2ZmIDogcHVibGljIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkgewogcHVibGlj
OgogICAgIHR5cGVkZWYgUHJvcGVydHlUeXBlIENvbnRlbnRUeXBlOwogCkBAIC0xMDAsNyArMTAw
LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0
eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBl
LCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQotICAgICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHko
Y29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlKQorICAg
ICAgICA6IFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlKQogICAgICAgICAsIG1fcHJvcGVydHkocHJvcGVy
dHkpCiAgICAgICAgICwgbV9hbmltYXRlZFByb3BlcnR5KG51bGxwdHIpCiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQWNjZXNzb3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBY2Nl
c3Nvci5oCShyZXZpc2lvbiAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNyw5IEBA
CiAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgotI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3Bl
cnR5VHlwZS5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIlNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKQEAgLTU4LDkg
KzU4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0
ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gQW5pbWF0ZWRVbmtub3duOyB9CiAgICAgdmlydHVhbCBW
ZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+IGFuaW1hdGVkVHlwZXMoKSBjb25zdCB7IHJldHVy
biB7IGFuaW1hdGVkVHlwZSgpIH07IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFNWR0FuaW1hdGVk
UHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShPd25lclR5cGUmLCBTVkdF
bGVtZW50JiwgY29uc3QgU1ZHQXR0cmlidXRlJiwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9OwotICAgIHZpcnR1YWwgUmVmUHRyPFNWR0FuaW1hdGVkUHJv
cGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZH
RWxlbWVudCYsIGNvbnN0IFNWR0F0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07
Ci0gICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+PiBsb29rdXBP
ckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhPd25lclR5cGUmLCBTVkdFbGVtZW50JiwgQW5pbWF0
ZWRQcm9wZXJ0eVN0YXRlKSBjb25zdCB7IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIFJlZlB0
cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVy
dHkoT3duZXJUeXBlJiwgU1ZHRWxlbWVudCYsIGNvbnN0IFNWR0F0dHJpYnV0ZSYsIEFuaW1hdGVk
UHJvcGVydHlTdGF0ZSkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmltYXRlZFByb3BlcnR5KGNv
bnN0IE93bmVyVHlwZSYsIGNvbnN0IFNWR0VsZW1lbnQmLCBjb25zdCBTVkdBdHRyaWJ1dGUmKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9OworICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxTVkdM
ZWdhY3lBbmltYXRlZFByb3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMo
T3duZXJUeXBlJiwgU1ZHRWxlbWVudCYsIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSkgY29uc3QgeyBy
ZXR1cm4geyB9OyB9CiAKIHByb3RlY3RlZDoKICAgICBjb25zdCBRdWFsaWZpZWROYW1lIG1fYXR0
cmlidXRlTmFtZTsKQEAgLTEzNiwzMSArMTM2LDMxIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VGVhck9mZiA9IFByb3BlcnR5VGVhck9mZlR5
cGUsIHR5cGVuYW1lIFByb3BlcnR5ID0gUHJvcGVydHlUeXBlLCBBbmltYXRlZFByb3BlcnR5VHlw
ZSBhbmltYXRlZFR5cGUgPSB0eXBlPgotICAgIHN0YXRpYyBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KFNWR0VsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
aWRlbnRpZmllciwgUHJvcGVydHkmIHByb3BlcnR5LCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5p
bWF0ZWRTdGF0ZSkKKyAgICBzdGF0aWMgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+
IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50
aWZpZXIsIFByb3BlcnR5JiBwcm9wZXJ0eSwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVk
U3RhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3Vw
T3JDcmVhdGVBbmltYXRlZFByb3BlcnR5PFByb3BlcnR5VGVhck9mZiwgUHJvcGVydHksIGFuaW1h
dGVkVHlwZT4oZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgaWRlbnRpZmllciwgcHJvcGVydHksIGFu
aW1hdGVkU3RhdGUpOworICAgICAgICByZXR1cm4gU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eTo6
bG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5PFByb3BlcnR5VGVhck9mZiwgUHJvcGVydHks
IGFuaW1hdGVkVHlwZT4oZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgaWRlbnRpZmllciwgcHJvcGVy
dHksIGFuaW1hdGVkU3RhdGUpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBTVkdFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZlB0cjxT
VkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmltYXRlZFByb3BlcnR5KGNvbnN0IFNW
R0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBBbmltYXRlZFByb3Bl
cnR5KGVsZW1lbnQsIGlkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gU1ZHTGVnYWN5QW5pbWF0
ZWRQcm9wZXJ0eTo6bG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShlbGVtZW50LCBpZGVudGlmaWVyKTsK
ICAgICB9CiAKICAgICBib29sIGlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBzdGQ6OmlzX3NhbWU8UHJvcGVydHlUeXBlLCBTVkdMZW5ndGhWYWx1ZT46
OnZhbHVlOyB9CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHlwZTsgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVy
dHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShPd25lclR5cGUmIG93bmVyLCBTVkdF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgQW5pbWF0ZWRQ
cm9wZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPFNW
R0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShP
d25lclR5cGUmIG93bmVyLCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGF0dHJpYnV0ZSwgaXNNYXRjaGVk
KG93bmVyLCBhdHRyaWJ1dGUpKTsKICAgICAgICAgcmV0dXJuIGxvb2t1cE9yQ3JlYXRlQW5pbWF0
ZWRQcm9wZXJ0eShlbGVtZW50LCBtX2F0dHJpYnV0ZU5hbWUsIG1faWRlbnRpZmllciwgdGhpcy0+
YXR0cmlidXRlKG93bmVyKS52YWx1ZSgpLCBhbmltYXRlZFN0YXRlKTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBP
d25lclR5cGUmLCBjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUm
KSBjb25zdCBvdmVycmlkZQorICAgIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBs
b29rdXBBbmltYXRlZFByb3BlcnR5KGNvbnN0IE93bmVyVHlwZSYsIGNvbnN0IFNWR0VsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAg
ICAgICByZXR1cm4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShlbGVtZW50LCBtX2lkZW50aWZpZXIp
OwogICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+IGxvb2t1
cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVzKE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQm
IGVsZW1lbnQsIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSBhbmltYXRlZFN0YXRlKSBjb25zdCBvdmVy
cmlkZQorICAgIFZlY3RvcjxSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4+IGxvb2t1
cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVzKE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQm
IGVsZW1lbnQsIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSBhbmltYXRlZFN0YXRlKSBjb25zdCBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIHsgbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3Bl
cnR5KGVsZW1lbnQsIG1fYXR0cmlidXRlTmFtZSwgbV9pZGVudGlmaWVyLCBhdHRyaWJ1dGUob3du
ZXIpLnZhbHVlKCksIGFuaW1hdGVkU3RhdGUpIH07CiAgICAgfQpAQCAtMjE0LDcgKzIxNCw3IEBA
IHByaXZhdGU6CiAKICAgICBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+IGFuaW1hdGVkVHlw
ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IHR5cGUsIHNlY29uZFR5cGUgfTsgfQogCi0g
ICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9w
ZXJ0eShPd25lclR5cGUmIG93bmVyLCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdBdHRy
aWJ1dGUmIGF0dHJpYnV0ZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpIGNv
bnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IGxvb2t1
cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShPd25lclR5cGUmIG93bmVyLCBTVkdFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0
YXRlIGFuaW1hdGVkU3RhdGUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoQmFz
ZTo6aXNNYXRjaGVkKG93bmVyLCBhdHRyaWJ1dGUpKQogICAgICAgICAgICAgcmV0dXJuIGxvb2t1
cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShlbGVtZW50LCBtX2F0dHJpYnV0ZU5hbWUsIG1faWRl
bnRpZmllciwgdGhpcy0+YXR0cmlidXRlKG93bmVyKS52YWx1ZSgpLCBhbmltYXRlZFN0YXRlKTsK
QEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gQmFzZTo6dGVtcGxh
dGUgbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5PFNlY29uZFByb3BlcnR5VGVhck9mZlR5
cGUsIFNlY29uZFByb3BlcnR5VHlwZSwgc2Vjb25kVHlwZT4oZWxlbWVudCwgbV9hdHRyaWJ1dGVO
YW1lLCBtX3NlY29uZElkZW50aWZpZXIsIHNlY29uZEF0dHJpYnV0ZShvd25lcikudmFsdWUoKSwg
YW5pbWF0ZWRTdGF0ZSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+
IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlJiBvd25lciwgY29uc3QgU1ZH
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU1ZHQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0IG92
ZXJyaWRlCisgICAgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+IGxvb2t1cEFuaW1h
dGVkUHJvcGVydHkoY29uc3QgT3duZXJUeXBlJiBvd25lciwgY29uc3QgU1ZHRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgU1ZHQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBpZiAoQmFzZTo6aXNNYXRjaGVkKG93bmVyLCBhdHRyaWJ1dGUpKQogICAgICAg
ICAgICAgcmV0dXJuIGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoZWxlbWVudCwgbV9pZGVudGlmaWVy
KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbG9va3VwQW5p
bWF0ZWRQcm9wZXJ0eShlbGVtZW50LCBtX3NlY29uZElkZW50aWZpZXIpOwogICAgIH0KIAotICAg
IFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0
ZWRQcm9wZXJ0aWVzKE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVsZW1lbnQsIEFuaW1h
dGVkUHJvcGVydHlTdGF0ZSBhbmltYXRlZFN0YXRlKSBjb25zdCBvdmVycmlkZQorICAgIFZlY3Rv
cjxSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0
ZWRQcm9wZXJ0aWVzKE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVsZW1lbnQsIEFuaW1h
dGVkUHJvcGVydHlTdGF0ZSBhbmltYXRlZFN0YXRlKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgIGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0
eShlbGVtZW50LCBtX2F0dHJpYnV0ZU5hbWUsIG1faWRlbnRpZmllciwgYXR0cmlidXRlKG93bmVy
KS52YWx1ZSgpLCBhbmltYXRlZFN0YXRlKSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZU93bmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVPd25lclByb3h5LmgJKHJldmlzaW9uIDI0
Mjk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZU93bmVy
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CiBjbGFzcyBTVkdBdHRyaWJ1dGU7
CiBjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eTsKIAog
Y2xhc3MgU1ZHQXR0cmlidXRlT3duZXJQcm94eSB7CiBwdWJsaWM6CkBAIC00Nyw5ICs0Nyw5IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiBhbmlt
YXRlZFR5cGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVy
dHkoY29uc3QgU1ZHQXR0cmlidXRlJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNW
R0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHQXR0cmli
dXRlJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFBy
b3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFBy
b3BlcnR5PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHQXR0cmlidXRl
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVy
dHk+IGxvb2t1cEFuaW1hdGVkUHJvcGVydHkoY29uc3QgU1ZHQXR0cmlidXRlJikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Pj4g
bG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFdlYWtQdHI8U1ZHRWxlbWVudD4gbV9lbGVtZW50
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlT3duZXJQ
cm94eUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbC5oCShyZXZpc2lvbiAyNDI5NzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSwxNyArODEsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZVJlZ2lzdHJ5KCkuYW5pbWF0ZWRUeXBlcyhhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFBy
b3BlcnR5KGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdCBvdmVycmlkZQorICAg
IFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZUFuaW1hdGVk
UHJvcGVydHkoY29uc3QgU1ZHQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICByZXR1cm4gYXR0cmlidXRlUmVnaXN0cnkoKS5sb29rdXBPckNyZWF0ZUFu
aW1hdGVkUHJvcGVydHkobV9vd25lciwgKm1fZWxlbWVudCwgYXR0cmlidXRlLCBtX2FuaW1hdGVk
U3RhdGUpOwogICAgIH0KIAotICAgIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBB
bmltYXRlZFByb3BlcnR5KGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdCBvdmVy
cmlkZQorICAgIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmltYXRl
ZFByb3BlcnR5KGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkubG9va3VwQW5pbWF0ZWRQ
cm9wZXJ0eShtX293bmVyLCAqbV9lbGVtZW50LCBhdHRyaWJ1dGUpOwogICAgIH0KIAotICAgIFZl
Y3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQ
cm9wZXJ0aWVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0IG92ZXJy
aWRlCisgICAgVmVjdG9yPFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Pj4gbG9va3Vw
T3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVSZWdp
c3RyeSgpLmxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVzKG1fb3duZXIsICptX2VsZW1l
bnQsIGF0dHJpYnV0ZU5hbWUsIG1fYW5pbWF0ZWRTdGF0ZSk7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5o
CShyZXZpc2lvbiAyNDI5NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsMTEgQEAKICNp
bmNsdWRlICJTVkdBbmltYXRlZE51bWJlckxpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBv
aW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFJl
Y3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCisj
aW5jbHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNWR1N0cmlu
Z0xpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdab29tQW5kUGFuVHlwZS5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC0yMDEsMjEgKzIwMSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBzeW5jaHJvbml6ZUF0dHJpYnV0ZUJhc2VUeXBlcyhvd25lciwgZWxlbWVudCwgYXR0cmli
dXRlTmFtZSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1
cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShPd25lclR5cGUmIG93bmVyLCBTVkdFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0
YXRlIGFuaW1hdGVkU3RhdGUpIGNvbnN0CisgICAgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJv
cGVydHk+IGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShPd25lclR5cGUmIG93bmVyLCBT
VkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgQW5pbWF0
ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
Y29uc3QgYXV0byogYXR0cmlidXRlQWNjZXNzb3IgPSBmaW5kQXR0cmlidXRlQWNjZXNzb3Iob3du
ZXIsIGF0dHJpYnV0ZSkpCiAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlQWNjZXNzb3ItPmxv
b2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShvd25lciwgZWxlbWVudCwgYXR0cmlidXRlLCBh
bmltYXRlZFN0YXRlKTsKICAgICAgICAgcmV0dXJuIGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9w
ZXJ0eUJhc2VUeXBlcyhvd25lciwgZWxlbWVudCwgYXR0cmlidXRlLCBhbmltYXRlZFN0YXRlKTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQ
cm9wZXJ0eShjb25zdCBPd25lclR5cGUmIG93bmVyLCBjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKKyAgICBSZWZQdHI8U1ZHTGVn
YWN5QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBPd25lclR5
cGUmIG93bmVyLCBjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChjb25zdCBhdXRvKiBhdHRyaWJ1
dGVBY2Nlc3NvciA9IGZpbmRBdHRyaWJ1dGVBY2Nlc3Nvcihvd25lciwgYXR0cmlidXRlKSkKICAg
ICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVBY2Nlc3Nvci0+bG9va3VwQW5pbWF0ZWRQcm9wZXJ0
eShvd25lciwgZWxlbWVudCwgYXR0cmlidXRlKTsKICAgICAgICAgcmV0dXJuIGxvb2t1cEFuaW1h
dGVkUHJvcGVydHlCYXNlVHlwZXMob3duZXIsIGVsZW1lbnQsIGF0dHJpYnV0ZSk7CiAgICAgfQog
Ci0gICAgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVB
bmltYXRlZFByb3BlcnRpZXMoT3duZXJUeXBlJiBvd25lciwgU1ZHRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRl
IGFuaW1hdGVkU3RhdGUpIGNvbnN0CisgICAgVmVjdG9yPFJlZlB0cjxTVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5Pj4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoT3duZXJUeXBlJiBv
d25lciwgU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoY29uc3QgYXV0byogYXR0cmlidXRlQWNjZXNzb3IgPSBmaW5kQXR0cmlidXRl
QWNjZXNzb3IoYXR0cmlidXRlTmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlQWNj
ZXNzb3ItPmxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0aWVzKG93bmVyLCBlbGVtZW50LCBh
bmltYXRlZFN0YXRlKTsKQEAgLTI3NCwxMCArMjc0LDEwIEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8c2l6ZV90IEkgPSAwPgotICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJID09IHNpemVvZi4uLihCYXNlVHlwZXMpLCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eT4+Ojp0eXBlIGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eUJhc2VUeXBlcyhPd25lclR5
cGUmLCBTVkdFbGVtZW50JiwgY29uc3QgU1ZHQXR0cmlidXRlJiwgQW5pbWF0ZWRQcm9wZXJ0eVN0
YXRlKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPEkgPT0gc2l6ZW9mLi4uKEJhc2VUeXBlcyksIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFBy
b3BlcnR5Pj46OnR5cGUgbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5QmFzZVR5cGVzKE93
bmVyVHlwZSYsIFNWR0VsZW1lbnQmLCBjb25zdCBTVkdBdHRyaWJ1dGUmLCBBbmltYXRlZFByb3Bl
cnR5U3RhdGUpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHRlbXBsYXRlPHNpemVfdCBJID0g
MD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA8IHNpemVvZi4uLihCYXNl
VHlwZXMpLCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+Ojp0eXBlIGxvb2t1cE9yQ3JlYXRl
QW5pbWF0ZWRQcm9wZXJ0eUJhc2VUeXBlcyhPd25lclR5cGUmIG93bmVyLCBTVkdFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgQW5pbWF0ZWRQcm9wZXJ0eVN0
YXRlIGFuaW1hdGVkU3RhdGUpCisgICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkg
PCBzaXplb2YuLi4oQmFzZVR5cGVzKSwgUmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+
Pjo6dHlwZSBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHlCYXNlVHlwZXMoT3duZXJUeXBl
JiBvd25lciwgU1ZHRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU1ZHQXR0cmlidXRlJiBhdHRyaWJ1
dGUsIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSBhbmltYXRlZFN0YXRlKQogICAgIHsKICAgICAgICAg
dXNpbmcgQmFzZVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUg
c3RkOjp0dXBsZTxCYXNlVHlwZXMuLi4+Pjo6dHlwZTsKICAgICAgICAgaWYgKGF1dG8gYW5pbWF0
ZWRQcm9wZXJ0eSA9IEJhc2VUeXBlOjphdHRyaWJ1dGVSZWdpc3RyeSgpLmxvb2t1cE9yQ3JlYXRl
QW5pbWF0ZWRQcm9wZXJ0eShvd25lciwgZWxlbWVudCwgYXR0cmlidXRlLCBhbmltYXRlZFN0YXRl
KSkKQEAgLTI4NiwxMCArMjg2LDEwIEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
c2l6ZV90IEkgPSAwPgotICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJID09IHNp
emVvZi4uLihCYXNlVHlwZXMpLCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+Ojp0eXBlIGxv
b2t1cEFuaW1hdGVkUHJvcGVydHlCYXNlVHlwZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZH
RWxlbWVudCYsIGNvbnN0IFNWR0F0dHJpYnV0ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBz
dGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA9PSBzaXplb2YuLi4oQmFzZVR5cGVzKSwg
UmVmUHRyPFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk+Pjo6dHlwZSBsb29rdXBBbmltYXRlZFBy
b3BlcnR5QmFzZVR5cGVzKGNvbnN0IE93bmVyVHlwZSYsIGNvbnN0IFNWR0VsZW1lbnQmLCBjb25z
dCBTVkdBdHRyaWJ1dGUmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB0ZW1wbGF0ZTxzaXpl
X3QgSSA9IDA+Ci0gICAgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPCBzaXplb2Yu
Li4oQmFzZVR5cGVzKSwgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+Pjo6dHlwZSBsb29rdXBB
bmltYXRlZFByb3BlcnR5QmFzZVR5cGVzKGNvbnN0IE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFNW
R0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNWR0F0dHJpYnV0ZSYgYXR0cmlidXRlKQorICAgIHN0
YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJIDwgc2l6ZW9mLi4uKEJhc2VUeXBlcyksIFJl
ZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5Pj46OnR5cGUgbG9va3VwQW5pbWF0ZWRQcm9w
ZXJ0eUJhc2VUeXBlcyhjb25zdCBPd25lclR5cGUmIG93bmVyLCBjb25zdCBTVkdFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTVkdBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKICAgICB7CiAgICAgICAgIHVz
aW5nIEJhc2VUeXBlID0gdHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PEksIHR5cGVuYW1lIHN0
ZDo6dHVwbGU8QmFzZVR5cGVzLi4uPj46OnR5cGU7CiAgICAgICAgIGlmIChhdXRvIGFuaW1hdGVk
UHJvcGVydHkgPSBCYXNlVHlwZTo6YXR0cmlidXRlUmVnaXN0cnkoKS5sb29rdXBBbmltYXRlZFBy
b3BlcnR5KG93bmVyLCBlbGVtZW50LCBhdHRyaWJ1dGUpKQpAQCAtMjk4LDEwICsyOTgsMTAgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgSSA9IDA+Ci0gICAgc3RhdGlj
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPT0gc2l6ZW9mLi4uKEJhc2VUeXBlcyksIFZlY3Rv
cjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+Pjo6dHlwZSBsb29rdXBPckNyZWF0ZUFuaW1h
dGVkUHJvcGVydGllc0Jhc2VUeXBlcyhPd25lclR5cGUmLCBTVkdFbGVtZW50JiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYsIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSkgeyByZXR1cm4geyB9OyB9CisgICAg
c3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPT0gc2l6ZW9mLi4uKEJhc2VUeXBlcyks
IFZlY3RvcjxSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4+Pjo6dHlwZSBsb29rdXBP
ckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllc0Jhc2VUeXBlcyhPd25lclR5cGUmLCBTVkdFbGVtZW50
JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSkgeyByZXR1cm4g
eyB9OyB9CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgSSA9IDA+Ci0gICAgc3RhdGljIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPEkgPCBzaXplb2YuLi4oQmFzZVR5cGVzKSwgVmVjdG9yPFJlZlB0cjxT
VkdBbmltYXRlZFByb3BlcnR5Pj4+Ojp0eXBlIGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0
aWVzQmFzZVR5cGVzKE93bmVyVHlwZSYgb3duZXIsIFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSBhbmlt
YXRlZFN0YXRlKQorICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJIDwgc2l6ZW9m
Li4uKEJhc2VUeXBlcyksIFZlY3RvcjxSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4+
Pjo6dHlwZSBsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllc0Jhc2VUeXBlcyhPd25lclR5
cGUmIG93bmVyLCBTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5U3RhdGUgYW5pbWF0ZWRTdGF0ZSkKICAgICB7CiAg
ICAgICAgIHVzaW5nIEJhc2VUeXBlID0gdHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PEksIHR5
cGVuYW1lIHN0ZDo6dHVwbGU8QmFzZVR5cGVzLi4uPj46OnR5cGU7CiAgICAgICAgIGF1dG8gYW5p
bWF0ZWRQcm9wZXJ0aWVzID0gQmFzZVR5cGU6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCkubG9va3VwT3JD
cmVhdGVBbmltYXRlZFByb3BlcnRpZXMob3duZXIsIGVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkU3RhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVn
YWN5QW5pbWF0ZWRQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDI0Mjk3
MSkJKGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5jcHA6MjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5
QW5pbWF0ZWRQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorCisjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkUHJvcGVydHk6OlNWR0FuaW1hdGVkUHJvcGVy
dHkoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlKQorICAg
IDogbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKKyAgICAsIG1fYXR0cmlidXRlTmFt
ZShhdHRyaWJ1dGVOYW1lKQorICAgICwgbV9hbmltYXRlZFByb3BlcnR5VHlwZShhbmltYXRlZFBy
b3BlcnR5VHlwZSkKK3sKK30KKworU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0FuaW1hdGVkUHJv
cGVydHkoKQoreworICAgIC8vIEFzc3VyZSB0aGF0IGFuaW1hdGlvbkVuZGVkKCkgd2FzIGNhbGxl
ZCwgaWYgYW5pbWF0aW9uU3RhcnRlZCgpIHdhcyBjYWxsZWQgYmVmb3JlLgorICAgIEFTU0VSVCgh
aXNBbmltYXRpbmcoKSk7CisKKyAgICAvLyBSZW1vdmUgd3JhcHBlciBmcm9tIGNhY2hlLgorICAg
IGZvciAoYXV0byYgY2FjaGUgOiBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKSkgeworICAgICAgICBp
ZiAoY2FjaGUudmFsdWUgPT0gdGhpcykgeworICAgICAgICAgICAgYW5pbWF0ZWRQcm9wZXJ0eUNh
Y2hlKCkucmVtb3ZlKGNhY2hlLmtleSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFNW
R0FuaW1hdGVkUHJvcGVydHk6OmNvbW1pdENoYW5nZSgpCit7CisgICAgQVNTRVJUKG1fY29udGV4
dEVsZW1lbnQpOworICAgIEFTU0VSVCghbV9jb250ZXh0RWxlbWVudC0+bV9kZWxldGlvbkhhc0Jl
Z3VuKTsKKyAgICBtX2NvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwor
ICAgIG1fY29udGV4dEVsZW1lbnQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1dGVOYW1l
KTsKKyAgICAvLyBOZWVkZWQgdG8gc3luY2hyb25pemUgd2l0aCBDU1NPTSBmb3IgcHJlc2VudGF0
aW9uIGF0dHJpYnV0ZXMgd2l0aCBTVkcgRE9NLgorICAgIG1fY29udGV4dEVsZW1lbnQtPnN5bmNo
cm9uaXplQW5pbWF0ZWRTVkdBdHRyaWJ1dGUobV9hdHRyaWJ1dGVOYW1lKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
TGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDI0
Mjk3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyMCArMjAsMjAgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorI2lu
Y2x1ZGUgIlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCIKIAogI2luY2x1ZGUgIlNWR0VsZW1l
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdBbmltYXRlZFByb3BlcnR5OjpTVkdB
bmltYXRlZFByb3BlcnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3Bl
cnR5VHlwZSkKK1NWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHk6OlNWR0xlZ2FjeUFuaW1hdGVkUHJv
cGVydHkoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlKQog
ICAgIDogbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKICAgICAsIG1fYXR0cmlidXRl
TmFtZShhdHRyaWJ1dGVOYW1lKQogICAgICwgbV9hbmltYXRlZFByb3BlcnR5VHlwZShhbmltYXRl
ZFByb3BlcnR5VHlwZSkKIHsKIH0KIAotU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0FuaW1hdGVk
UHJvcGVydHkoKQorU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHkoKQogewogICAgIC8vIEFzc3VyZSB0aGF0IGFuaW1hdGlvbkVuZGVkKCkgd2FzIGNh
bGxlZCwgaWYgYW5pbWF0aW9uU3RhcnRlZCgpIHdhcyBjYWxsZWQgYmVmb3JlLgogICAgIEFTU0VS
VCghaXNBbmltYXRpbmcoKSk7CkBAIC00OSw3ICs0OSw3IEBAIFNWR0FuaW1hdGVkUHJvcGVydHk6
On5TVkdBbmltYXRlZFByb3BlcnQKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIFNWR0FuaW1hdGVkUHJvcGVydHk6OmNvbW1pdENoYW5nZSgpCit2b2lkIFNWR0xl
Z2FjeUFuaW1hdGVkUHJvcGVydHk6OmNvbW1pdENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKG1fY29u
dGV4dEVsZW1lbnQpOwogICAgIEFTU0VSVCghbV9jb250ZXh0RWxlbWVudC0+bV9kZWxldGlvbkhh
c0JlZ3VuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeUFu
aW1hdGVkUHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmgJKHJldmlzaW9uIDI0Mjk3MSkJKGZyb20g
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oOjI0Mjk3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeUFuaW1hdGVkUHJv
cGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgor
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJvcGVydHlUeXBlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZHUHJvcGVy
dHk7CisKK2NsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdB
bmltYXRlZFByb3BlcnR5PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSgpOworICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRMaXN0VGVhck9mZigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKKyAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnQuZ2V0KCk7IH0KKyAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVOYW1lOyB9Cisg
ICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2FuaW1hdGVkUHJvcGVydHlUeXBlOyB9CisgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV9pc1JlYWRPbmx5OyB9CisgICAgdm9pZCBzZXRJc1JlYWRPbmx5KCkgeyBt
X2lzUmVhZE9ubHkgPSB0cnVlOyB9CisKKyAgICB2b2lkIGNvbW1pdENoYW5nZSgpOworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgQW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRUeXBlPgorICAgIHN0YXRpYyBSZWZQdHI8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5KFNWR0VsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaWRlbnRpZmllciwgUHJvcGVydHlUeXBlJiBwcm9wZXJ0eSwgQW5pbWF0ZWRQcm9w
ZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpCisgICAgeworICAgICAgICBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb24ga2V5KCZlbGVtZW50LCBpZGVudGlmaWVyKTsKKworICAgICAgICBhdXRv
IHJlc3VsdCA9IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLmFkZChrZXksIG51bGxwdHIpOworICAg
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgYXV0byB3cmFwcGVyID0gVGVhck9mZlR5cGU6OmNy
ZWF0ZSgmZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRUeXBlLCBwcm9wZXJ0eSk7Cisg
ICAgICAgIGlmIChhbmltYXRlZFN0YXRlID09IFByb3BlcnR5SXNSZWFkT25seSkKKyAgICAgICAg
ICAgIHdyYXBwZXItPnNldElzUmVhZE9ubHkoKTsKKworICAgICAgICAvLyBDYWNoZSB0aGUgcmF3
IHBvaW50ZXIgYnV0IHJldHVybiBhIFJlZlB0cjw+LiBUaGlzIHdpbGwgYnJlYWsgdGhlIGN5Y2xp
YyByZWZlcmVuY2UKKyAgICAgICAgLy8gYmV0d2VlbiBTVkdBbmltYXRlZFByb3BlcnR5IGFuZCBT
VkdFbGVtZW50IG9uY2UgdGhlIHByb3BlcnR5IHBvaW50ZXIgaXMgbm90IG5lZWRlZC4KKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHdyYXBwZXIucHRyKCk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4od3JhcHBlcik7Cisg
ICAgfQorCisgICAgc3RhdGljIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmlt
YXRlZFByb3BlcnR5KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlw
dGlvbiBrZXkoY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4oJmVsZW1lbnQpLCBpZGVudGlmaWVyKTsK
KyAgICAgICAgcmV0dXJuIGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLmdldChrZXkpOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoU1ZHRWxlbWVudCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBBbmltYXRlZFByb3BlcnR5VHlwZSk7CisKK3ByaXZhdGU6CisgICAg
Ly8gQ2FjaGluZyBmYWNpbGl0aWVzLgorICAgIHVzaW5nIENhY2hlID0gSGFzaE1hcDxTVkdBbmlt
YXRlZFByb3BlcnR5RGVzY3JpcHRpb24sIFNWR0FuaW1hdGVkUHJvcGVydHkqLCBTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoLCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb25I
YXNoVHJhaXRzPjsKKyAgICBzdGF0aWMgQ2FjaGUmIGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpCisg
ICAgeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+IGNhY2hlOworICAgICAg
ICByZXR1cm4gY2FjaGU7CisgICAgfQorCisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+IG1fY29udGV4
dEVsZW1lbnQ7CisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9hdHRyaWJ1dGVOYW1lOworICAg
IEFuaW1hdGVkUHJvcGVydHlUeXBlIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGU7CisKK3Byb3RlY3Rl
ZDoKKyAgICBib29sIG1faXNSZWFkT25seSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmgKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVv
bC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5QW5pbWF0
ZWRQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaAkocmV2aXNpb24gMjQyOTcxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNWR1Byb3BlcnR5OworY2xhc3MgU1ZHTGVnYWN5UHJvcGVy
dHk7CiAKLWNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdB
bmltYXRlZFByb3BlcnR5PiB7CitjbGFzcyBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5IDogcHVi
bGljIFJlZkNvdW50ZWQ8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4gewogcHVibGljOgotICAg
IHZpcnR1YWwgflNWR0FuaW1hdGVkUHJvcGVydHkoKTsKKyAgICB2aXJ0dWFsIH5TVkdMZWdhY3lB
bmltYXRlZFByb3BlcnR5KCk7CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0aW5nKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZExpc3RUZWFyT2Zm
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb21taXRDaGFuZ2UoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZU
eXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVk
VHlwZT4KLSAgICBzdGF0aWMgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3Jl
YXRlQW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIFByb3Bl
cnR5VHlwZSYgcHJvcGVydHksIEFuaW1hdGVkUHJvcGVydHlTdGF0ZSBhbmltYXRlZFN0YXRlKQor
ICAgIHN0YXRpYyBSZWZQdHI8U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVh
dGVBbmltYXRlZFByb3BlcnR5KFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgUHJvcGVy
dHlUeXBlJiBwcm9wZXJ0eSwgQW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIGFuaW1hdGVkU3RhdGUpCiAg
ICAgewogICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24ga2V5KCZlbGVtZW50
LCBpZGVudGlmaWVyKTsKIApAQCAtNjEsMjEgKzYxLDIxIEBAIHB1YmxpYzoKICAgICAgICAgLy8g
Q2FjaGUgdGhlIHJhdyBwb2ludGVyIGJ1dCByZXR1cm4gYSBSZWZQdHI8Pi4gVGhpcyB3aWxsIGJy
ZWFrIHRoZSBjeWNsaWMgcmVmZXJlbmNlCiAgICAgICAgIC8vIGJldHdlZW4gU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSBhbmQgU1ZHRWxlbWVudCBvbmNlIHRoZSBwcm9wZXJ0eSBwb2ludGVyIGlzIG5vdCBu
ZWVkZWQuCiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB3cmFwcGVyLnB0cigpOwot
ICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0FuaW1hdGVkUHJvcGVydHk+
KHdyYXBwZXIpOworICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHk+KHdyYXBwZXIpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShjb25zdCBTVkdFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgc3RhdGlj
IFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBsb29rdXBBbmltYXRlZFByb3BlcnR5
KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmll
cikKICAgICB7CiAgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoY29u
c3RfY2FzdDxTVkdFbGVtZW50Kj4oJmVsZW1lbnQpLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0
dXJuIGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLmdldChrZXkpOwogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBBbmltYXRlZFByb3BlcnR5VHlwZSk7CisgICAgU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0
eShTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIEFuaW1hdGVkUHJvcGVydHlUeXBl
KTsKIAogcHJpdmF0ZToKICAgICAvLyBDYWNoaW5nIGZhY2lsaXRpZXMuCi0gICAgdXNpbmcgQ2Fj
aGUgPSBIYXNoTWFwPFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiwgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSosIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2gsIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbkhhc2hUcmFpdHM+OworICAgIHVzaW5nIENhY2hlID0gSGFzaE1h
cDxTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24sIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVy
dHkqLCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoLCBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb25IYXNoVHJhaXRzPjsKICAgICBzdGF0aWMgQ2FjaGUmIGFuaW1hdGVkUHJv
cGVydHlDYWNoZSgpCiAgICAgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+
IGNhY2hlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5UHJv
cGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdM
ZWdhY3lQcm9wZXJ0eS5oCShyZXZpc2lvbiAyNDI5NzEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5Lmg6MjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHTGVnYWN5UHJvcGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBTVkdQcm9wZXJ0eVJv
bGUgeworICAgIFVuZGVmaW5lZFJvbGUsCisgICAgQmFzZVZhbFJvbGUsCisgICAgQW5pbVZhbFJv
bGUKK307CisKK2NsYXNzIFNWR1Byb3BlcnR5IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUHJvcGVy
dHk+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdQcm9wZXJ0eSgpID0gZGVmYXVsdDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRDaGFuZ2UoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMZWdhY3lQ
cm9wZXJ0eS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIwor
bmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xlZ2FjeVByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5UHJvcGVydHkuaAkocmV2aXNpb24g
MjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGVnYWN5UHJvcGVy
dHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQCBlbnVtIFNWR1Byb3BlcnR5Um9s
ZSB7CiAgICAgQW5pbVZhbFJvbGUKIH07CiAKLWNsYXNzIFNWR1Byb3BlcnR5IDogcHVibGljIFJl
ZkNvdW50ZWQ8U1ZHUHJvcGVydHk+IHsKK2NsYXNzIFNWR0xlZ2FjeVByb3BlcnR5IDogcHVibGlj
IFJlZkNvdW50ZWQ8U1ZHTGVnYWN5UHJvcGVydHk+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5T
VkdQcm9wZXJ0eSgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5TVkdMZWdhY3lQcm9wZXJ0eSgp
ID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkocmV2aXNpb24gMjQyOTcx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlU
eXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci1jbGFzcyBTVkdMaXN0UHJvcGVydHkgOiBwdWJsaWMgU1ZH
UHJvcGVydHksIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTVkdMaXN0UHJvcGVydHk8UHJvcGVydHlU
eXBlPj4geworY2xhc3MgU1ZHTGlzdFByb3BlcnR5IDogcHVibGljIFNWR0xlZ2FjeVByb3BlcnR5
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4+IHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IFNlbGY7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaAko
cmV2aXNpb24gMjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1lbnVtIFNWR1Byb3BlcnR5Um9sZSB7Ci0gICAgVW5kZWZpbmVkUm9sZSwK
LSAgICBCYXNlVmFsUm9sZSwKLSAgICBBbmltVmFsUm9sZQotfTsKLQotY2xhc3MgU1ZHUHJvcGVy
dHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcm9wZXJ0eT4gewotcHVibGljOgotICAgIHZpcnR1
YWwgflNWR1Byb3BlcnR5KCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCBib29sIGlzUmVhZE9u
bHkoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpID0gMDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gMjQyOTcxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDE1ICsyMSwxNSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eS5o
IgorI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdM
ZWdhY3lQcm9wZXJ0eS5oIgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsKIAotY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2Zm
QmFzZSA6IHB1YmxpYyBTVkdQcm9wZXJ0eSB7CitjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmZCYXNl
IDogcHVibGljIFNWR0xlZ2FjeVByb3BlcnR5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoV3JhcHBlcigpID0gMDsKIH07CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFVzZWQgZm9yIGNoaWxkIHR5cGVzIChiYXNlVmFsL2FuaW1WYWwpIG9mIGEgU1ZHQW5pbWF0
ZWQqIHByb3BlcnR5IChmb3IgZXhhbXBsZTogU1ZHQW5pbWF0ZWRMZW5ndGg6OmJhc2VWYWwoKSku
CiAgICAgLy8gQWxzbyB1c2VkIGZvciBsaXN0IHRlYXIgb2ZmcyAoZm9yIGV4YW1wbGU6IHRleHQu
eC5iYXNlVmFsLmdldEl0ZW0oMCkpLgotICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKFNWR0Fu
aW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBQ
cm9wZXJ0eVR5cGUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xl
LCBQcm9wZXJ0eVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2VsZihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwogICAgIH0KQEAgLTYxLDcg
KzYxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgUHJvcGVydHlUeXBlJiBwcm9w
ZXJ0eVJlZmVyZW5jZSgpIHsgcmV0dXJuICptX3ZhbHVlOyB9Ci0gICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0
eS5nZXQoKTsgfQorICAgIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVy
dHkoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGVkUHJvcGVydHkuZ2V0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRWYWx1ZShQcm9wZXJ0eVR5cGUmIHZhbHVlKQogICAgIHsKQEAgLTczLDcg
KzczLDcgQEAgcHVibGljOgogICAgICAgICBtX3ZhbHVlID0gJnZhbHVlOwogICAgIH0KIAotICAg
IHZvaWQgc2V0QW5pbWF0ZWRQcm9wZXJ0eShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFBy
b3BlcnR5KQorICAgIHZvaWQgc2V0QW5pbWF0ZWRQcm9wZXJ0eShTVkdMZWdhY3lBbmltYXRlZFBy
b3BlcnR5KiBhbmltYXRlZFByb3BlcnR5KQogICAgIHsKICAgICAgICAgbV9hbmltYXRlZFByb3Bl
cnR5ID0gYW5pbWF0ZWRQcm9wZXJ0eTsKICAgICB9CkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFNWR1Byb3BlcnR5VGVhck9mZihTVkdBbmltYXRl
ZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgUHJvcGVy
dHlUeXBlJiB2YWx1ZSkKKyAgICBTVkdQcm9wZXJ0eVRlYXJPZmYoU1ZHTGVnYWN5QW5pbWF0ZWRQ
cm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFByb3BlcnR5
VHlwZSYgdmFsdWUpCiAgICAgICAgIDogbV9hbmltYXRlZFByb3BlcnR5KGFuaW1hdGVkUHJvcGVy
dHkpCiAgICAgICAgICwgbV9yb2xlKHJvbGUpCiAgICAgICAgICwgbV92YWx1ZSgmdmFsdWUpCkBA
IC0xNjQsNyArMTY0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2NoaWxkVGVhck9mZnMuY2xl
YXIoKTsKICAgICB9CiAKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbV9hbmltYXRl
ZFByb3BlcnR5OworICAgIFJlZlB0cjxTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5PiBtX2FuaW1h
dGVkUHJvcGVydHk7CiAgICAgU1ZHUHJvcGVydHlSb2xlIG1fcm9sZTsKICAgICBQcm9wZXJ0eVR5
cGUqIG1fdmFsdWU7CiAgICAgVmVjdG9yPFdlYWtQdHI8U1ZHUHJvcGVydHlUZWFyT2ZmQmFzZT4+
IG1fY2hpbGRUZWFyT2ZmczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>