<?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>79517</bug_id>
          
          <creation_ts>2012-02-24 11:38:56 -0800</creation_ts>
          <short_desc>Move mediastream into Modules/mediastream</short_desc>
          <delta_ts>2012-02-24 14:39:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79327</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>564515</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-24 11:38:56 -0800</bug_when>
    <thetext>Move mediastream into Modules/mediastream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564518</commentid>
    <comment_count>1</comment_count>
      <attachid>128776</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-24 11:40:35 -0800</bug_when>
    <thetext>Created attachment 128776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564522</commentid>
    <comment_count>2</comment_count>
      <attachid>128776</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-24 11:43:40 -0800</bug_when>
    <thetext>Comment on attachment 128776
Patch

Assuming this is just moving code, LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564652</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-24 14:39:59 -0800</bug_when>
    <thetext>Committed r108849: &lt;http://trac.webkit.org/changeset/108849&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128776</attachid>
            <date>2012-02-24 11:40:35 -0800</date>
            <delta_ts>2012-02-24 11:43:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79517-20120224114034.patch</filename>
            <type>text/plain</type>
            <size>135633</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODgzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTI0ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBtZWRpYXN0cmVhbSBpbnRv
IE1vZHVsZXMvbWVkaWFzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc5NTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgbWVkaWFzdHJlYW0gZGlyZWN0b3J5IGlu
dG8gTW9kdWxlcy4gIG1lZGlhc3RyZWFtCisgICAgICAgIGlzIGEgc2VsZi1jb250YWluZWQgZmVh
dHVyZSBhbmQgaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgYmVpbmcgYSBtb2R1bGUuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtLgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBtZWRpYXN0cmVhbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBtZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0cmVhbS5pZGw6IFJlbW92ZWQuCisgICAgICAg
ICogbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
bWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlh
c3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaWRsOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5oOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50Lmg6IFJlbW92
ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGw6IFJlbW92ZWQu
CisgICAgICAgICogbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1MaXN0LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBtZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBtZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIG1l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIG1l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5pZGw6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0xpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tMaXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0xpc3QuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhc3RyZWFtL05h
dmlnYXRvck1lZGlhU3RyZWFtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYVN0cmVhbS5oOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhc3RyZWFtL05h
dmlnYXRvck1lZGlhU3RyZWFtLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhc3RyZWFt
L05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAg
ICogbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGw6IFJlbW92
ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlh
U3VjY2Vzc0NhbGxiYWNrLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5p
ZGw6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGw6IFJl
bW92ZWQuCisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50Lmg6IFJlbW92ZWQu
CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIG1lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDogUmVtb3ZlZC4KKwogMjAxMi0w
Mi0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBT
Vkcgc2hvdWxkIGJlIHN1cHBvcnRlZCBpbiBEYXNoYm9hcmQgY29tcGF0aWJpbGl0eSBtb2RlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAgd2ViY29y
ZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9HTFNMQU5HIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCisJLUkkKHNyY2RpcikvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMgXApAQCAt
MzksNyArNDAsNiBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwgXAotCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlIFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbiBcCkBAIC03NjAsNiAr
NzYwLDcgQEAgRGVyaXZlZFNvdXJjZXMvQU5HTEUvZ2xzbGFuZ190YWIuaDogRGVyaQogCiBJRExf
UEFUSCA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKKyAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0gXAogICAgICQoV2ViQ29yZSkvYmluZGluZ3MvanMg
XAogICAgICQoV2ViQ29yZSkvY3NzIFwKICAgICAkKFdlYkNvcmUpL2RvbSBcCkBAIC03NzEsNyAr
NzcyLDYgQEAgSURMX1BBVEggOj0gXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjayBcCiAgICAg
JChXZWJDb3JlKS9pbnNwZWN0b3IgXAogICAgICQoV2ViQ29yZSkvbG9hZGVyL2FwcGNhY2hlIFwK
LSAgICAkKFdlYkNvcmUpL21lZGlhc3RyZWFtIFwKICAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlv
bnMgXAogICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zIFwKQEAg
LTg5OSw2ICs4OTksNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAogCSQoWFRfQ0ZM
QUdTKQogCiBFWFRSQV9ESVNUICs9IFwKKwkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvY3NzLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvZG9tLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS8qLmlkbCkgXApAQCAtOTA4LDcgKzkwOSw2IEBAIEVYVFJBX0RJU1QgKz0gXAog
CSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL2h0bWwvKi5pZGwpIFwKIAkkKHNo
ZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvKi5pZGwpIFwKIAkkKHNo
ZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvKi5pZGwpIFwK
LQkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS8qLmlkbCkg
XAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvKi5p
ZGwpIFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlLyouaWRsKSBc
CiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGx1Z2lucy8qLmlkbCkgXApJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDg4MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC02NTYs
NiArNjU2LDE5IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9Qb3NpdGlvbkNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3IuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9j
YXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCisJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxs
YmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bi5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFj
ay5pZGwgXAogCSQoV2ViQ29yZSkvY3NzL0NTU0NoYXJzZXRSdWxlLmlkbCBcCiAJJChXZWJDb3Jl
KS9jc3MvQ1NTRm9udEZhY2VSdWxlLmlkbCBcCiAJJChXZWJDb3JlKS9jc3MvQ1NTSW1wb3J0UnVs
ZS5pZGwgXApAQCAtODg0LDE5ICs4OTcsNiBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdl
YkNvcmUpL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCBcCiAJJChXZWJDb3JlKS9pbnNwZWN0
b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsIFwKIAkkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZS9E
T01BcHBsaWNhdGlvbkNhY2hlLmlkbCBcCi0JJChXZWJDb3JlKS9tZWRpYXN0cmVhbS9ET01XaW5k
b3dNZWRpYVN0cmVhbS5pZGwgXAotCSQoV2ViQ29yZSkvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0
cmVhbS5pZGwgXAotCSQoV2ViQ29yZSkvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKLQkk
KFdlYkNvcmUpL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRsIFwKLQkkKFdlYkNvcmUp
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5pZGwgXAotCSQoV2ViQ29yZSkvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgXAotCSQoV2ViQ29yZSkvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja0xpc3QuaWRsIFwKLQkkKFdlYkNvcmUpL21lZGlhc3RyZWFtL05hdmlnYXRvck1l
ZGlhU3RyZWFtLmlkbCBcCi0JJChXZWJDb3JlKS9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvci5pZGwgXAotCSQoV2ViQ29yZSkvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjay5pZGwgXAotCSQoV2ViQ29yZSkvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBcCi0JJChXZWJDb3JlKS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbi5pZGwgXAotCSQoV2ViQ29yZSkvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJh
Y2suaWRsIFwKIAkkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCiAJ
JChXZWJDb3JlKS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXAogCSQoV2Vi
Q29yZSkvcGFnZS9CYXJJbmZvLmlkbCBcCkBAIC05NzAsNiArOTcwLDMzIEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVy
cm9yLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJv
ckNhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRp
b25PcHRpb25zLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxN
ZWRpYVN0cmVhbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9j
YWxNZWRpYVN0cmVhbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtRXZlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUmVnaXN0cnkuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmggXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmggXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3IuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmggXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmggXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwIFwKQEAgLTI2NDAsMzMgKzI2NjcsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MVGV4dEVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9j
YWxNZWRpYVN0cmVhbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVk
aWFTdHJlYW0uaCBcCi0JU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcCBcCi0JU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUxpc3QuaCBcCi0JU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1SZWdpc3RyeS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtUmVnaXN0cnkuaCBcCi0JU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aCBcCi0JU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmggXAotCVNv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggXAotCVNv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2su
aCBcCi0JU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaCBcCi0J
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCBcCi0JU291cmNl
L1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmggXAotCVNvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Db250ZW50cy5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwODgxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNzMxLDYg
KzczMSwxOSBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9JbnRlbnQuaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvSW50ZW50UmVzdWx0Q2FsbGJhY2suaWRsJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvTmF2aWdhdG9ySW50ZW50cy5pZGwnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaWRsJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmlkbCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmlkbCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5pZGwnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
aWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnY3NzL0NT
U0NoYXJzZXRSdWxlLmlkbCcsCiAgICAgICAgICAgICAnY3NzL0NTU0ZvbnRGYWNlUnVsZS5pZGwn
LAogICAgICAgICAgICAgJ2Nzcy9DU1NJbXBvcnRSdWxlLmlkbCcsCkBAIC05OTIsMTkgKzEwMDUs
NiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbCcsCiAgICAgICAgICAgICAnbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsJywKLSAgICAgICAgICAgICdtZWRp
YXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0cmVhbS5pZGwnLAotICAgICAgICAgICAgJ21lZGlhc3Ry
ZWFtL0xvY2FsTWVkaWFTdHJlYW0uaWRsJywKLSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5pZGwnLAotICAgICAgICAgICAgJ21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQu
aWRsJywKLSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsJywKLSAg
ICAgICAgICAgICdtZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCcsCi0gICAgICAgICAg
ICAnbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsJywKLSAgICAgICAgICAgICdt
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5pZGwnLAotICAgICAgICAgICAgJ21lZGlh
c3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCcsCi0gICAgICAgICAgICAnbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwnLAotICAgICAgICAgICAg
J21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwnLAotICAg
ICAgICAgICAgJ21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmlkbCcsCi0gICAgICAgICAgICAn
bWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5pZGwnLAogICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9BYnN0cmFjdFZpZXcuaWRs
JywKQEAgLTEyOTksNiArMTI5OSwzMyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9J
bnRlbnRSZXN1bHRDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvTmF2
aWdhdG9ySW50ZW50cy5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0
b3JJbnRlbnRzLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRp
YVN0cmVhbS5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRp
YVN0cmVhbS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oJywK
KyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwJywK
KyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuY3BwJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5oJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwJywK
KyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0Lmgn
LAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0u
Y3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3Ry
ZWFtLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oJywKICAgICAgICAgICAgICdhY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZC5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmgnLApAQCAtMjU4MCwzMyArMjYwNyw2IEBACiAgICAgICAgICAgICAn
bWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxU
ZXh0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5o
JywKLSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcCcsCi0gICAg
ICAgICAgICAnbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oJywKLSAgICAgICAgICAgICdt
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAnLAotICAgICAgICAgICAgJ21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmgnLAotICAgICAgICAgICAgJ21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQu
Y3BwJywKLSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmgnLAotICAg
ICAgICAgICAgJ21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5jcHAnLAotICAgICAgICAgICAg
J21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5oJywKLSAgICAgICAgICAgICdtZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCcsCi0gICAgICAgICAgICAnbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1SZWdpc3RyeS5oJywKLSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcCcsCi0gICAgICAgICAgICAnbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5o
JywKLSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAnLAot
ICAgICAgICAgICAgJ21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmgnLAotICAgICAg
ICAgICAgJ21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCcsCi0gICAgICAgICAg
ICAnbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCcsCi0gICAgICAgICAgICAnbWVk
aWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCcsCi0gICAgICAgICAgICAnbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdt
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCcsCi0gICAgICAg
ICAgICAnbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwJywKLSAgICAgICAgICAgICdtZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oJywKLSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9TaWdu
YWxpbmdDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGll
bnQuaCcsCi0gICAgICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oJywK
LSAgICAgICAgICAgICdtZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcCcsCi0gICAg
ICAgICAgICAnbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAnLAotICAgICAgICAgICAg
J21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwJywKICAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oJywKICAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJldmlz
aW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAgICAgICAnLi4vTW9kdWxlcy9nZW9sb2Nh
dGlvbicsCiAgICAgICAnLi4vTW9kdWxlcy9pbnRlbnRzJywKICAgICAgICcuLi9Nb2R1bGVzL2lu
ZGV4ZWRkYicsCisgICAgICAnLi4vTW9kdWxlcy9tZWRpYXN0cmVhbScsCiAgICAgICAnLi4vYWNj
ZXNzaWJpbGl0eScsCiAgICAgICAnLi4vYWNjZXNzaWJpbGl0eS9jaHJvbWl1bScsCiAgICAgICAn
Li4vYmluZGluZ3MnLApAQCAtODUsNyArODYsNiBAQAogICAgICAgJy4uL2xvYWRlci9jYWNoZScs
CiAgICAgICAnLi4vbG9hZGVyL2ljb24nLAogICAgICAgJy4uL21hdGhtbCcsCi0gICAgICAnLi4v
bWVkaWFzdHJlYW0nLAogICAgICAgJy4uL25vdGlmaWNhdGlvbnMnLAogICAgICAgJy4uL3BhZ2Un
LAogICAgICAgJy4uL3BhZ2UvYW5pbWF0aW9uJywKQEAgLTk4NywxMSArOTg3LDExIEBACiAgICAg
ICAgICAgXSwKICAgICAgICAgICAndmFyaWFibGVzJzogewogICAgICAgICAgICAgJ2dlbmVyYXRv
cl9pbmNsdWRlX2RpcnMnOiBbCisgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vTW9kdWxl
cy9tZWRpYXN0cmVhbScsCiAgICAgICAgICAgICAgICctLWluY2x1ZGUnLCAnLi4vY3NzJywKICAg
ICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9kb20nLAogICAgICAgICAgICAgICAnLS1pbmNs
dWRlJywgJy4uL2ZpbGVhcGknLAogICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL2h0bWwn
LAotICAgICAgICAgICAgICAnLS1pbmNsdWRlJywgJy4uL21lZGlhc3RyZWFtJywKICAgICAgICAg
ICAgICAgJy0taW5jbHVkZScsICcuLi9ub3RpZmljYXRpb25zJywKICAgICAgICAgICAgICAgJy0t
aW5jbHVkZScsICcuLi9wYWdlJywKICAgICAgICAgICAgICAgJy0taW5jbHVkZScsICcuLi9wbHVn
aW5zJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3Ry
ZWFtLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9ET01XaW5k
b3dNZWRpYVN0cmVhbS5pZGwJKHJldmlzaW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwz
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLW1vZHVsZSB3aW5kb3cgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAg
Q29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAotICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93
Ci0gICAgXSBET01XaW5kb3dNZWRpYVN0cmVhbSB7Ci0gICAgICAgIGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIHdlYmtpdFBlZXJDb25uZWN0
aW9uOwotICAgICAgICBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1FdmVudENvbnN0cnVjdG9yIE1lZGlh
U3RyZWFtRXZlbnQ7Ci0gICAgfTsKLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDEwODgxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJMb2NhbE1lZGlhU3RyZWFtLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
Ci0jaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNpbmNsdWRlICJVVUlELmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxMb2NhbE1lZGlhU3RyZWFtPiBMb2NhbE1l
ZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IExv
Y2FsTWVkaWFTdHJlYW0oY29udGV4dCwgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKLX0K
LQotTG9jYWxNZWRpYVN0cmVhbTo6TG9jYWxNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2Vz
LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQotICAgIDogTWVk
aWFTdHJlYW0oY29udGV4dCwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpCi0gICAgLCBt
X3N0b3BUaW1lcih0aGlzLCAmTG9jYWxNZWRpYVN0cmVhbTo6c3RvcFRpbWVyRmlyZWQpCi17Ci19
Ci0KLXZvaWQgTG9jYWxNZWRpYVN0cmVhbTo6c3RvcCgpCi17Ci0gICAgaWYgKCFtX3N0b3BUaW1l
ci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3N0b3BUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0K
LXZvaWQgTG9jYWxNZWRpYVN0cmVhbTo6c3RvcFRpbWVyRmlyZWQoVGltZXI8TG9jYWxNZWRpYVN0
cmVhbT4qIHRpbWVyKQotewotICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3N0
b3BUaW1lcik7Ci0KLSAgICBpZiAocmVhZHlTdGF0ZSgpID09IEVOREVEKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRTdG9wTG9jYWxNZWRp
YVN0cmVhbShkZXNjcmlwdG9yKCkpOwotCi0gICAgc3RyZWFtRW5kZWQoKTsKLX0KLQotTG9jYWxN
ZWRpYVN0cmVhbTo6fkxvY2FsTWVkaWFTdHJlYW0oKQotewotfQotCi1jb25zdCBBdG9taWNTdHJp
bmcmIExvY2FsTWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUoKSBjb25zdAotewotICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTG9jYWxNZWRpYVN0cmVhbTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgJKHJldmlz
aW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJl
YW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIExvY2FsTWVkaWFTdHJlYW1faAotI2RlZmluZSBMb2NhbE1lZGlhU3RyZWFtX2gKLQotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1
ZGUgIlRpbWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTG9jYWxNZWRpYVN0
cmVhbSA6IHB1YmxpYyBNZWRpYVN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8TG9jYWxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKLSAgICB2aXJ0dWFsIH5Mb2NhbE1lZGlhU3Ry
ZWFtKCk7Ci0KLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLQotcHJpdmF0
ZToKLSAgICBMb2NhbE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKLQotICAgIHZvaWQgc3RvcFRpbWVyRmlyZWQoVGlt
ZXI8TG9jYWxNZWRpYVN0cmVhbT4qKTsKLQotICAgIFRpbWVyPExvY2FsTWVkaWFTdHJlYW0+IG1f
c3RvcFRpbWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIExvY2FsTWVkaWFTdHJlYW1faApJbmRleDog
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5pZGwJKHJl
dmlzaW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFT
dHJlYW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LW1vZHVsZSBjb3JlIHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTSwKLSAgICAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgICAgICBF
dmVudFRhcmdldCwKLSAgICAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKLSAgICBdIExvY2FsTWVk
aWFTdHJlYW0gOiBNZWRpYVN0cmVhbSB7Ci0gICAgICAgIHZvaWQgc3RvcCgpOwotICAgIH07Ci0K
LX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJl
dmlzaW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCi0KLSNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNpbmNsdWRlICJNZWRpYVN0
cmVhbVNvdXJjZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJVVUlELmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIHZvaWQgcHJvY2Vz
c1RyYWNrTGlzdChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiBwcnBUcmFja3MsIGNv
bnN0IFN0cmluZyYga2luZCwgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHNvdXJjZXMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tz
ID0gcHJwVHJhY2tzOwotICAgIGlmICghdHJhY2tzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAg
IE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrID0gdHJhY2tzLT5pdGVtKGkpOwotICAgICAgICBpZiAo
dHJhY2stPmtpbmQoKSAhPSBraW5kKSB7Ci0gICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2Uq
IHNvdXJjZSA9IHRyYWNrLT5jb21wb25lbnQoKS0+c291cmNlKCk7Ci0gICAgICAgIGJvb2wgaXNE
dXBsaWNhdGUgPSBmYWxzZTsKLSAgICAgICAgZm9yIChNZWRpYVN0cmVhbVNvdXJjZVZlY3Rvcjo6
aXRlcmF0b3IgaiA9IHNvdXJjZXMuYmVnaW4oKTsgaiA8IHNvdXJjZXMuZW5kKCk7ICsraikgewot
ICAgICAgICAgICAgaWYgKCgqaiktPmlkKCkgPT0gc291cmNlLT5pZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgaXNEdXBsaWNhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghaXNEdXBsaWNhdGUpCi0gICAgICAgICAg
ICBzb3VyY2VzLmFwcGVuZChzb3VyY2UpOwotICAgIH0KLX0KLQotUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiBhdWRpb1RyYWNrcywgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdmlkZW9UcmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKLSAgICBwcm9jZXNz
VHJhY2tMaXN0KGF1ZGlvVHJhY2tzLCAiYXVkaW8iLCBhdWRpb1NvdXJjZXMsIGVjKTsKLSAgICBp
ZiAoZWMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Ig
dmlkZW9Tb3VyY2VzOwotICAgIHByb2Nlc3NUcmFja0xpc3QodmlkZW9UcmFja3MsICJ2aWRlbyIs
IHZpZGVvU291cmNlcywgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpjcmVhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlcyk7Ci0gICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlk
Q29uc3RydWN0TWVkaWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNZWRpYVN0cmVhbShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSkpOwotfQot
Ci1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBz
dHJlYW1EZXNjcmlwdG9yKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW0o
Y29udGV4dCwgc3RyZWFtRGVzY3JpcHRvcikpOwotfQotCi1NZWRpYVN0cmVhbTo6TWVkaWFTdHJl
YW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoY29udGV4dCkKLSAgICAsIG1fZGVzY3JpcHRvcihzdHJlYW1EZXNjcmlwdG9yKQotewot
ICAgIG1fZGVzY3JpcHRvci0+c2V0T3duZXIodGhpcyk7Ci0KLSAgICBNZWRpYVN0cmVhbVRyYWNr
VmVjdG9yIGF1ZGlvVHJhY2tWZWN0b3I7Ci0gICAgc2l6ZV90IG51bWJlck9mQXVkaW9UcmFja3Mg
PSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mQXVkaW9Db21wb25lbnRzKCk7Ci0gICAgYXVkaW9UcmFj
a1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZBdWRpb1RyYWNrcyk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspCi0gICAgICAgIGF1ZGlv
VHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3Is
IG1fZGVzY3JpcHRvci0+YXVkaW9Db21wb25lbnQoaSkpKTsKLSAgICBtX2F1ZGlvVHJhY2tzID0g
TWVkaWFTdHJlYW1UcmFja0xpc3Q6OmNyZWF0ZShhdWRpb1RyYWNrVmVjdG9yKTsKLQotICAgIE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3IgdmlkZW9UcmFja1ZlY3RvcjsKLSAgICBzaXplX3QgbnVtYmVy
T2ZWaWRlb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKTsK
LSAgICB2aWRlb1RyYWNrVmVjdG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZlZpZGVvVHJhY2tz
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVmlkZW9UcmFja3M7IGkrKykK
LSAgICAgICAgdmlkZW9UcmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRl
KG1fZGVzY3JpcHRvciwgbV9kZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkpOwotICAgIG1f
dmlkZW9UcmFja3MgPSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKHZpZGVvVHJhY2tWZWN0
b3IpOwotfQotCi1NZWRpYVN0cmVhbTo6fk1lZGlhU3RyZWFtKCkKLXsKLSAgICBtX2Rlc2NyaXB0
b3ItPnNldE93bmVyKDApOwotfQotCi1NZWRpYVN0cmVhbTo6UmVhZHlTdGF0ZSBNZWRpYVN0cmVh
bTo6cmVhZHlTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+ZW5kZWQo
KSA/IEVOREVEIDogTElWRTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbTo6c3RyZWFtRW5kZWQoKQot
ewotICAgIGlmIChyZWFkeVN0YXRlKCkgPT0gRU5ERUQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fZGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKLQotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLWNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUoKSBjb25zdAotewotICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVkaWFTdHJlYW07Ci19Ci0KLVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOwotfQot
Ci1FdmVudFRhcmdldERhdGEqIE1lZGlhU3RyZWFtOjpldmVudFRhcmdldERhdGEoKQotewotICAg
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogTWVkaWFT
dHJlYW06OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFy
Z2V0RGF0YTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgot
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIE1lZGlhU3RyZWFtX2gKLSNkZWZpbmUgTWVkaWFTdHJlYW1faAotCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja0xpc3Qu
aCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
Ci1jbGFzcyBNZWRpYVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPiwgcHVi
bGljIE1lZGlhU3RyZWFtRGVzY3JpcHRvck93bmVyLCBwdWJsaWMgRXZlbnRUYXJnZXQgewotcHVi
bGljOgotICAgIC8vIE11c3QgbWF0Y2ggdGhlIGNvbnN0YW50cyBpbiB0aGUgLmlkbCBmaWxlLgot
ICAgIGVudW0gUmVhZHlTdGF0ZSB7Ci0gICAgICAgIExJVkUgPSAxLAotICAgICAgICBFTkRFRCA9
IDIKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiwgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIH5N
ZWRpYVN0cmVhbSgpOwotCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlbmRl
ZCk7Ci0KLSAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICBTdHJpbmcgbGFi
ZWwoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3ItPmxhYmVsKCk7IH0KLQotICAgIE1lZGlh
U3RyZWFtVHJhY2tMaXN0KiBhdWRpb1RyYWNrcygpIHsgcmV0dXJuIG1fYXVkaW9UcmFja3MuZ2V0
KCk7IH0KLSAgICBNZWRpYVN0cmVhbVRyYWNrTGlzdCogdmlkZW9UcmFja3MoKSB7IHJldHVybiBt
X3ZpZGVvVHJhY2tzLmdldCgpOyB9Ci0KLSAgICB2b2lkIHN0cmVhbUVuZGVkKCk7Ci0KLSAgICBN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2Ny
aXB0b3IuZ2V0KCk7IH0KLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLQotICAgIHVz
aW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxN
ZWRpYVN0cmVhbT46OmRlcmVmOwotCi1wcm90ZWN0ZWQ6Ci0gICAgTWVkaWFTdHJlYW0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPik7Ci0K
LSAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwotCi1wcml2YXRlOgotICAgIC8vIEV2ZW50VGFyZ2V0
IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVm
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQot
Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCi0gICAgUmVmUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotICAgIFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gbV9hdWRpb1RyYWNrczsKLSAgICBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4gbV9kZXNjcmlwdG9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIE1lZGlhU3RyZWFt
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwJKHJl
dmlzaW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1
bGUgY29yZSB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1NRURJQV9T
VFJFQU0sCi0gICAgICAgIEV2ZW50VGFyZ2V0LAotICAgICAgICBDb25zdHJ1Y3RvcihpbiBNZWRp
YVN0cmVhbVRyYWNrTGlzdCBhdWRpb1RyYWNrcywgaW4gTWVkaWFTdHJlYW1UcmFja0xpc3Qgdmlk
ZW9UcmFja3MpLAotICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAotICAg
ICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbgotICAgXSBNZWRpYVN0cmVhbSB7Ci0gICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNrTGlzdCBhdWRpb1RyYWNrczsKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tMaXN0IHZpZGVvVHJhY2tzOwotCi0gICAg
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhlIHJlY29yZCBtZXRob2Qgd2hlbiBNZWRpYVN0cmVh
bVJlY29yZGVyIGlzIGF2YWlsYWJsZS4KLQotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBM
SVZFID0gMTsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU5ERUQgPSAyOwotICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKLSAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lbmRlZDsKLQotICAgICAgICAvLyBF
dmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25h
bF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVy
KGluIERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICAgICAgYm9vbGVhbiBkaXNw
YXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQotICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0
aW9uKTsKLSAgICB9OwotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUV2ZW50LmNwcAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtRXZlbnQuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtRXZlbnQ+IE1lZGlhU3RyZWFtRXZl
bnQ6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbUV2ZW50
KTsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUV2ZW50PiBNZWRpYVN0cmVhbUV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYVN0cmVhbUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwg
c3RyZWFtKSk7Ci19Ci0KLQotTWVkaWFTdHJlYW1FdmVudDo6TWVkaWFTdHJlYW1FdmVudCgpCi17
Ci19Ci0KLU1lZGlhU3RyZWFtRXZlbnQ6Ok1lZGlhU3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPiBzdHJlYW0pCi0gICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUpCi0gICAgLCBtX3N0cmVhbShzdHJlYW0pCi17Ci19Ci0KLU1lZGlhU3RyZWFtRXZlbnQ6On5N
ZWRpYVN0cmVhbUV2ZW50KCkKLXsKLX0KLQotTWVkaWFTdHJlYW0qIE1lZGlhU3RyZWFtRXZlbnQ6
OnN0cmVhbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyZWFtLmdldCgpOwotfQotCi1jb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFtRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAot
ewotICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVkaWFTdHJlYW1FdmVudDsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
RXZlbnQuaAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgTWVkaWFTdHJlYW1FdmVudF9oCi0jZGVmaW5lIE1lZGlhU3RyZWFt
RXZlbnRfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIkV2ZW50Lmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgTWVkaWFTdHJlYW1FdmVudCA6IHB1YmxpYyBFdmVudCB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+TWVkaWFTdHJlYW1FdmVudCgpOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1FdmVudD4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOwotCi0gICAgTWVk
aWFTdHJlYW0qIHN0cmVhbSgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUV2
ZW50KCk7Ci0gICAgTWVkaWFTdHJlYW1FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+KTsK
LQotICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gbV9zdHJlYW07Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8g
TWVkaWFTdHJlYW1FdmVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUV2ZW50LmlkbAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIGV2ZW50cyB7Ci0KLSAgICAvLyBBY2Nv
cmRpbmcgdG8gdGhlIFdIQVRXRyBzcGVjaWZpY2F0aW9uOgotICAgIC8vIGh0dHA6Ly93d3cud2hh
dHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3ZpZGVvLWNvbmZl
cmVuY2luZy1hbmQtcGVlci10by1wZWVyLWNvbW11bmljYXRpb24uaHRtbCNtZWRpYXN0cmVhbWV2
ZW50Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAot
ICAgIF0gTWVkaWFTdHJlYW1FdmVudCA6IEV2ZW50IHsKLSAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgTWVkaWFTdHJlYW0gc3RyZWFtOwotICAgIH07Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1MaXN0LmNwcAkocmV2aXNpb24gMTA4ODE5KQor
KysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1MaXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1MaXN0LmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8TWVkaWFTdHJlYW1MaXN0
PiBNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVN0cmVhbUxpc3QoKSk7Ci19Ci0KLU1lZGlhU3RyZWFtTGlzdDo6TWVkaWFTdHJlYW1MaXN0
KCkKLXsKLX0KLQotTWVkaWFTdHJlYW1MaXN0Ojp+TWVkaWFTdHJlYW1MaXN0KCkKLXsKLX0KLQot
dW5zaWduZWQgTWVkaWFTdHJlYW1MaXN0OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBt
X3N0cmVhbXMuc2l6ZSgpOwotfQotCi1NZWRpYVN0cmVhbSogTWVkaWFTdHJlYW1MaXN0OjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmVhbXNbaW5kZXhdLmdl
dCgpOwotfQotCi12b2lkIE1lZGlhU3RyZWFtTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW0+IHN0cmVhbSkKLXsKLSAgICBtX3N0cmVhbXMuYXBwZW5kKHN0cmVhbSk7Ci19Ci0KLXZv
aWQgTWVkaWFTdHJlYW1MaXN0OjpyZW1vdmUoY29uc3QgTWVkaWFTdHJlYW0qIHN0cmVhbSkKLXsK
LSAgICBzaXplX3QgaSA9IG1fc3RyZWFtcy5maW5kKHN0cmVhbSk7Ci0gICAgaWYgKGkgIT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBtX3N0cmVhbXMucmVtb3ZlKGkpOwotfQotCi1ib29sIE1l
ZGlhU3RyZWFtTGlzdDo6Y29udGFpbnMoY29uc3QgTWVkaWFTdHJlYW0qIHN0cmVhbSkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVhbSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaAkocmV2aXNpb24g
MTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1MaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBN
ZWRpYVN0cmVhbUxpc3RfaAotI2RlZmluZSBNZWRpYVN0cmVhbUxpc3RfaAotCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFTdHJlYW1MaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTdHJlYW1MaXN0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1MaXN0PiBjcmVhdGUoKTsKLSAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUxpc3QoKTsKLQotICAg
IC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgTWVkaWFTdHJlYW1MaXN0Ci0gICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgTWVkaWFTdHJlYW0qIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0OwotCi0gICAgLy8gTGlzdCBtYW5pcHVsYXRpb24KLSAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgTWVkaWFTdHJl
YW0qKTsKLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IE1lZGlhU3RyZWFtKikgY29uc3Q7Ci0KLXBy
aXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1MaXN0KCk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlh
U3RyZWFtPiA+IG1fc3RyZWFtczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBNZWRpYVN0cmVhbUxpc3Rf
aApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1MaXN0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3Qu
aWRsCShyZXZpc2lvbiAxMDg4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLW1vZHVsZSBjb3JlIHsKLQotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwKLSAgICAgICAgSW5kZXhlZEdldHRlcgotICAgIF0gTWVkaWFTdHJl
YW1MaXN0IHsKLSAgICAgICAgTWVkaWFTdHJlYW0gaXRlbShpbiBbSXNJbmRleF0gdW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0KLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
bGVuZ3RoOwotICAgIH07Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxMDg4MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTWVkaWFT
dHJlYW1SZWdpc3RyeSYgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKQotewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChNZWRpYVN0cmVh
bVJlZ2lzdHJ5LCBpbnN0YW5jZSwgKCkpOwotICAgIHJldHVybiBpbnN0YW5jZTsKLX0KLQotdm9p
ZCBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3Rlck1lZGlhU3RyZWFtVVJMKGNvbnN0IEtVUkwm
IHVybCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgbV9zdHJlYW1EZXNjcmlwdG9ycy5zZXQodXJsLnN0cmluZygpLCBz
dHJlYW0tPmRlc2NyaXB0b3IoKSk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6dW5y
ZWdpc3Rlck1lZGlhU3RyZWFtVVJMKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIG1fc3RyZWFtRGVzY3JpcHRvcnMucmVtb3ZlKHVybC5zdHJpbmco
KSk7Ci19Ci0KLU1lZGlhU3RyZWFtRGVzY3JpcHRvciogTWVkaWFTdHJlYW1SZWdpc3RyeTo6bG9v
a3VwTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fc3RyZWFtRGVzY3JpcHRvcnMuZ2V0KHVy
bCkuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1SZWdpc3RyeS5oCShyZXZpc2lvbiAxMDg4MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRpYVN0cmVhbVJlZ2lzdHJ5X2gK
LSNkZWZpbmUgTWVkaWFTdHJlYW1SZWdpc3RyeV9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBLVVJMOwotY2xhc3MgTWVkaWFTdHJlYW07Ci1jbGFzcyBNZWRpYVN0cmVhbURl
c2NyaXB0b3I7Ci0KLWNsYXNzIE1lZGlhU3RyZWFtUmVnaXN0cnkgewotcHVibGljOgotICAgIC8v
IFJldHVybnMgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW1SZWdpc3RyeS4KLSAgICBz
dGF0aWMgTWVkaWFTdHJlYW1SZWdpc3RyeSYgcmVnaXN0cnkoKTsKLQotICAgIC8vIFJlZ2lzdGVy
cyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIHN0cmVhbSBkYXRhLgotICAg
IHZvaWQgcmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbT4pOwotICAgIHZvaWQgdW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKGNvbnN0IEtVUkwm
KTsKLQotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogbG9va3VwTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKGNvbnN0IFN0cmluZyYgdXJsKTsKLQotcHJpdmF0ZToKLSAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gPiBtX3N0cmVhbURlc2NyaXB0b3JzOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKLQotI2VuZGlmIC8vIE1lZGlhU3RyZWFtUmVnaXN0cnlfaApJbmRleDogU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHJldmlzaW9uIDEwODgx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBF
cmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCi0KLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNpbmNsdWRlICJN
ZWRpYVN0cmVhbUNvbXBvbmVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yLCBNZWRpYVN0cmVhbUNvbXBv
bmVudCogY29tcG9uZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1U
cmFjayhzdHJlYW1EZXNjcmlwdG9yLCBjb21wb25lbnQpKTsKLX0KLQotTWVkaWFTdHJlYW1UcmFj
azo6TWVkaWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3Ry
ZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKLSAgICA6IG1f
c3RyZWFtRGVzY3JpcHRvcihzdHJlYW1EZXNjcmlwdG9yKQotICAgICwgbV9jb21wb25lbnQoY29t
cG9uZW50KQotewotfQotCi1NZWRpYVN0cmVhbVRyYWNrOjp+TWVkaWFTdHJlYW1UcmFjaygpCi17
Ci19Ci0KLVN0cmluZyBNZWRpYVN0cmVhbVRyYWNrOjpraW5kKCkgY29uc3QKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYXVkaW9LaW5kLCAoImF1ZGlvIikpOwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB2aWRlb0tpbmQsICgidmlkZW8iKSk7Ci0KLSAgICBzd2l0
Y2ggKG1fY29tcG9uZW50LT5zb3VyY2UoKS0+dHlwZSgpKSB7Ci0gICAgY2FzZSBNZWRpYVN0cmVh
bVNvdXJjZTo6VHlwZUF1ZGlvOgotICAgICAgICByZXR1cm4gYXVkaW9LaW5kOwotICAgIGNhc2Ug
TWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzoKLSAgICAgICAgcmV0dXJuIHZpZGVvS2luZDsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gYXVkaW9LaW5k
OwotfQotCi1TdHJpbmcgTWVkaWFTdHJlYW1UcmFjazo6bGFiZWwoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2NvbXBvbmVudC0+c291cmNlKCktPm5hbWUoKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVh
bVRyYWNrOjplbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21wb25lbnQtPmVuYWJs
ZWQoKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKLXsKLSAgICBpZiAoZW5hYmxlZCA9PSBtX2NvbXBvbmVudC0+ZW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2NvbXBvbmVudC0+c2V0RW5hYmxlZChlbmFibGVkKTsKLQotICAg
IGlmIChtX3N0cmVhbURlc2NyaXB0b3ItPmVuZGVkKCkpCi0gICAgICAgIHJldHVybjsgICAgCi0K
LSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRTZXRNZWRpYVN0cmVhbVRyYWNr
RW5hYmxlZChtX3N0cmVhbURlc2NyaXB0b3IuZ2V0KCksIG1fY29tcG9uZW50LmdldCgpKTsKLX0K
LQotTWVkaWFTdHJlYW1Db21wb25lbnQqIE1lZGlhU3RyZWFtVHJhY2s6OmNvbXBvbmVudCgpCi17
Ci0gICAgcmV0dXJuIG1fY29tcG9uZW50LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAkocmV2aXNpb24gMTA4ODE5KQor
KysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3Nv
biBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFTdHJl
YW1UcmFja19oCi0jZGVmaW5lIE1lZGlhU3RyZWFtVHJhY2tfaAotCi0jaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwotCi1jbGFzcyBNZWRpYVN0cmVh
bVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4gewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNyZWF0ZShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIE1lZGlhU3RyZWFtQ29tcG9uZW50Kik7Ci0gICAgdmly
dHVhbCB+TWVkaWFTdHJlYW1UcmFjaygpOwotCi0gICAgU3RyaW5nIGtpbmQoKSBjb25zdDsKLSAg
ICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKLQotICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0OwotICAg
IHZvaWQgc2V0RW5hYmxlZChib29sKTsKLQotICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21w
b25lbnQoKTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKLQotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IG1fc3RyZWFtRGVzY3JpcHRvcjsKLSAgICBSZWZQdHI8
TWVkaWFTdHJlYW1Db21wb25lbnQ+IG1fY29tcG9uZW50OwotfTsKLQotdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+ID4gTWVkaWFTdHJlYW1UcmFja1ZlY3RvcjsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQot
I2VuZGlmIC8vIE1lZGlhU3RyZWFtVHJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwJKHJldmlzaW9uIDEwODgxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBjb3JlIHsKLQotICAg
IGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKLSAgICBdIE1l
ZGlhU3RyZWFtVHJhY2sgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtp
bmQ7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7Ci0gICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7Ci0gICAgfTsKLQotfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0
LmNwcAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRy
YWNrTGlzdC5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiBNZWRpYVN0cmVhbVRyYWNr
TGlzdDo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImIHRyYWNrVmVjdG9yKQot
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFja0xpc3QodHJhY2tWZWN0
b3IpKTsKLX0KLQotTWVkaWFTdHJlYW1UcmFja0xpc3Q6Ok1lZGlhU3RyZWFtVHJhY2tMaXN0KGNv
bnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImIHRyYWNrVmVjdG9yKQotICAgIDogbV90cmFja1Zl
Y3Rvcih0cmFja1ZlY3RvcikKLXsKLX0KLQotTWVkaWFTdHJlYW1UcmFja0xpc3Q6On5NZWRpYVN0
cmVhbVRyYWNrTGlzdCgpCi17Ci19Ci0KLXVuc2lnbmVkIE1lZGlhU3RyZWFtVHJhY2tMaXN0Ojps
ZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3RyYWNrVmVjdG9yLnNpemUoKTsKLX0KLQot
TWVkaWFTdHJlYW1UcmFjayogTWVkaWFTdHJlYW1UcmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOwotICAgIHJldHVybiBt
X3RyYWNrVmVjdG9yW2luZGV4XS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaAkocmV2aXNpb24gMTA4ODE5
KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1l
ZGlhU3RyZWFtVHJhY2tMaXN0X2gKLSNkZWZpbmUgTWVkaWFTdHJlYW1UcmFja0xpc3RfaAotCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVN0cmVhbVRyYWNrTGlzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IGNyZWF0ZShjb25zdCBNZWRpYVN0
cmVhbVRyYWNrVmVjdG9yJik7Ci0gICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFja0xpc3QoKTsK
LQotICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgTWVkaWFTdHJlYW1UcmFja0xp
c3QKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBNZWRpYVN0cmVhbVRyYWNrKiBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVRy
YWNrTGlzdChjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yJik7Ci0KLSAgICBNZWRpYVN0cmVh
bVRyYWNrVmVjdG9yIG1fdHJhY2tWZWN0b3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8gTWVkaWFTdHJl
YW1UcmFja0xpc3RfaApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2tMaXN0LmlkbAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBjb3JlIHsKLQotICAgIGlu
dGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKLSAgICAgICAgSW5k
ZXhlZEdldHRlcgotICAgIF0gTWVkaWFTdHJlYW1UcmFja0xpc3QgewotICAgICAgICBNZWRpYVN0
cmVhbVRyYWNrIGl0ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotCi0gICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICB9OwotCi19
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVk
aWFTdHJlYW0uY3BwCShyZXZpc2lvbiAxMDg4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
Ci0gKiBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5hdmln
YXRvck1lZGlhU3RyZWFtLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiRnJh
bWUuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xs
ZXIuaCIKLSNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotTmF2aWdhdG9yTWVkaWFTdHJlYW06Ok5hdmlnYXRvck1lZGlhU3RyZWFtKCkKLXsKLX0K
LQotTmF2aWdhdG9yTWVkaWFTdHJlYW06On5OYXZpZ2F0b3JNZWRpYVN0cmVhbSgpCi17Ci19Ci0K
LXZvaWQgTmF2aWdhdG9yTWVkaWFTdHJlYW06OndlYmtpdEdldFVzZXJNZWRpYShOYXZpZ2F0b3Iq
IG5hdmlnYXRvciwgY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPE5hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmICghc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBVc2VyTWVkaWFDb250cm9sbGVyKiB1c2VyTWVkaWEgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpm
cm9tKG5hdmlnYXRvci0+ZnJhbWUoKSk7Ci0gICAgaWYgKCF1c2VyTWVkaWEpIHsKLSAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRl
KG5hdmlnYXRvci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSwgdXNlck1lZGlhLCBvcHRpb25zLCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIGlmICghcmVxdWVzdCkgewotICAgICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
cmVxdWVzdC0+c3RhcnQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L05hdmlnYXRvck1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaAkocmV2aXNpb24gMTA4ODE5KQorKysgU291
cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0gKLSAqIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE5hdmlnYXRvck1l
ZGlhU3RyZWFtX2gKLSNkZWZpbmUgTmF2aWdhdG9yTWVkaWFTdHJlYW1faAotCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTmF2
aWdhdG9yOwotY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKLWNsYXNzIE5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKLQotdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKLQotY2xhc3MgTmF2aWdhdG9yTWVkaWFTdHJlYW0gewotcHVibGljOgotICAgIHN0YXRp
YyB2b2lkIHdlYmtpdEdldFVzZXJNZWRpYShOYXZpZ2F0b3IqLCBjb25zdCBTdHJpbmcmIG9wdGlv
bnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1Jl
ZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwot
Ci1wcml2YXRlOgotICAgIE5hdmlnYXRvck1lZGlhU3RyZWFtKCk7Ci0gICAgfk5hdmlnYXRvck1l
ZGlhU3RyZWFtKCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8gTmF2aWdhdG9yTWVkaWFTdHJlYW1faApJ
bmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlh
U3RyZWFtLmlkbAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotbW9kdWxlIHdpbmRvdyB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRp
b25hbD1NRURJQV9TVFJFQU0sCi0gICAgICAgIFN1cHBsZW1lbnRhbD1OYXZpZ2F0b3IKLSAgICBd
IE5hdmlnYXRvck1lZGlhU3RyZWFtIHsKLSAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZV0gdm9p
ZCB3ZWJraXRHZXRVc2VyTWVkaWEoaW4gRE9NU3RyaW5nIG9wdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDYWxsYmFja10gTmF2
aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW0NhbGxiYWNr
LCBPcHRpb25hbF0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNr
KQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgfTsKLQotfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvci5oCShyZXZpc2lvbiAxMDg4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JfaAotI2RlZmlu
ZSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcl9oCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
IDogcHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+IHsKLXB1YmxpYzoK
LSAgICAvLyBTaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIHZhbHVlcyBpbiB0aGUgaWRs
IGZpbGUuCi0gICAgZW51bSBFcnJvckNvZGUgewotICAgICAgICBQRVJNSVNTSU9OX0RFTklFRCA9
IDEKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJy
b3I+IGNyZWF0ZShFcnJvckNvZGUgY29kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IoY29kZSkpOwotICAgIH0KLQotICAgIHZpcnR1
YWwgfk5hdmlnYXRvclVzZXJNZWRpYUVycm9yKCkgeyB9Ci0KLSAgICBFcnJvckNvZGUgY29kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQotCi1wcml2YXRlOgotICAgIE5hdmlnYXRvclVzZXJN
ZWRpYUVycm9yKEVycm9yQ29kZSBjb2RlKSA6IG1fY29kZShjb2RlKSB7IH0KLQotICAgIEVycm9y
Q29kZSBtX2NvZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Jf
aApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmlkbAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSB3aW5kb3cgewotICAgIGludGVy
ZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQotICAgIF0gTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3IgewotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJNSVNTSU9O
X0RFTklFRCA9IDE7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBj
b2RlOwotICAgIH07Ci0KLX0KLQpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaAkocmV2aXNp
b24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFja19oCi0jZGVm
aW5lIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLQotI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gewotcHVibGljOgotICAgIHZpcnR1YWwgfk5hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZl
bnQoTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8gTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrLmlkbAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHdpbmRvdyB7Ci0gICAgaW50ZXJmYWNl
IFsKLSAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAotICAgICAgICBDYWxsYmFjawot
ICAgIF0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayB7Ci0gICAgICAgIGJvb2xlYW4g
aGFuZGxlRXZlbnQoaW4gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IgZXJyb3IpOwotICAgIH07Ci0K
LX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1
Y2Nlc3NDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oCShyZXZpc2lvbiAxMDg4MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2Fs
bGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja19oCi0jZGVmaW5lIE5hdmln
YXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFja19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBMb2NhbE1lZGlhU3RyZWFtOwotCi1jbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNz
Q2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5OYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoTG9jYWxNZWRp
YVN0cmVhbSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsCShyZXZp
c2lvbiAxMDg4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2Vy
TWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLW1vZHVsZSB3aW5kb3cgewotICAgIGludGVyZmFjZSBbCi0gICAgICAg
IENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKLSAgICAgICAgQ2FsbGJhY2sKLSAgICBdIE5hdmln
YXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjayB7Ci0gICAgICAgIGJvb2xlYW4gaGFuZGxlRXZl
bnQoaW4gTG9jYWxNZWRpYVN0cmVhbSBzdHJlYW0pOwotICAgIH07Ci0KLX0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDEw
ODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSwzNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCi0KLSNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk1lZGlh
U3RyZWFtRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4gc2ln
bmFsaW5nQ2FsbGJhY2spCi17Ci0gICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjb25uZWN0aW9u
ID0gYWRvcHRSZWYobmV3IFBlZXJDb25uZWN0aW9uKGNvbnRleHQsIHNlcnZlckNvbmZpZ3VyYXRp
b24sIHNpZ25hbGluZ0NhbGxiYWNrKSk7Ci0gICAgY29ubmVjdGlvbi0+c2V0UGVuZGluZ0FjdGl2
aXR5KGNvbm5lY3Rpb24uZ2V0KCkpOwotICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSW5pdGlhbE5l
Z290aWF0aW9uKCk7Ci0gICAgY29ubmVjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7Ci0KLSAgICBy
ZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7Ci19Ci0KLVBlZXJDb25uZWN0aW9uOjpQZWVyQ29u
bmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHNl
cnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGlu
Z0NhbGxiYWNrKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCi0gICAgLCBt
X3NpZ25hbGluZ0NhbGxiYWNrKHNpZ25hbGluZ0NhbGxiYWNrKQotICAgICwgbV9yZWFkeVN0YXRl
KE5FVykKLSAgICAsIG1faWNlU3RhcnRlZChmYWxzZSkKLSAgICAsIG1fbG9jYWxTdHJlYW1zKE1l
ZGlhU3RyZWFtTGlzdDo6Y3JlYXRlKCkpCi0gICAgLCBtX3JlbW90ZVN0cmVhbXMoTWVkaWFTdHJl
YW1MaXN0OjpjcmVhdGUoKSkKLSAgICAsIG1faW5pdGlhbE5lZ290aWF0aW9uVGltZXIodGhpcywg
JlBlZXJDb25uZWN0aW9uOjppbml0aWFsTmVnb3RpYXRpb25UaW1lckZpcmVkKQotICAgICwgbV9z
dHJlYW1DaGFuZ2VUaW1lcih0aGlzLCAmUGVlckNvbm5lY3Rpb246OnN0cmVhbUNoYW5nZVRpbWVy
RmlyZWQpCi0gICAgLCBtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lcih0aGlzLCAmUGVlckNvbm5lY3Rp
b246OnJlYWR5U3RhdGVDaGFuZ2VUaW1lckZpcmVkKQotICAgICwgbV9wZWVySGFuZGxlcihQZWVy
Q29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZSh0aGlzLCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSkKLXsKLX0KLQotUGVlckNvbm5lY3Rp
b246On5QZWVyQ29ubmVjdGlvbigpCi17Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OnByb2Nl
c3NTaWduYWxpbmdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKLSAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbWVz
c2FnZS5zdGFydHNXaXRoKCJTRFBcbiIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcg
c2RwID0gbWVzc2FnZS5zdWJzdHJpbmcoNCk7Ci0KLSAgICBpZiAobV9pY2VTdGFydGVkKSB7Ci0g
ICAgICAgIGlmIChtX3BlZXJIYW5kbGVyKQotICAgICAgICAgICAgbV9wZWVySGFuZGxlci0+cHJv
Y2Vzc1NEUChzZHApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fcGVlckhh
bmRsZXIpCi0gICAgICAgIG1fcGVlckhhbmRsZXItPmhhbmRsZUluaXRpYWxPZmZlcihzZHApOwot
Ci0gICAgZW5zdXJlU3RyZWFtQ2hhbmdlU2NoZWR1bGVkKCk7Ci0gICAgbV9pY2VTdGFydGVkID0g
dHJ1ZTsKLSAgICBzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2UoTkVHT1RJQVRJTkcpOwotfQotCi1Q
ZWVyQ29ubmVjdGlvbjo6UmVhZHlTdGF0ZSBQZWVyQ29ubmVjdGlvbjo6cmVhZHlTdGF0ZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlv
bjo6c2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDU3RyaW5nIGRhdGEgPSB0ZXh0LnV0
ZjgoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOwotCi0gICAgaWYgKGxl
bmd0aCA+IDUwNCkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX3BlZXJIYW5kbGVyKQotICAgICAgICBtX3BlZXJI
YW5kbGVyLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2UoZGF0YS5kYXRhKCksIGxlbmd0aCk7Ci19Ci0K
LXZvaWQgUGVlckNvbm5lY3Rpb246OmFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBw
cnBTdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4g
c3RyZWFtID0gcHJwU3RyZWFtOwotICAgIGlmICghc3RyZWFtKSB7Ci0gICAgICAgIGVjID0gIFRZ
UEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBDTE9TRUQpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMo
c3RyZWFtLmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9sb2NhbFN0cmVhbXMtPmFw
cGVuZChzdHJlYW0pOwotCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcmlw
dG9yID0gc3RyZWFtLT5kZXNjcmlwdG9yKCk7Ci0gICAgc2l6ZV90IGkgPSBtX3BlbmRpbmdSZW1v
dmVTdHJlYW1zLmZpbmQoc3RyZWFtRGVzY3JpcHRvcik7Ci0gICAgaWYgKGkgIT0gbm90Rm91bmQp
IHsKLSAgICAgICAgbV9wZW5kaW5nUmVtb3ZlU3RyZWFtcy5yZW1vdmUoaSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdBZGRTdHJlYW1zLmFwcGVuZChzdHJlYW1EZXNj
cmlwdG9yKTsKLSAgICBpZiAobV9pY2VTdGFydGVkKQotICAgICAgICBlbnN1cmVTdHJlYW1DaGFu
Z2VTY2hlZHVsZWQoKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKE1l
ZGlhU3RyZWFtKiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXN0cmVhbSkgewotICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2xv
Y2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9s
b2NhbFN0cmVhbXMtPnJlbW92ZShzdHJlYW0pOwotCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KiBzdHJlYW1EZXNjcmlwdG9yID0gc3RyZWFtLT5kZXNjcmlwdG9yKCk7Ci0gICAgc2l6ZV90IGkg
PSBtX3BlbmRpbmdBZGRTdHJlYW1zLmZpbmQoc3RyZWFtRGVzY3JpcHRvcik7Ci0gICAgaWYgKGkg
IT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9wZW5kaW5nQWRkU3RyZWFtcy5yZW1vdmUoaSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdSZW1vdmVTdHJlYW1zLmFwcGVu
ZChzdHJlYW1EZXNjcmlwdG9yKTsKLSAgICBpZiAobV9pY2VTdGFydGVkKQotICAgICAgICBlbnN1
cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKTsKLX0KLQotTWVkaWFTdHJlYW1MaXN0KiBQZWVyQ29u
bmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sb2NhbFN0cmVh
bXMuZ2V0KCk7Ci19Ci0KLU1lZGlhU3RyZWFtTGlzdCogUGVlckNvbm5lY3Rpb246OnJlbW90ZVN0
cmVhbXMoKSBjb25zdAotewotICAgIHJldHVybiBtX3JlbW90ZVN0cmVhbXMuZ2V0KCk7Ci19Ci0K
LXZvaWQgUGVlckNvbm5lY3Rpb246OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdG9wKCk7Ci19Ci0KLXZvaWQgUGVl
ckNvbm5lY3Rpb246OmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpCi17Ci0gICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIGNoYW5nZVJl
YWR5U3RhdGUoQUNUSVZFKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlkR2VuZXJhdGVT
RFAoY29uc3QgU3RyaW5nJiBzZHApCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIG1fc2lnbmFsaW5nQ2FsbGJhY2stPmhhbmRs
ZUV2ZW50KCJTRFBcbiIgKyBzZHAsIHRoaXMpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uOjpk
aWRSZWNlaXZlRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJl
YWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChkYXRh
LCBsZW5ndGgpOwotICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoUGFzc093
blB0cjxNZXNzYWdlUG9ydEFycmF5PigpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSht
ZXNzYWdlKSkpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVTdHJlYW0o
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCi17Ci0g
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwot
Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHN0cmVhbURlc2NyaXB0b3IpOwotICAgIG1fcmVtb3RlU3RyZWFt
cy0+YXBwZW5kKHN0cmVhbSk7Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFt
LnJlbGVhc2UoKSkpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uOjpkaWRSZW1vdmVSZW1vdGVT
dHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcmlwdG9yKQotewotICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKLSAgICBB
U1NFUlQoc3RyZWFtRGVzY3JpcHRvci0+b3duZXIoKSk7Ci0KLSAgICBSZWZQdHI8TWVkaWFTdHJl
YW0+IHN0cmVhbSA9IHN0YXRpY19jYXN0PE1lZGlhU3RyZWFtKj4oc3RyZWFtRGVzY3JpcHRvci0+
b3duZXIoKSk7Ci0gICAgc3RyZWFtLT5zdHJlYW1FbmRlZCgpOwotCi0gICAgaWYgKG1fcmVhZHlT
dGF0ZSA9PSBDTE9TRUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX3JlbW90ZVN0
cmVhbXMtPmNvbnRhaW5zKHN0cmVhbS5nZXQoKSkpOwotICAgIG1fcmVtb3RlU3RyZWFtcy0+cmVt
b3ZlKHN0cmVhbS5nZXQoKSk7Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3Ry
ZWFtLnJlbGVhc2UoKSkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFBlZXJDb25uZWN0aW9u
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvclBlZXJDb25uZWN0aW9uOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBQZWVy
Q29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi12b2lkIFBl
ZXJDb25uZWN0aW9uOjpzdG9wKCkKLXsKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pbml0aWFsTmVnb3RpYXRpb25UaW1lci5zdG9wKCk7
Ci0gICAgbV9zdHJlYW1DaGFuZ2VUaW1lci5zdG9wKCk7Ci0gICAgbV9yZWFkeVN0YXRlQ2hhbmdl
VGltZXIuc3RvcCgpOwotCi0gICAgaWYgKG1fcGVlckhhbmRsZXIpCi0gICAgICAgIG1fcGVlckhh
bmRsZXItPnN0b3AoKTsKLQotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1f
cGVlckhhbmRsZXIuY2xlYXIoKTsKLQotICAgIGNoYW5nZVJlYWR5U3RhdGUoQ0xPU0VEKTsKLX0K
LQotRXZlbnRUYXJnZXREYXRhKiBQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKLXsK
LSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEqIFBl
ZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OnNjaGVkdWxlSW5pdGlh
bE5lZ290aWF0aW9uKCkKLXsKLSAgICBBU1NFUlQoIW1faW5pdGlhbE5lZ290aWF0aW9uVGltZXIu
aXNBY3RpdmUoKSk7Ci0KLSAgICBtX2luaXRpYWxOZWdvdGlhdGlvblRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6aW5pdGlhbE5lZ290aWF0aW9uVGltZXJG
aXJlZChUaW1lcjxQZWVyQ29ubmVjdGlvbj4qIHRpbWVyKQotewotICAgIEFTU0VSVF9VTlVTRUQo
dGltZXIsIHRpbWVyID09ICZtX2luaXRpYWxOZWdvdGlhdGlvblRpbWVyKTsKLQotICAgIGlmICht
X2ljZVN0YXJ0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRv
clZlY3RvciBwZW5kaW5nQWRkU3RyZWFtczsKLSAgICBtX3BlbmRpbmdBZGRTdHJlYW1zLnN3YXAo
cGVuZGluZ0FkZFN0cmVhbXMpOwotICAgIGlmIChtX3BlZXJIYW5kbGVyKQotICAgICAgICBtX3Bl
ZXJIYW5kbGVyLT5wcm9kdWNlSW5pdGlhbE9mZmVyKHBlbmRpbmdBZGRTdHJlYW1zKTsKLQotICAg
IG1faWNlU3RhcnRlZCA9IHRydWU7Ci0KLSAgICBjaGFuZ2VSZWFkeVN0YXRlKE5FR09USUFUSU5H
KTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6ZW5zdXJlU3RyZWFtQ2hhbmdlU2NoZWR1bGVk
KCkKLXsKLSAgICBpZiAoIW1fc3RyZWFtQ2hhbmdlVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAg
bV9zdHJlYW1DaGFuZ2VUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5l
Y3Rpb246OnN0cmVhbUNoYW5nZVRpbWVyRmlyZWQoVGltZXI8UGVlckNvbm5lY3Rpb24+KiB0aW1l
cikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9zdHJlYW1DaGFuZ2VU
aW1lcik7Ci0KLSAgICBpZiAoIW1fcGVuZGluZ0FkZFN0cmVhbXMuaXNFbXB0eSgpICYmICFtX3Bl
bmRpbmdSZW1vdmVTdHJlYW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTWVk
aWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIHBlbmRpbmdBZGRTdHJlYW1zOwotICAgIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvclZlY3RvciBwZW5kaW5nUmVtb3ZlU3RyZWFtczsKLQotICAgIG1fcGVuZGlu
Z0FkZFN0cmVhbXMuc3dhcChwZW5kaW5nQWRkU3RyZWFtcyk7Ci0gICAgbV9wZW5kaW5nUmVtb3Zl
U3RyZWFtcy5zd2FwKHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLQotICAgIGlmIChtX3BlZXJIYW5k
bGVyKQotICAgICAgICBtX3BlZXJIYW5kbGVyLT5wcm9jZXNzUGVuZGluZ1N0cmVhbXMocGVuZGlu
Z0FkZFN0cmVhbXMsIHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLQotICAgIGlmICghcGVuZGluZ0Fk
ZFN0cmVhbXMuaXNFbXB0eSgpKQotICAgICAgICBjaGFuZ2VSZWFkeVN0YXRlKE5FR09USUFUSU5H
KTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6c2NoZWR1bGVSZWFkeVN0YXRlQ2hhbmdlKFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSkKLXsKLSAgICBtX3BlbmRpbmdSZWFkeVN0YXRlcy5hcHBlbmQo
cmVhZHlTdGF0ZSk7Ci0gICAgaWYgKCFtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lci5pc0FjdGl2ZSgp
KQotICAgICAgICBtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0K
LXZvaWQgUGVlckNvbm5lY3Rpb246OnJlYWR5U3RhdGVDaGFuZ2VUaW1lckZpcmVkKFRpbWVyPFBl
ZXJDb25uZWN0aW9uPiogdGltZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIg
PT0gJm1fcmVhZHlTdGF0ZUNoYW5nZVRpbWVyKTsKLQotICAgIFZlY3RvcjxSZWFkeVN0YXRlPiBw
ZW5kaW5nUmVhZHlTdGF0ZXM7Ci0gICAgbV9wZW5kaW5nUmVhZHlTdGF0ZXMuc3dhcChwZW5kaW5n
UmVhZHlTdGF0ZXMpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5nUmVhZHlT
dGF0ZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIGNoYW5nZVJlYWR5U3RhdGUocGVuZGluZ1JlYWR5
U3RhdGVzW2ldKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6Y2hhbmdlUmVhZHlTdGF0ZShS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUpCi17Ci0gICAgaWYgKHJlYWR5U3RhdGUgPT0gbV9yZWFkeVN0
YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOwot
Ci0gICAgc3dpdGNoIChtX3JlYWR5U3RhdGUpIHsKLSAgICBjYXNlIE5FVzoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTkVHT1RJQVRJTkc6
Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29ubmVj
dGluZ0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBQ1RJ
VkU6Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3Bl
bkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDTE9TRUQ6
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmgJKHJldmlz
aW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgUGVlckNvbm5lY3Rpb25faAotI2RlZmluZSBQZWVyQ29ubmVjdGlvbl9oCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCi0jaW5jbHVkZSAi
TWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUxpc3QuaCIKLSNpbmNsdWRlICJQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJTaWduYWxpbmdDYWxsYmFjay5oIgotI2luY2x1ZGUgIlRpbWVy
LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gTm90ZToKLS8vIFNEUCBzdGFuZHMgZm9yIFNl
c3Npb24gRGVzY3JpcHRpb24gUHJvdG9jb2wsIHdoaWNoIGlzIGludGVuZGVkIGZvciBkZXNjcmli
aW5nCi0vLyBtdWx0aW1lZGlhIHNlc3Npb25zIGZvciB0aGUgcHVycG9zZXMgb2Ygc2Vzc2lvbiBh
bm5vdW5jZW1lbnQsIHNlc3Npb24KLS8vIGludml0YXRpb24sIGFuZCBvdGhlciBmb3JtcyBvZiBt
dWx0aW1lZGlhIHNlc3Npb24gaW5pdGlhdGlvbi4KLS8vCi0vLyBNb3JlIGluZm9ybWF0aW9uIGNh
biBiZSBmb3VuZCBoZXJlOgotLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDU2Ngot
Ly8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXNzaW9uX0Rlc2NyaXB0aW9uX1Byb3Rv
Y29sCi0KLWNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGVlckNvbm5l
Y3Rpb24+LCBwdWJsaWMgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRU
YXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxs
YmFjaz4pOwotICAgIH5QZWVyQ29ubmVjdGlvbigpOwotCi0gICAgdm9pZCBwcm9jZXNzU2lnbmFs
aW5nTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAg
IFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotCi0gICAgdm9pZCBzZW5kKGNvbnN0IFN0
cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYWRkU3RyZWFtKGNvbnN0IFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZW1vdmVT
dHJlYW0oTWVkaWFTdHJlYW0qLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgTWVkaWFTdHJlYW1MaXN0
KiBsb2NhbFN0cmVhbXMoKSBjb25zdDsKLSAgICBNZWRpYVN0cmVhbUxpc3QqIHJlbW90ZVN0cmVh
bXMoKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVjdGluZyk7Ci0gICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihvcGVuKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKG1lc3NhZ2UpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc3Rh
dGVjaGFuZ2UpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkc3RyZWFt
KTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXN0cmVhbSk7Ci0K
LSAgICAvLyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVJQ0VQcm9jZXNzaW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdlbmVyYXRlU0RQ
KGNvbnN0IFN0cmluZyYgc2RwKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFTdHJl
YW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTdGF0ZShSZWFkeVN0YXRlIHN0
YXRlKSB7IGNoYW5nZVJlYWR5U3RhdGUoc3RhdGUpOyB9Ci0KLSAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOwotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAg
UGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2Vy
dmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOwotCi0gICAg
Ly8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1
cmVFdmVudFRhcmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7
IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7
IH0KLQotICAgIHZvaWQgc2NoZWR1bGVJbml0aWFsTmVnb3RpYXRpb24oKTsKLSAgICB2b2lkIGlu
aXRpYWxOZWdvdGlhdGlvblRpbWVyRmlyZWQoVGltZXI8UGVlckNvbm5lY3Rpb24+Kik7Ci0gICAg
dm9pZCBlbnN1cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKTsKLSAgICB2b2lkIHN0cmVhbUNoYW5n
ZVRpbWVyRmlyZWQoVGltZXI8UGVlckNvbm5lY3Rpb24+Kik7Ci0gICAgdm9pZCBzY2hlZHVsZVJl
YWR5U3RhdGVDaGFuZ2UoUmVhZHlTdGF0ZSk7Ci0gICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlVGlt
ZXJGaXJlZChUaW1lcjxQZWVyQ29ubmVjdGlvbj4qKTsKLQotICAgIHZvaWQgY2hhbmdlUmVhZHlT
dGF0ZShSZWFkeVN0YXRlKTsKLQotICAgIFJlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4gbV9zaWdu
YWxpbmdDYWxsYmFjazsKLQotICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwotICAgIGJvb2wg
bV9pY2VTdGFydGVkOwotCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9sb2NhbFN0cmVh
bXM7Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9yZW1vdGVTdHJlYW1zOwotCi0gICAg
Ly8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOwotCi0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+IG1faW5pdGlhbE5lZ290
aWF0aW9uVGltZXI7Ci0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ2hhbmdlVGlt
ZXI7Ci0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+IG1fcmVhZHlTdGF0ZUNoYW5nZVRpbWVyOwot
Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIG1fcGVuZGluZ0FkZFN0cmVhbXM7Ci0g
ICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIG1fcGVuZGluZ1JlbW92ZVN0cmVhbXM7Ci0g
ICAgVmVjdG9yPFJlYWR5U3RhdGU+IG1fcGVuZGluZ1JlYWR5U3RhdGVzOwotCi0gICAgT3duUHRy
PFBlZXJDb25uZWN0aW9uSGFuZGxlcj4gbV9wZWVySGFuZGxlcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAv
LyBQZWVyQ29ubmVjdGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24uaWRsCShyZXZpc2lvbiAxMDg4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNzYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHAycCB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAg
ICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgICAgIEFjdGl2ZURPTU9iamVjdCwK
LSAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTIsCi0gICAgICAgIENvbnN0cnVjdG9yKGlu
IERPTVN0cmluZyBzZXJ2ZXJDb25maWd1cmF0aW9uLCBpbiBbQ2FsbGJhY2tdIFNpZ25hbGluZ0Nh
bGxiYWNrIHNpZ25hbGluZ0NhbGxiYWNrKSwKLSAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwKLSAgICAgICAgSlNDdXN0b21Db25zdHJ1Y3RvciwKLSAgICAgICAgRXZlbnRU
YXJnZXQKLSAgICBdIFBlZXJDb25uZWN0aW9uIHsKLSAgICAgICAgdm9pZCBwcm9jZXNzU2lnbmFs
aW5nTWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSkKLSAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwotCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FVyA9IDA7Ci0gICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FR09USUFUSU5HID0gMTsKLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgQUNUSVZFID0gMjsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
Q0xPU0VEID0gMzsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJl
YWR5U3RhdGU7Ci0KLSAgICAgICAgdm9pZCBzZW5kKGluIERPTVN0cmluZyB0ZXh0KQotICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmdd
IHZvaWQgYWRkU3RyZWFtKGluIE1lZGlhU3RyZWFtIHN0cmVhbSkKLSAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOwotICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHJlbW92
ZVN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJlYW0pCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKLQotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1MaXN0IGxv
Y2FsU3RyZWFtczsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtTGlzdCBy
ZW1vdGVTdHJlYW1zOwotCi0gICAgICAgIHZvaWQgY2xvc2UoKQotICAgICAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7Ci0KLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb25u
ZWN0aW5nOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm9wZW47Ci0gICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubWVzc2FnZTsKLSAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25zdGF0ZWNoYW5nZTsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25hZGRzdHJlYW07Ci0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3Zl
c3RyZWFtOwotCi0gICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgICAgICB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgICAgICB2
b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUp
OwotICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQpCi0gICAgICAg
ICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwotICAgIH07Ci0KLX0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaAkocmV2aXNpb24gMTA4
ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNp
Z25hbGluZ0NhbGxiYWNrX2gKLSNkZWZpbmUgU2lnbmFsaW5nQ2FsbGJhY2tfaAotCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUGVlckNvbm5lY3Rpb247Ci0KLWNsYXNzIFNpZ25hbGlu
Z0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2lnbmFsaW5nQ2FsbGJhY2s+IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5TaWduYWxpbmdDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVFdmVudChjb25zdCBTdHJpbmcmLCBQZWVyQ29ubmVjdGlvbiopID0gMDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0KLSNlbmRpZiAvLyBTaWduYWxpbmdDYWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAxMDg4MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHAycCB7
Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0g
ICAgICAgIENhbGxiYWNrCi0gICAgXSBTaWduYWxpbmdDYWxsYmFjayB7Ci0gICAgICAgIGJvb2xl
YW4gaGFuZGxlRXZlbnQoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFBlZXJDb25uZWN0aW9uIHNv
dXJjZSk7Ci0gICAgfTsKLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ2xpZW50LmgJKHJldmlzaW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqICAg
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqICAgIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJp
Y3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBVc2VyTWVkaWFDbGllbnRfaAotI2RlZmluZSBVc2VyTWVkaWFDbGll
bnRfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIlVzZXJNZWRpYVJl
cXVlc3QuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBQYWdlOwotCi1jbGFzcyBVc2VyTWVkaWFDbGllbnQgewotcHVibGlj
OgotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiwgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgIGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
VXNlck1lZGlhUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KikgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB+VXNlck1lZGlhQ2xpZW50KCkgeyB9Ci19OwotCi12b2lkIHByb3ZpZGVVc2Vy
TWVkaWFUbyhQYWdlKiwgVXNlck1lZGlhQ2xpZW50Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBVc2VyTWVk
aWFDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJVc2VyTWVkaWFDb250cm9sbGVyLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgVXNlck1lZGlhQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBuYW1lLCAoIlVzZXJNZWRpYUNvbnRyb2xsZXIiKSk7Ci0gICAgcmV0dXJuIG5hbWU7
Ci19Ci0KLVVzZXJNZWRpYUNvbnRyb2xsZXI6OlVzZXJNZWRpYUNvbnRyb2xsZXIoVXNlck1lZGlh
Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi17Ci19Ci0KLVVzZXJNZWRp
YUNvbnRyb2xsZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKLXsKLSAgICBtX2NsaWVudC0+cGFn
ZURlc3Ryb3llZCgpOwotfQotCi1QYXNzT3duUHRyPFVzZXJNZWRpYUNvbnRyb2xsZXI+IFVzZXJN
ZWRpYUNvbnRyb2xsZXI6OmNyZWF0ZShVc2VyTWVkaWFDbGllbnQqIGNsaWVudCkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFVzZXJNZWRpYUNvbnRyb2xsZXIoY2xpZW50KSk7Ci19Ci0KLXZv
aWQgcHJvdmlkZVVzZXJNZWRpYVRvKFBhZ2UqIHBhZ2UsIFVzZXJNZWRpYUNsaWVudCogY2xpZW50
KQotewotICAgIFBhZ2VTdXBwbGVtZW50Ojpwcm92aWRlVG8ocGFnZSwgVXNlck1lZGlhQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgVXNlck1lZGlhQ29udHJvbGxlcjo6Y3JlYXRlKGNsaWVu
dCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVXNlck1lZGlhQ29udHJvbGxlcl9oCi0jZGVm
aW5lIFVzZXJNZWRpYUNvbnRyb2xsZXJfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQot
I2luY2x1ZGUgIlBhZ2VTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50Lmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBGcmFtZTsKLWNsYXNzIFBhZ2U7Ci0KLWNsYXNzIFVzZXJNZWRpYUNvbnRyb2xsZXIgOiBw
dWJsaWMgUGFnZVN1cHBsZW1lbnQgewotcHVibGljOgotICAgIH5Vc2VyTWVkaWFDb250cm9sbGVy
KCk7Ci0KLSAgICBVc2VyTWVkaWFDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9Ci0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNlck1lZGlhUmVx
dWVzdD4sIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsICBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKLSAgICB2b2lkIGNhbmNl
bFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCopOwotCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8VXNlck1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKFVzZXJNZWRpYUNsaWVudCopOwotICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7Ci0gICAgc3RhdGlj
IFVzZXJNZWRpYUNvbnRyb2xsZXIqIGZyb20oRnJhbWUqIGZyYW1lKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxVc2VyTWVkaWFDb250cm9sbGVyKj4oUGFnZVN1cHBsZW1lbnQ6OmZyb20oZnJhbWUsIHN1
cHBsZW1lbnROYW1lKCkpKTsgfQotICAgIHN0YXRpYyBVc2VyTWVkaWFDb250cm9sbGVyKiBmcm9t
KFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFVzZXJNZWRpYUNvbnRyb2xsZXIqPihQ
YWdlU3VwcGxlbWVudDo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSk7IH0KLQotcHJvdGVj
dGVkOgotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIoVXNlck1lZGlhQ2xpZW50Kik7Ci0KLXByaXZh
dGU6Ci0gICAgVXNlck1lZGlhQ2xpZW50KiBtX2NsaWVudDsKLX07Ci0KLWlubGluZSB2b2lkIFVz
ZXJNZWRpYUNvbnRyb2xsZXI6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxVc2VyTWVkaWFS
ZXF1ZXN0PiByZXF1ZXN0LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3Vy
Y2VzLCAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKLXsKLSAg
ICBtX2NsaWVudC0+cmVxdWVzdFVzZXJNZWRpYShyZXF1ZXN0LCBhdWRpb1NvdXJjZXMsIHZpZGVv
U291cmNlcyk7Ci19Ci0KLWlubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmNhbmNlbFVz
ZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCkKLXsKLSAgICBtX2NsaWVu
dC0+Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChyZXF1ZXN0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIFVz
ZXJNZWRpYUNvbnRyb2xsZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHJldmlzaW9uIDEwODgxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi0KLSNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCi0KLSNpbmNsdWRlICJM
b2NhbE1lZGlhU3RyZWFtLmgiCi0jaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgotI2luY2x1
ZGUgIlVzZXJNZWRpYUNvbnRyb2xsZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNz
UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVy
LCBjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBSZWZQdHI8VXNlck1lZGlh
UmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFSZXF1ZXN0KGNvbnRleHQs
IGNvbnRyb2xsZXIsIG9wdGlvbnMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwot
ICAgIGlmICghcmVxdWVzdC0+YXVkaW8oKSAmJiAhcmVxdWVzdC0+dmlkZW8oKSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7Ci19Ci0KLVVzZXJNZWRp
YVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBvcHRpb25z
LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQotICAg
ICwgbV9hdWRpbyhmYWxzZSkKLSAgICAsIG1fdmlkZW8oZmFsc2UpCi0gICAgLCBtX2NhbWVyYVBy
ZWZlcmVuY2VVc2VyKGZhbHNlKQotICAgICwgbV9jYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1lbnQo
ZmFsc2UpCi0gICAgLCBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKLSAgICAsIG1fc3VjY2Vzc0Nh
bGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKLSAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxi
YWNrKQotewotICAgIHBhcnNlT3B0aW9ucyhvcHRpb25zKTsKLX0KLQotVXNlck1lZGlhUmVxdWVz
dDo6flVzZXJNZWRpYVJlcXVlc3QoKQotewotfQotCi12b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0
YXJ0KCkKLXsKLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5xdWVyeU1lZGlhU3Ry
ZWFtU291cmNlcyh0aGlzKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDb21wbGV0
ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCi17Ci0gICAgaWYgKG1fY29u
dHJvbGxlcikKLSAgICAgICAgbV9jb250cm9sbGVyLT5yZXF1ZXN0VXNlck1lZGlhKHRoaXMsIGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpz
dWNjZWVkKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCi17Ci0gICAgaWYgKCFtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxMb2Nh
bE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBMb2NhbE1lZGlhU3RyZWFtOjpjcmVhdGUobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Ci0gICAgbV9zdWNj
ZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0cmVhbS5nZXQoKSk7Ci19Ci0KLXZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6ZmFpbCgpCi17Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2Vycm9yQ2FsbGJhY2spIHsKLSAgICAgICAg
UmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPiBlcnJvciA9IE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yOjpjcmVhdGUoTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OlBFUk1JU1NJT05fREVOSUVE
KTsKLSAgICAgICAgbV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7Ci0g
ICAgfQotfQotCi12b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQoKQotewot
ICAgIGlmIChtX2NvbnRyb2xsZXIpIHsKLSAgICAgICAgbV9jb250cm9sbGVyLT5jYW5jZWxVc2Vy
TWVkaWFSZXF1ZXN0KHRoaXMpOwotICAgICAgICBtX2NvbnRyb2xsZXIgPSAwOwotICAgIH0KLQot
ICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7Ci19Ci0K
LXZvaWQgVXNlck1lZGlhUmVxdWVzdDo6cGFyc2VPcHRpb25zKGNvbnN0IFN0cmluZyYgb3B0aW9u
cykKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBvcHRpb25zTGlzdDsKLSAgICBvcHRpb25zLnNwbGl0
KCIsIiwgb3B0aW9uc0xpc3QpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25z
TGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIHN1Yk9wdGlvbnMo
b3B0aW9uc0xpc3RbaV0sIGZhbHNlKTsKLQotICAgICAgICBpZiAoc3ViT3B0aW9uc1swXSA9PSAi
YXVkaW8iKQotICAgICAgICAgICAgbV9hdWRpbyA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKHN1
Yk9wdGlvbnNbMF0gPT0gInZpZGVvIikgewotICAgICAgICAgICAgbV92aWRlbyA9IHRydWU7Ci0g
ICAgICAgICAgICBpZiAoc3ViT3B0aW9ucy5jb250YWlucygidXNlciIpKQotICAgICAgICAgICAg
ICAgIG1fY2FtZXJhUHJlZmVyZW5jZVVzZXIgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHN1Yk9w
dGlvbnMuY29udGFpbnMoImVudmlyb25tZW50IikpCi0gICAgICAgICAgICAgICAgbV9jYW1lcmFQ
cmVmZXJlbmNlRW52aXJvbm1lbnQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAkocmV2
aXNpb24gMTA4ODE5KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqICAgIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVc2Vy
TWVkaWFSZXF1ZXN0X2gKLSNkZWZpbmUgVXNlck1lZGlhUmVxdWVzdF9oCi0KLSNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAi
TWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgotI2lu
Y2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJOYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVXNlck1lZGlhQ29udHJv
bGxlcjsKLQotY2xhc3MgVXNlck1lZGlhUmVxdWVzdCA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJj
ZXNRdWVyeUNsaWVudCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIG9w
dGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFz
c1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPik7Ci0gICAgflVzZXJNZWRp
YVJlcXVlc3QoKTsKLQotICAgIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjayogc3Vj
Y2Vzc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzQ2FsbGJhY2suZ2V0KCk7IH0K
LSAgICBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrKiBlcnJvckNhbGxiYWNrKCkgY29u
c3QgeyByZXR1cm4gbV9lcnJvckNhbGxiYWNrLmdldCgpOyB9Ci0KLSAgICB2b2lkIHN0YXJ0KCk7
Ci0KLSAgICB2b2lkIHN1Y2NlZWQoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlv
U291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyk7Ci0g
ICAgdm9pZCBmYWlsKCk7Ci0KLSAgICAvLyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudAot
ICAgIHZpcnR1YWwgYm9vbCBhdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW87IH0KLSAgICB2
aXJ0dWFsIGJvb2wgdmlkZW8oKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvOyB9Ci0gICAgdmlydHVh
bCBib29sIGNhbWVyYVByZWZlcmVuY2VVc2VyKCkgY29uc3QgeyByZXR1cm4gbV9jYW1lcmFQcmVm
ZXJlbmNlVXNlcjsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW1lcmFQcmVmZXJlbmNlRW52aXJvbm1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2NhbWVyYVByZWZlcmVuY2VFbnZpcm9ubWVudDsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVF1ZXJ5KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVj
dG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1Nv
dXJjZXMpOwotCi0gICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKLSAgICB2aXJ0dWFs
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwotCi1wcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25zdCBT
dHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPik7Ci0KLSAg
ICB2b2lkIHBhcnNlT3B0aW9ucyhjb25zdCBTdHJpbmcmIG9wdGlvbnMpOwotCi0gICAgYm9vbCBt
X2F1ZGlvOwotICAgIGJvb2wgbV92aWRlbzsKLQotICAgIGJvb2wgbV9jYW1lcmFQcmVmZXJlbmNl
VXNlcjsKLSAgICBib29sIG1fY2FtZXJhUHJlZmVyZW5jZUVudmlyb25tZW50OwotCi0gICAgVXNl
ck1lZGlhQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotCi0gICAgUmVmUHRyPE5hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0gICAgUmVmUHRyPE5h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0K
LSNlbmRpZiAvLyBVc2VyTWVkaWFSZXF1ZXN0X2gK
</data>
<flag name="review"
          id="131263"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>