<?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>225855</bug_id>
          
          <creation_ts>2021-05-16 11:27:23 -0700</creation_ts>
          <short_desc>Avoid more String creations when preparing SQLite statements</short_desc>
          <delta_ts>2021-05-17 19:14:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>225791</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1760634</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-16 11:27:23 -0700</bug_when>
    <thetext>Avoid more String creations when preparing SQLite statements by using ASCIILiteral. Also rename the SQLiteDatabase::prepareString(const String&amp;) overload so that it doesn&apos;t get called by mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760644</commentid>
    <comment_count>1</comment_count>
      <attachid>428799</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-16 12:12:11 -0700</bug_when>
    <thetext>Created attachment 428799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760645</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-16 12:13:02 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760646</commentid>
    <comment_count>3</comment_count>
      <attachid>428800</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-16 12:24:15 -0700</bug_when>
    <thetext>Created attachment 428800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760647</commentid>
    <comment_count>4</comment_count>
      <attachid>428801</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-16 12:28:23 -0700</bug_when>
    <thetext>Created attachment 428801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760648</commentid>
    <comment_count>5</comment_count>
      <attachid>428802</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-16 12:33:35 -0700</bug_when>
    <thetext>Created attachment 428802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760779</commentid>
    <comment_count>6</comment_count>
      <attachid>428802</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-17 09:30:14 -0700</bug_when>
    <thetext>Comment on attachment 428802
Patch

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

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:136
&gt; +    return &quot;CREATE TABLE Records (objectStoreID INTEGER NOT NULL ON CONFLICT FAIL, key TEXT COLLATE IDBKEY NOT NULL ON CONFLICT FAIL, value NOT NULL ON CONFLICT FAIL, recordID INTEGER PRIMARY KEY)&quot;_s;

We could use the preprocessor to put the common parts of this in one place.

&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:73
&gt;  static const String recordsTableSchemaAlternate()

It looks like this can be an ASCIILiteral too.

&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:76
&gt; +        &quot;key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE&quot;

ditto on the duplicate code.  preprocessor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760797</commentid>
    <comment_count>7</comment_count>
      <attachid>428802</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-05-17 10:14:42 -0700</bug_when>
    <thetext>Comment on attachment 428802
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        Avoid more String creations when preparing SQLite statements by using ASCIILiteral. Also rename the
&gt; +        SQLiteDatabase::prepareStatement() / SQLiteDatabase::executeCommand() overloads that take in a 
&gt; +        String to make sure they are not called by mistake.

In Source/WebCore/ChangeLog?

&gt; Source/WebKitLegacy/ChangeLog:10
&gt; +        Avoid more String creations when preparing SQLite statements by using ASCIILiteral. Also rename the
&gt; +        SQLiteDatabase::prepareStatement() / SQLiteDatabase::executeCommand() overloads that take in a 
&gt; +        String to make sure they are not called by mistake.

Ditto.

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:290
&gt; +    if (!database.executeCommandSlow(v3RecordsTableSchema(&quot;_Temp_Records&quot;))) {

static const String v3RecordsTableSchema(const String&amp; tableName) is only used here with this change. Maybe just change it to static ASCIILiteral v3RecordsTableSchemaTemp()?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:455
&gt; +    if (!m_sqliteDB-&gt;executeCommandSlow(v3IndexRecordsTableSchema(&quot;_Temp_IndexRecords&quot;))) {

Same as above. Make it static ASCIILiteral v3IndexRecordsTableSchemaTemp()?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:596
&gt; +    if (!m_sqliteDB-&gt;executeCommandSlow(indexInfoTableSchema(&quot;IndexInfo&quot;_s))) {

Maybe convert static String indexInfoTableSchema(ASCIILiteral tableName) to static ASCIILiteral indexInfoTableSchema() and static ASCIILiteral indexInfoTableSchemaTemp()?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:783
&gt; +    if (!database.executeCommandSlow(v3IndexRecordsTableSchema(&quot;_Temp_IndexRecords&quot;))) {

static ASCIILiteral v3IndexRecordsTableSchemaTemp()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760814</commentid>
    <comment_count>8</comment_count>
      <attachid>428848</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-17 11:17:52 -0700</bug_when>
    <thetext>Created attachment 428848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760833</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-17 12:26:15 -0700</bug_when>
    <thetext>Committed r277601 (237818@main): &lt;https://commits.webkit.org/237818@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428848.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760834</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-17 12:27:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78116715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760960</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-17 17:10:03 -0700</bug_when>
    <thetext>r277617</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761001</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-17 19:14:41 -0700</bug_when>
    <thetext>Committed r277629 (237840@main): &lt;https://commits.webkit.org/237840@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428799</attachid>
            <date>2021-05-16 12:12:11 -0700</date>
            <delta_ts>2021-05-16 12:27:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225855-20210516121210.patch</filename>
            <type>text/plain</type>
            <size>96134</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhMDgyY2JkODllODYw
NTgzZWIxZTI0MDY2MDMzOTA1ZDgzMWE0NC4uZmEwMzQzZjRkNTFlODRiY2JlZmYwMWJlY2JmY2E1
MjVjOGMyZTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTA1LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9yZSBTdHJpbmcg
Y3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBtb3JlIFN0cmluZyBjcmVh
dGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVudHMgYnkgdXNpbmcgQVNDSUlMaXRl
cmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0
ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZCgpIG92ZXJsb2FkcyB0aGF0
IHRha2UgaW4gYQorICAgICAgICBTdHJpbmcgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIG5vdCBjYWxs
ZWQgYnkgbWlzdGFrZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2M1Jl
Y29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYzUmVjb3Jk
c1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djNJ
bmRleFJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYz
SW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpibG9iUmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6YmxvYlJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OmJsb2JGaWxlc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6YmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpjcmVhdGVPck1pZ3JhdGVSZWNvcmRzVGFibGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRSZWNvcmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRPYmplY3RTdG9yZUluZm9UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5k
ZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpleGVjdXRlU1FMQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6dmVyaWZ5U2NoZW1hVmVyc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2hlY2tGb3JEZWxldGVkUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llSmFyREI6OnZlcmlmeVNjaGVtYVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZVNRTFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
ZXhlY3V0ZVNxbFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmV4ZWN1dGVT
cWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6c2V0TWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U6OnNldFN5bmNocm9ub3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OnRhYmxlRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpj
bGVhckFsbFRhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFy
ZVN0YXRlbWVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnByZXBh
cmVIZWFwU3RhdGVtZW50U2xvdyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZVRyYW5zYWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjp2ZXJp
ZnlTY2hlbWFWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTUUxTdGF0ZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oOgorCiAyMDIxLTA1
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXpl
IC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNyZWF0aW9uIGFuZCBwcmVwYXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5MDAzY2QwNjUwMDcyNGViZjFjYmQ4YzNiMWFmYjFkNWQ3NWZjNDVhLi43M2Q0OWQ5
YzVhOGNlNzY3MTQzOTYwZTNkYzFmMjcyYmZmNTRkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXZvaWQgbW9yZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
dm9pZCBtb3JlIFN0cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVu
dHMgYnkgdXNpbmcgQVNDSUlMaXRlcmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRl
RGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29t
bWFuZCgpIG92ZXJsb2FkcyB0aGF0IHRha2UgaW4gYSAKKyAgICAgICAgU3RyaW5nIHRvIG1ha2Ug
c3VyZSB0aGV5IGFyZSBub3QgY2FsbGVkIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6Omluc2VydERp
c3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y29sdW1uc0ZvclRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1
bW5JblRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QpOgorICAgICAgICAoV2ViS2l0
Ojpqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVu
dElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmROb3RWZXJ5UHJldmFsZW50UmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3Jh
bmRmYXRoZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGljU3RhdGVt
ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjptaWdyYXRlSXRl
bVRhYmxlSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNyZWF0ZVRhYmxlc0lmTmVl
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0lj
b25VUkxNYXApOgorCiAyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgTW9kZXJuaXplIC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNyZWF0aW9u
IGFuZCBwcmVwYXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBhOTRiYTI5NDdmMDM3MDRl
ZjY3NmNmZjEzYjIxNWEzOWJjMjg3NTM2Li42MWMwZjhlZGQ0MTJmYWFmOTg1M2I4MTUyYWEyMmZi
Mzc4MmY0MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9y
ZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBtb3JlIFN0
cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVudHMgYnkgdXNpbmcg
QVNDSUlMaXRlcmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRlRGF0YWJhc2U6OnBy
ZXBhcmVTdGF0ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZCgpIG92ZXJs
b2FkcyB0aGF0IHRha2UgaW4gYSAKKyAgICAgICAgU3RyaW5nIHRvIG1ha2Ugc3VyZSB0aGV5IGFy
ZSBub3QgY2FsbGVkIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxlSWZO
ZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisKIDIwMjEtMDUt
MTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb2Rlcm5pemUg
LyBPcHRpbWl6ZSBTUUxpdGVTdGF0ZW1lbnQgY3JlYXRpb24gYW5kIHByZXBhcmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDlhYWEwZmQ1M2RlY2QxYWQ2Zjg1NTAw
NmRjNzNhNTc1NGY3NzIzZjkuLmExYWE5MmMyOTYyMWM3Y2U2MTc3ZjZhNTdiNTM1NThkZDQ4OGQ5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMzEsMTYgKzEzMSwx
NCBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHYzUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lKQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVBVEUgVEFCTEUgIiwgdGFi
bGVOYW1lLCAiIChvYmplY3RTdG9yZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdmFs
dWUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgcmVjb3JkSUQgSU5URUdFUiBQUklNQVJZIEtF
WSkiKTsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgdjNSZWNvcmRzVGFibGVTY2hlbWEoKQor
c3RhdGljIEFTQ0lJTGl0ZXJhbCB2M1JlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2M1JlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2
M1JlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKLSAgICByZXR1cm4gdjNSZWNvcmRzVGFi
bGVTY2hlbWFTdHJpbmc7CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgUmVjb3JkcyAob2JqZWN0
U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExB
VEUgSURCS0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIHJlY29yZElEIElOVEVHRVIgUFJJTUFSWSBLRVkpIl9zOwogfQogCi1zdGF0
aWMgY29uc3QgU3RyaW5nJiB2M1JlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIHYzUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYzUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5n
KHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29yZHNcIiIpKTsKLSAgICByZXR1cm4gdjNSZWNv
cmRzVGFibGVTY2hlbWFTdHJpbmc7CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJSZWNvcmRz
XCIgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBrZXkg
VEVYVCBDT0xMQVRFIElEQktFWSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB2YWx1ZSBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMLCByZWNvcmRJRCBJTlRFR0VSIFBSSU1BUlkgS0VZKSJfczsK
IH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyB2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0
IFN0cmluZyYgdGFibGVOYW1lKQpAQCAtMTgyLDUwICsxODAsMzQgQEAgc3RhdGljIGNvbnN0IFN0
cmluZyB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQog
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChpbmRl
eElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwpIik7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcgdjNJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHYzSW5kZXhSZWNvcmRzVGFi
bGVTY2hlbWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gaW5k
ZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcgPSB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJ
bmRleFJlY29yZHMiKTsKLSAgICByZXR1cm4gaW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgSW5kZXhSZWNvcmRzIChpbmRleElEIElOVEVHRVIg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIHYzSW5kZXhSZWNvcmRzVGFibGVT
Y2hlbWFBbHRlcm5hdGUoKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCB2M0luZGV4UmVjb3Jkc1RhYmxl
U2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJp
bmc+IGluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nID0gdjNJbmRleFJlY29yZHNUYWJsZVNj
aGVtYSgiXCJJbmRleFJlY29yZHNcIiIpOwotICAgIHJldHVybiBpbmRleFJlY29yZHNUYWJsZVNj
aGVtYVN0cmluZzsKKyAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIkluZGV4UmVjb3Jkc1wiIChp
bmRleElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJ
TlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZ
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIGJsb2JS
ZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCitzdGF0aWMgQVNDSUlM
aXRlcmFsIGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKQogewotICAgIHJldHVybiBtYWtlU3RyaW5n
KCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChvYmplY3RTdG9yZVJvdyBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKSIpOworICAgIHJldHVybiAiQ1JFQVRFIFRBQkxFIEJsb2JSZWNvcmRzIChvYmplY3RT
dG9yZVJvdyBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYg
YmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JSZWNvcmRz
VGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcoYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgi
QmxvYlJlY29yZHMiKSk7Ci0gICAgcmV0dXJuIGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJCbG9iUmVjb3Jkc1wiIChvYmplY3RTdG9yZVJv
dyBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgYmxvYlJl
Y29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JGaWxl
c1RhYmxlU2NoZW1hKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBibG9i
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoIlwiQmxvYlJl
Y29yZHNcIiIpKTsKLSAgICByZXR1cm4gYmxvYlJlY29yZHNUYWJsZVNjaGVtYVN0cmluZzsKKyAg
ICByZXR1cm4gIkNSRUFURSBUQUJMRSBCbG9iRmlsZXMgKGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBmaWxlTmFtZSBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogfQog
Ci1zdGF0aWMgY29uc3QgU3RyaW5nIGJsb2JGaWxlc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBibG9iRmlsZXNUYWJsZVNjaGVtYUFsdGVy
bmF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNSRUFURSBUQUJMRSAiLCB0YWJsZU5h
bWUsICIgKGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBD
T05GTElDVCBGQUlMLCBmaWxlTmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5J
UVVFIE9OIENPTkZMSUNUIEZBSUwpIik7Ci19Ci0KLXN0YXRpYyBjb25zdCBTdHJpbmcmIGJsb2JG
aWxlc1RhYmxlU2NoZW1hKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBi
bG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZyhibG9iRmlsZXNUYWJsZVNjaGVtYSgiQmxvYkZpbGVz
IikpOwotICAgIHJldHVybiBibG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZzsKLX0KLQotc3RhdGlj
IGNvbnN0IFN0cmluZyYgYmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJsb2JGaWxlc1RhYmxlU2NoZW1hU3RyaW5nKGJs
b2JGaWxlc1RhYmxlU2NoZW1hKCJcIkJsb2JGaWxlc1wiIikpOwotICAgIHJldHVybiBibG9iRmls
ZXNUYWJsZVNjaGVtYVN0cmluZzsKKyAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIkJsb2JGaWxl
c1wiIChibG9iVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09O
RkxJQ1QgRkFJTCwgZmlsZU5hbWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFV
RSBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAogc3RhdGljIFN0cmluZyBjcmVhdGVWMU9iamVj
dFN0b3JlSW5mb1NjaGVtYShBU0NJSUxpdGVyYWwgdGFibGVOYW1lKQpAQCAtMzA1LDIyICsyODcs
MjIgQEAgc3RhdGljIGJvb2wgY3JlYXRlT3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3Nhcnko
U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKICAg
ICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgdGFibGUgd2l0aCB0aGUgY29ycmVjdCBzY2hlbWEgYW5k
IG1pZ3JhdGUgYWxsIGV4aXN0aW5nIGNvbnRlbnQgb3Zlci4KLSAgICBpZiAoIWRhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCJfVGVtcF9SZWNvcmRzIikpKSB7Cisg
ICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZFNsb3codjNSZWNvcmRzVGFibGVTY2hlbWEo
Il9UZW1wX1JlY29yZHMiKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IHRlbXBvcmFyeSByZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRhdGFiYXNl
Lmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQg
SU5UTyBfVGVtcF9SZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXksIHZhbHVlKSBTRUxFQ1Qgb2Jq
ZWN0U3RvcmVJRCwgQ0FTVChrZXkgQVMgVEVYVCksIHZhbHVlIEZST00gUmVjb3JkcyIpKSB7Cisg
ICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfUmVjb3Jk
cyAob2JqZWN0U3RvcmVJRCwga2V5LCB2YWx1ZSkgU0VMRUNUIG9iamVjdFN0b3JlSUQsIENBU1Qo
a2V5IEFTIFRFWFQpLCB2YWx1ZSBGUk9NIFJlY29yZHMiX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3RpbmcgUmVjb3JkcyBjb250ZW50ICglaSkgLSAlcyIs
IGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KCJEUk9QIFRBQkxFIFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkRST1AgVEFCTEUgUmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgZHJvcCBleGlzdGluZyBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RF
cnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBf
VGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRzIikpIHsKKyAgICBpZiAoIWRhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRz
Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IFJl
Y29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQxMiw3ICsz
OTQsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFi
bGUoKQogCiAgICAgLy8gV2hldGhlciB0aGUgdXBkYXRlZCByZWNvcmRzIHRhYmxlIGFscmVhZHkg
ZXhpc3RlZCBvciBpZiBpdCB3YXMganVzdCBjcmVhdGVkIGFuZCB0aGUgZGF0YSBtaWdyYXRlZCBv
dmVyLAogICAgIC8vIG1ha2Ugc3VyZSB0aGUgdW5pcXVlbmVzcyBpbmRleCBleGlzdHMuCi0gICAg
aWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBO
T1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXkpOyIp
KSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVOSVFVRSBJ
TkRFWCBJRiBOT1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RTdG9yZUlE
LCBrZXkpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFJlY29y
ZHNJbmRleCBvbiBSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRl
REItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC00NzAsMjIgKzQ1MiwyMiBAQCBib29sIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSgpCiAgICAgdHJhbnNhY3Rp
b24uYmVnaW4oKTsKIAogICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSB0YWJsZSB3aXRoIHRoZSBj
b3JyZWN0IHNjaGVtYSBhbmQgbWlncmF0ZSBhbGwgZXhpc3RpbmcgY29udGVudCBvdmVyLgotICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNUYWJsZVNjaGVt
YSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRl
Q29tbWFuZFNsb3codjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRz
IikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgaW5k
ZXggcmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0
RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJU
IElOVE8gX1RlbXBfSW5kZXhSZWNvcmRzIFNFTEVDVCBJbmRleFJlY29yZHMuaW5kZXhJRCwgSW5k
ZXhSZWNvcmRzLm9iamVjdFN0b3JlSUQsIEluZGV4UmVjb3Jkcy5rZXksIEluZGV4UmVjb3Jkcy52
YWx1ZSwgUmVjb3Jkcy5yb3dpZCBGUk9NIEluZGV4UmVjb3JkcyBJTk5FUiBKT0lOIFJlY29yZHMg
T04gUmVjb3Jkcy5rZXkgPSBJbmRleFJlY29yZHMudmFsdWUgQU5EIFJlY29yZHMub2JqZWN0U3Rv
cmVJRCA9IEluZGV4UmVjb3Jkcy5vYmplY3RTdG9yZUlEIikpIHsKKyAgICBpZiAoIW1fc3FsaXRl
REItPmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9JbmRleFJlY29yZHMgU0VMRUNU
IEluZGV4UmVjb3Jkcy5pbmRleElELCBJbmRleFJlY29yZHMub2JqZWN0U3RvcmVJRCwgSW5kZXhS
ZWNvcmRzLmtleSwgSW5kZXhSZWNvcmRzLnZhbHVlLCBSZWNvcmRzLnJvd2lkIEZST00gSW5kZXhS
ZWNvcmRzIElOTkVSIEpPSU4gUmVjb3JkcyBPTiBSZWNvcmRzLmtleSA9IEluZGV4UmVjb3Jkcy52
YWx1ZSBBTkQgUmVjb3Jkcy5vYmplY3RTdG9yZUlEID0gSW5kZXhSZWNvcmRzLm9iamVjdFN0b3Jl
SUQiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3Rpbmcg
SW5kZXhSZWNvcmRzIGNvbnRlbnQgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCks
IG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgSW5k
ZXhSZWNvcmRzIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJEUk9Q
IFRBQkxFIEluZGV4UmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
ZHJvcCBleGlzdGluZyBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+
bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFM
VEVSIFRBQkxFIF9UZW1wX0luZGV4UmVjb3JkcyBSRU5BTUUgVE8gSW5kZXhSZWNvcmRzIikpIHsK
KyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9J
bmRleFJlY29yZHMgUkVOQU1FIFRPIEluZGV4UmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgcmVuYW1lIHRlbXBvcmFyeSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAt
ICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTUzOSw3ICs1MjEsNyBAQCBib29s
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJE
Uk9QIElOREVYIEluZGV4UmVjb3Jkc0luZGV4IikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4
ZWN1dGVDb21tYW5kKCJEUk9QIElOREVYIEluZGV4UmVjb3Jkc0luZGV4Il9zKSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBkcm9wIGluZGV4IEluZGV4UmVjb3Jkc0luZGV4IGluIGRh
dGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC01OTksNyAr
NTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAgICBBU1NFUlQobV9zcWxpdGVEQik7
CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJREJEYXRhYmFzZUluZm8gKGtleSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZh
bHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1fc3Fs
aXRlREItPmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSURCRGF0YWJhc2VJbmZvIChrZXkg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCB2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyJfcykpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIElEQkRhdGFiYXNlSW5mbyB0YWJsZSBpbiBkYXRh
YmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNjExLDEzICs1OTMsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNl
SW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVj
dXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgiSW5kZXhJbmZvIl9zKSkpIHsKKyAgICBp
ZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kU2xvdyhpbmRleEluZm9UYWJsZVNjaGVtYSgi
SW5kZXhJbmZvIl9zKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIElu
ZGV4SW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURC
KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBLZXlHZW5lcmF0b3JzIChvYmplY3RTdG9y
ZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSwgY3VycmVudEtleSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIp
KSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEtl
eUdlbmVyYXRvcnMgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBjdXJyZW50S2V5IElOVEVHRVIgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCk7Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBjcmVhdGUgS2V5R2VuZXJhdG9ycyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzAyLDIyICs2
ODQsMjIgQEAgT3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmwKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVjJPYmplY3RTdG9yZUluZm9T
Y2hlbWEoIl9UZW1wX09iamVjdFN0b3JlSW5mbyJfcykpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURC
LT5leGVjdXRlQ29tbWFuZFNsb3coY3JlYXRlVjJPYmplY3RTdG9yZUluZm9TY2hlbWEoIl9UZW1w
X09iamVjdFN0b3JlSW5mbyJfcykpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSB0ZW1wb3JhcnkgT2JqZWN0U3RvcmVJbmZvIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAl
cyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfT2JqZWN0U3RvcmVJbmZvIChp
ZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYykgU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jIEZST00gT2JqZWN0U3RvcmVJbmZvIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1
dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9PYmplY3RTdG9yZUluZm8gKGlkLCBuYW1lLCBr
ZXlQYXRoLCBhdXRvSW5jKSBTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMgRlJPTSBP
YmplY3RTdG9yZUluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3Jh
dGUgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZvIGNvbnRlbnQgKCVpKSAtICVzIiwgbV9zcWxpdGVE
Qi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVD
b21tYW5kKCJEUk9QIFRBQkxFIE9iamVjdFN0b3JlSW5mbyIpKSB7CisgICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBPYmplY3RTdG9yZUluZm8iX3MpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRyb3AgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZv
IHRhYmxlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfT2Jq
ZWN0U3RvcmVJbmZvIFJFTkFNRSBUTyBPYmplY3RTdG9yZUluZm8iKSkgeworICAgIGlmICghbV9z
cWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX09iamVjdFN0b3JlSW5m
byBSRU5BTUUgVE8gT2JqZWN0U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IE9iamVjdFN0b3JlSW5mbyB0YWJsZSAoJWkpIC0gJXMi
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KQEAgLTczMyw3ICs3MTUsNyBAQCBi
b29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRh
dGUoY29uc3QgSGFzaE1hcDxzdGQ6OgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KGRhdGFiYXNlKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgaWYgKCFkYXRhYmFz
ZS5leGVjdXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhJbmZvIl9z
KSkpIHsKKyAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhpbmRleEluZm9UYWJs
ZVNjaGVtYSgiX1RlbXBfSW5kZXhJbmZvIl9zKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJFcnJv
ciBjcmVhdGluZyBfVGVtcF9JbmRleEluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
ZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTc3OCwxMiArNzYwLDEyIEBAIGJvb2wgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXhJbmZvVGFibGVGb3JJRFVwZGF0ZShjb25zdCBIYXNo
TWFwPHN0ZDo6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKCJEUk9QIFRBQkxFIEluZGV4SW5mbyIpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5leGVj
dXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBJbmRleEluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiRXJyb3IgZHJvcHBpbmcgZXhpc3RpbmcgSW5kZXhJbmZvIHRhYmxlICglaSkgLSAlcyIsIGRh
dGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJB
TFRFUiBUQUJMRSBfVGVtcF9JbmRleEluZm8gUkVOQU1FIFRPIEluZGV4SW5mbyIpKSB7CisgICAg
aWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfSW5kZXhJbmZv
IFJFTkFNRSBUTyBJbmRleEluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgcmVu
YW1pbmcgX1RlbXBfSW5kZXhJbmZvIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC03OTgsNyArNzgwLDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKGNvbnN0IEhhc2hNYXA8c3QKICAgICBTUUxp
dGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihkYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVn
aW4oKTsKIAotICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNU
YWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZFNsb3codjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhS
ZWNvcmRzIikpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgY3JlYXRpbmcgX1RlbXBfSW5k
ZXhSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC04NDIsMTIgKzgyNCwxMiBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWln
cmF0ZUluZGV4UmVjb3Jkc1RhYmxlRm9ySURVcGRhdGUoY29uc3QgSGFzaE1hcDxzdAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJM
RSBJbmRleFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkRS
T1AgVEFCTEUgSW5kZXhSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGRy
b3BwaW5nIGV4aXN0aW5nIEluZGV4UmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBkYXRhYmFzZS5s
YXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFC
TEUgX1RlbXBfSW5kZXhSZWNvcmRzIFJFTkFNRSBUTyBJbmRleFJlY29yZHMiKSkgeworICAgIGlm
ICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX0luZGV4UmVjb3Jk
cyBSRU5BTUUgVE8gSW5kZXhSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkVycm9y
IHJlbmFtaW5nIHRlbXBvcmFyeSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJh
c2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggZjI4OTA4Y2E1MTVlN2I5
YjJmZmY4NDg4YzAwNmQyYjBlODFiYmY1Ny4uMDU2N2VhOWIzNmMyYzY0MTg0MmY3Mzc2OWNkNmMy
MzA4YjdmOGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
c3FsKQogICAgIEFTU0VSVCghbV9jdXJyZW50VXBwZXJLZXkuaXNOdWxsKCkpOwogICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpKTsKIAotICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5wcmVw
YXJlSGVhcFN0YXRlbWVudChzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5wcmVwYXJlSGVhcFN0YXRlbWVudFNs
b3coc3FsKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAocHJlcGFyZS9pZCkgLSAnJXMnIiwgbV90cmFu
c2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIFNRTGl0ZUlE
QkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKIAog
ICAgIGF1dG8mIGRhdGFiYXNlID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+
ZGF0YWJhc2UoKTsKICAgICBpZiAoIW1fcHJlSW5kZXhTdGF0ZW1lbnQpIHsKLSAgICAgICAgYXV0
byBwcmVJbmRleFN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50KGJ1aWxk
UHJlSW5kZXhTdGF0ZW1lbnQoaXNEaXJlY3Rpb25OZXh0KCkpKTsKKyAgICAgICAgYXV0byBwcmVJ
bmRleFN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhidWlsZFBy
ZUluZGV4U3RhdGVtZW50KGlzRGlyZWN0aW9uTmV4dCgpKSk7CiAgICAgICAgIGlmICghcHJlSW5k
ZXhTdGF0ZW1lbnQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHByZXBhcmUg
cHJlIHN0YXRlbWVudCAtICclcyciLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCmluZGV4IGU3NGUyOGY1YjllNWY3OWZjNWQ1Y2QwY2U3NjZjYTBkZGYx
YmY0NzguLjY2NjQzM2I5ODczZWU4MjUzM2U3MmY0NjNlZmI2NTU5NTBmZGNiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRFcnJvck1lc3NhZ2UoY29uc3QgY2hhciog
bWVzc2FnZSwgaW50IHNxbGl0ZUVycm9yQ29kZSwgY29uc3QKIAogc3RhdGljIGJvb2wgc2V0VGV4
dFZhbHVlSW5EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVwYXJl
U3RhdGVtZW50KHF1ZXJ5KTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBhcmVTdGF0ZW1l
bnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVz
KSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0YXRpYyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0
YWJhc2UmIGRiLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zCiAKIHN0YXRpYyBib29sIHJldHJp
ZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0g
ZGIucHJlcGFyZVN0YXRlbWVudChxdWVyeSk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVw
YXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmluZyBzdGF0ZW1lbnQgdG8gcmVhZCB0ZXh0IHJl
c3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCBzdGF0ZW1lbnQuZXJyb3IoKSwgcXVlcnkuYXNjaWko
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzAsNyArMzcwLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxk
U2V0VmVyc2lvbkluTmV3RGF0YWIKICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50
YWJsZUV4aXN0cyh0YWJsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgbV9uZXcgPSB0cnVlOwog
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJD
UkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRh
YmFzZS5leGVjdXRlQ29tbWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAo
a2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUg
dG8gb3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0
ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDc1OTVm
OTA2YjA4ZWQ1ZDQ5NDM2M2M1MTlmZDc2MjA4ZGFmZjdhZGYuLmY2ODRmM2ExYTEyNTJmYzQ1M2Qz
YTY4NjU5MGU0NWVmNWE5MWM2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEyNywxNCArMTI3LDE0IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlv
bkFjdGlvbiBjcmVhdGVBY3Rpb24pCiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hl
Y2tzKCk7CiAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiKSkgewot
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmln
aW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdF
UiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklR
VUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKTsiX3MpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUKICAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNlcyIp
KSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IERhdGFiYXNlcyAoZ3VpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9yaWdp
biBURVhULCBuYW1lIFRFWFQsIGRpc3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5URUdF
UiwgcGF0aCBURVhUKTsiKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkNSRUFURSBUQUJMRSBEYXRhYmFzZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRP
SU5DUkVNRU5ULCBvcmlnaW4gVEVYVCwgbmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3Rp
bWF0ZWRTaXplIElOVEVHRVIsIHBhdGggVEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IGFuZCBoZXJlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0
YWJhc2VzIHRhYmxlIik7CiAgICAgICAgIH0KQEAgLTEyNjcsMTUgKzEyNjcsMTUgQEAgYm9vbCBE
YXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIEVYQ0xVU0lWRSBUUkFOU0FDVElPTjsiKSkKKyAgICBp
ZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBFWENMVVNJVkUgVFJBTlNBQ1RJT047
Il9zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2Ug
aG9sZCB0aGUgZXhjbHVzaXZlIGxvY2sgdG8gdGhpcyBmaWxlLgogICAgIC8vIENoZWNrIHRoYXQg
dGhlIGRhdGFiYXNlIGRvZXNuJ3QgY29udGFpbiBhbnkgdGFibGVzLgotICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0
eXBlPSd0YWJsZSc7IikpCisgICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiU0VMRUNU
IG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJzsiX3MpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIFRS
QU5TQUNUSU9OOyIpOworICAgIGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDT01NSVQgVFJBTlNB
Q1RJT047Il9zKTsKIAogICAgIGRhdGFiYXNlLmNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCA5YjE5MGNh
YTk2M2U1YTFhNzUyYWQ5ZWYyNDYwNTFjODQ2MmVhMzE0Li4xNDc5OGQ5NzU0ZDJiOGY5NjNhZjAx
YjU2MzZiMDhmZDI3YTM1NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBTUUxT
dGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRiKQogCiAgICAgU1FMaXRlRGF0YWJhc2UmIGRh
dGFiYXNlID0gZGIuc3FsaXRlRGF0YWJhc2UoKTsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudChtX3N0YXRlbWVudCk7CisgICAgYXV0byBzdGF0ZW1lbnQg
PSBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtX3N0YXRlbWVudCk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJVbmFibGUgdG8gdmVyaWZ5IGNv
cnJlY3RuZXNzIG9mIHN0YXRlbWVudCAlcyAtIGVycm9yICVpICglcykiLCBtX3N0YXRlbWVudC5h
c2NpaSgpLmRhdGEoKSwgc3RhdGVtZW50LmVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgaWYgKHN0YXRlbWVudC5lcnJvcigpID09IFNRTElURV9JTlRFUlJVUFQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAppbmRleCAwOTc0ODg5MmQ2YWQ3YjA4M2M2YTk0YTQyZjYyNjkzZWNi
YjFiMTc1Li4yYjBhNjUzNmY5NGUzNDEzZTM1MzYyYmQzNGZmYjE1MmU3NjU4MTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMyLDE1ICs1MzMsMTQgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIG8KICAgICByZXR1cm4gZXhlY3V0ZVN0YXRlbWVudCh1cGRhdGVTdGF0ZW1l
bnQudmFsdWUoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmV4ZWN1dGVT
UUxDb21tYW5kKGNvbnN0IFN0cmluZyYgc3FsKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6ZXhlY3V0ZVNRTENvbW1hbmQoQVNDSUlMaXRlcmFsIHNxbCkKIHsKICAgICBBU1NFUlQoU1FM
aXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgQVNT
RVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwogICAgIAogICAgIGJvb2wgcmVzdWx0ID0gbV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZChzcWwpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBMT0df
RVJST1IoIkFwcGxpY2F0aW9uIENhY2hlIFN0b3JhZ2U6IGZhaWxlZCB0byBleGVjdXRlIHN0YXRl
bWVudCBcIiVzXCIgZXJyb3IgXCIlc1wiIiwgCi0gICAgICAgICAgICAgICAgICBzcWwudXRmOCgp
LmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19FUlJPUigi
QXBwbGljYXRpb24gQ2FjaGUgU3RvcmFnZTogZmFpbGVkIHRvIGV4ZWN1dGUgc3RhdGVtZW50IFwi
JXNcIiBlcnJvciBcIiVzXCIiLCBzcWwuY2hhcmFjdGVycygpLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01NjcsMTEgKzU2Nyw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHNldERhdGFiYXNlVmVyc2lvbihtX2RhdGFiYXNlKTsKICAgICBzZXRE
YXRhYmFzZVZlcnNpb24uYmVnaW4oKTsKIAotICAgIGNoYXIgdXNlclZlcnNpb25TUUxbMzJdOwot
ICAgIGludCB1bnVzZWROdW1CeXRlcyA9IHNucHJpbnRmKHVzZXJWZXJzaW9uU1FMLCBzaXplb2Yo
dXNlclZlcnNpb25TUUwpLCAiUFJBR01BIHVzZXJfdmVyc2lvbj0lZCIsIHNjaGVtYVZlcnNpb24p
OwotICAgIEFTU0VSVF9VTlVTRUQodW51c2VkTnVtQnl0ZXMsIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKHVzZXJWZXJzaW9uU1FMKSkgPj0gdW51c2VkTnVtQnl0ZXMpOwotCi0gICAgYXV0byBzdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQodXNlclZlcnNpb25TUUwpOworICAg
IGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3Ry
aW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSUiLCBzY2hlbWFWZXJzaW9uKSk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTYwNCwxOCArNjAwLDE4IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9l
c05vdEV4aXN0KQogICAgIAogICAgIC8vIENyZWF0ZSB0YWJsZXMKICAgICBleGVjdXRlU1FMQ29t
bWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVHcm91cHMgKGlkIElOVEVHRVIg
UFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgIgotICAgICAgICAgICAgICAgICAgICAgICJtYW5p
ZmVzdEhvc3RIYXNoIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbWFuaWZlc3RV
UkwgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbmV3ZXN0Q2FjaGUgSU5URUdFUiwgb3Jp
Z2luIFRFWFQpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNo
ZUdyb3VwIElOVEVHRVIsIHNpemUgSU5URUdFUikiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzICh3aWxkY2FyZCBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3RIb3N0SGFzaCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG1hbmlmZXN0VVJMIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIEZBSUwsIG5ld2VzdENhY2hlIElOVEVHRVIsIG9yaWdpbiBURVhUKSJfcyk7Cisg
ICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlcyAo
aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNoZUdyb3VwIElOVEVHRVIs
IHNpemUgSU5URUdFUikiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUg
SUYgTk9UIEVYSVNUUyBDYWNoZVdoaXRlbGlzdFVSTHMgKHVybCBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3Mp
OworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNo
ZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNhcmQgSU5URUdFUiBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9z
KTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgRmFs
bGJhY2tVUkxzIChuYW1lc3BhY2UgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBmYWxs
YmFja1VSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKLSAgICAgICAgICAgICAg
ICAgICAgICAiY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOwotICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZUVudHJp
ZXMgKGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdHlwZSBJTlRFR0VS
LCByZXNvdXJjZSBJTlRFR0VSIE5PVCBOVUxMKSIpOworICAgICAgICAgICAgICAgICAgICAgICJj
YWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zKTsKKyAgICBleGVjdXRl
U1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRyaWVzIChjYWNo
ZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHR5cGUgSU5URUdFUiwgcmVzb3Vy
Y2UgSU5URUdFUiBOT1QgTlVMTCkiX3MpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZVJlc291cmNlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtF
WSBBVVRPSU5DUkVNRU5ULCB1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgInN0YXR1c0NvZGUgSU5URUdFUiBOT1QgTlVMTCwgcmVzcG9u
c2VVUkwgVEVYVCBOT1QgTlVMTCwgbWltZVR5cGUgVEVYVCwgdGV4dEVuY29kaW5nTmFtZSBURVhU
LCBoZWFkZXJzIFRFWFQsIGRhdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIp
OwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNo
ZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBkYXRh
IEJMT0IsIHBhdGggVEVYVCkiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IElGIE5PVCBFWElTVFMgRGVsZXRlZENhY2hlUmVzb3VyY2VzIChpZCBJTlRFR0VSIFBSSU1BUlkg
S0VZIEFVVE9JTkNSRU1FTlQsIHBhdGggVEVYVCkiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIElHTk9SRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
KSIpOworICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXNDb2RlIElOVEVHRVIgTk9UIE5VTEws
IHJlc3BvbnNlVVJMIFRFWFQgTk9UIE5VTEwsIG1pbWVUeXBlIFRFWFQsIHRleHRFbmNvZGluZ05h
bWUgVEVYVCwgaGVhZGVycyBURVhULCBkYXRhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVY
SVNUUyBDYWNoZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVN
RU5ULCBkYXRhIEJMT0IsIHBhdGggVEVYVCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJD
UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBEZWxldGVkQ2FjaGVSZXNvdXJjZXMgKGlkIElOVEVH
RVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgcGF0aCBURVhUKSJfcyk7CisgICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIE9yaWdpbnMgKG9yaWdpbiBU
RVhUIFVOSVFVRSBPTiBDT05GTElDVCBJR05PUkUsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCkiX3MpOwogCiAgICAgLy8gV2hlbiBhIGNhY2hlIGlzIGRlbGV0ZWQsIGFs
bCBpdHMgZW50cmllcyBhbmQgaXRzIGFsbG93bGlzdCBzaG91bGQgYmUgZGVsZXRlZC4KICAgICBl
eGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRSSUdHRVIgSUYgTk9UIEVYSVNUUyBDYWNoZURlbGV0
ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlcyIKQEAgLTYyNCwxOSArNjIwLDE5IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIENhY2hlV2hpdGVsaXN0
VVJMcyBXSEVSRSBjYWNoZSA9IE9MRC5pZDsiCiAgICAgICAgICAgICAgICAgICAgICAgIiAgREVM
RVRFIEZST00gQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgV0hFUkUgY2FjaGUgPSBPTEQu
aWQ7IgogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIEZhbGxiYWNrVVJMcyBX
SEVSRSBjYWNoZSA9IE9MRC5pZDsiCi0gICAgICAgICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAiIEVORCJfcyk7CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgZW50
cnkgaXMgZGVsZXRlZCwgaXRzIHJlc291cmNlIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQuCiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUUklHR0VSIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRy
eURlbGV0ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlRW50cmllcyIKICAgICAgICAgICAgICAgICAg
ICAgICAiIEZPUiBFQUNIIFJPVyBCRUdJTiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxF
VEUgRlJPTSBDYWNoZVJlc291cmNlcyBXSEVSRSBpZCA9IE9MRC5yZXNvdXJjZTsiCi0gICAgICAg
ICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAiIEVORCJfcyk7
CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgcmVzb3VyY2UgaXMgZGVsZXRlZCwgaXRzIGRhdGEgYmxv
YiBzaG91bGQgYWxzbyBiZSBkZWxldGVkLgogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VFJJR0dFUiBJRiBOT1QgRVhJU1RTIENhY2hlUmVzb3VyY2VEZWxldGVkIEFGVEVSIERFTEVURSBP
TiBDYWNoZVJlc291cmNlcyIKICAgICAgICAgICAgICAgICAgICAgICAiIEZPUiBFQUNIIFJPVyBC
RUdJTiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBDYWNoZVJlc291cmNl
RGF0YSBXSEVSRSBpZCA9IE9MRC5kYXRhOyIKLSAgICAgICAgICAgICAgICAgICAgICAiIEVORCIp
OworICAgICAgICAgICAgICAgICAgICAgICIgRU5EIl9zKTsKICAgICAKICAgICAvLyBXaGVuIGEg
Y2FjaGUgcmVzb3VyY2UgaXMgZGVsZXRlZCwgaWYgaXQgY29udGFpbnMgYSBub24tZW1wdHkgcGF0
aCwgdGhhdCBwYXRoIHNob3VsZAogICAgIC8vIGJlIGFkZGVkIHRvIHRoZSBEZWxldGVkQ2FjaGVS
ZXNvdXJjZXMgdGFibGUgc28gdGhlIGZsYXQgZmlsZSBhdCB0aGF0IHBhdGggY2FuCkBAIC02NDUs
NyArNjQxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKGJv
b2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgIiBGT1IgRUFD
SCBST1ciCiAgICAgICAgICAgICAgICAgICAgICAgIiBXSEVOIE9MRC5wYXRoIE5PVCBOVUxMIEJF
R0lOIgogICAgICAgICAgICAgICAgICAgICAgICIgIElOU0VSVCBJTlRPIERlbGV0ZWRDYWNoZVJl
c291cmNlcyAocGF0aCkgdmFsdWVzIChPTEQucGF0aCk7IgotICAgICAgICAgICAgICAgICAgICAg
ICIgRU5EIik7CisgICAgICAgICAgICAgICAgICAgICAgIiBFTkQiX3MpOwogfQogCiBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYg
c3RhdGVtZW50KQpAQCAtMTI1Niw5ICsxMjUyLDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZW1wdHkoKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gQ2xlYXIgY2FjaGUg
Z3JvdXBzLCBjYWNoZXMsIGNhY2hlIHJlc291cmNlcywgYW5kIG9yaWdpbnMuCi0gICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENhY2hlR3JvdXBzIik7Ci0gICAgZXhlY3V0ZVNRTENv
bW1hbmQoIkRFTEVURSBGUk9NIENhY2hlcyIpOwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJERUxF
VEUgRlJPTSBPcmlnaW5zIik7CisgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENh
Y2hlR3JvdXBzIl9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gQ2FjaGVz
Il9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gT3JpZ2lucyJfcyk7CiAg
ICAgCiAgICAgLy8gQ2xlYXIgdGhlIHN0b3JhZ2UgSURzIGZvciB0aGUgY2FjaGVzIGluIG1lbW9y
eS4KICAgICAvLyBUaGUgY2FjaGVzIHdpbGwgc3RpbGwgd29yaywgYnV0IGNhY2hlZCByZXNvdXJj
ZXMgd2lsbCBub3QgYmUgc2F2ZWQgdG8gZGlzayAKQEAgLTE0MzksNyArMTQzNSw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNoZWNrRm9yRGVsZXRlZFJlc291cmNlcygpCiAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgIH0gd2hpbGUgKHNlbGVj
dFBhdGhzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVyk7CiAgICAgCi0gICAgZXhlY3V0ZVNRTENvbW1h
bmQoIkRFTEVURSBGUk9NIERlbGV0ZWRDYWNoZVJlc291cmNlcyIpOworICAgIGV4ZWN1dGVTUUxD
b21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiX3MpOwogfQogICAgIAog
bG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFTaXplKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgKaW5kZXggMDMzMDJlN2IwODRhMjAyYmFmMWUzYmNiNTBjZWM5ZDJkMDVlNzEz
ZC4uNmJhMGE5OTdiZWIyYTdiNDM1M2FlNTViNDI0YzQ4ODJkZjQ3ZWFlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbkRhdGFiYXNl
KGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIAogICAgIGJvb2wgZXhlY3V0ZVN0YXRl
bWVudChTUUxpdGVTdGF0ZW1lbnQmKTsKLSAgICBib29sIGV4ZWN1dGVTUUxDb21tYW5kKGNvbnN0
IFN0cmluZyYpOworICAgIGJvb2wgZXhlY3V0ZVNRTENvbW1hbmQoQVNDSUlMaXRlcmFsKTsKIAog
ICAgIHZvaWQgY2hlY2tGb3JNYXhTaXplUmVhY2hlZCgpOwogICAgIHZvaWQgY2hlY2tGb3JEZWxl
dGVkUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCAyYmYzOTEyYmQ0YjcxNzIyM2I0MGNjNDljMTY2
YzFjOTkwNTUyNTMxLi5hNDhkNDE2YzU5MGNiYzg2ZjA4NjU4MDE1NDhiOGZiMzg3ZDNmMDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgIiAg
aHR0cG9ubHkgSU5URUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIlwKICAgICAiICBzZWN1cmUgSU5U
RUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIlwKICAgICAiICBsYXN0dXBkYXRlZCBJTlRFR0VSIE5P
VCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsICJcCi0gICAgIiAgVU5JUVVFKG5hbWUs
IGRvbWFpbiwgcGF0aCkpOyIKKyAgICAiICBVTklRVUUobmFtZSwgZG9tYWluLCBwYXRoKSk7Il9z
CiAjZGVmaW5lIENSRUFURV9ET01BSU5fSU5ERVhfU1FMIFwKLSAgICAiQ1JFQVRFIElOREVYIElG
IE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyIKKyAgICAiQ1JFQVRF
IElOREVYIElGIE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyJfcwog
I2RlZmluZSBDUkVBVEVfUEFUSF9JTkRFWF9TUUwgXAotICAgICJDUkVBVEUgSU5ERVggSUYgTk9U
IEVYSVNUUyBwYXRoX2luZGV4IE9OIENvb2tpZShwYXRoKTsiCisgICAgIkNSRUFURSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIHBhdGhfaW5kZXggT04gQ29va2llKHBhdGgpOyJfcwogI2RlZmluZSBTRUxF
Q1RfQUxMX0RPTUFJTlNfU1FMIFwKLSAgICAiU0VMRUNUIERJU1RJTkNUIGRvbWFpbiBGUk9NIENv
b2tpZTsiCisgICAgIlNFTEVDVCBESVNUSU5DVCBkb21haW4gRlJPTSBDb29raWU7Il9zCiAjZGVm
aW5lIENIRUNLX0VYSVNUU19DT09LSUVfU1FMIFwKLSAgICAiU0VMRUNUIGRvbWFpbiBGUk9NIENv
b2tpZSBXSEVSRSAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSk7IgorICAgICJTRUxF
Q1QgZG9tYWluIEZST00gQ29va2llIFdIRVJFICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9C
ID8pKTsiX3MKICNkZWZpbmUgQ0hFQ0tfRVhJU1RTX0hUVFBPTkxZX0NPT0tJRV9TUUwgXAotICAg
ICJTRUxFQ1QgbmFtZSBGUk9NIENvb2tpZSBXSEVSRSAobmFtZSA9ID8pIEFORCAoZG9tYWluID0g
PykgQU5EIChwYXRoID0gPykgQU5EIChodHRwb25seSA9IDEpOyIKKyAgICAiU0VMRUNUIG5hbWUg
RlJPTSBDb29raWUgV0hFUkUgKG5hbWUgPSA/KSBBTkQgKGRvbWFpbiA9ID8pIEFORCAocGF0aCA9
ID8pIEFORCAoaHR0cG9ubHkgPSAxKTsiX3MKICNkZWZpbmUgU0VUX0NPT0tJRV9TUUwgXAogICAg
ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIENvb2tpZSAobmFtZSwgdmFsdWUsIGRvbWFpbiwgcGF0
aCwgZXhwaXJlcywgc2l6ZSwgc2Vzc2lvbiwgaHR0cG9ubHksIHNlY3VyZSkgIlwKLSAgICAiVkFM
VUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KTsiCisgICAgIlZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPywgPywgPyk7Il9zCiAjZGVmaW5lIERFTEVURV9DT09LSUVfQllfTkFNRV9ET01B
SU5fUEFUSF9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgbmFtZSA9ID8gQU5E
IGRvbWFpbiA9ID8gQU5EIHBhdGggPSA/OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJF
IG5hbWUgPSA/IEFORCBkb21haW4gPSA/IEFORCBwYXRoID0gPzsiX3MKICNkZWZpbmUgREVMRVRF
X0NPT0tJRV9CWV9OQU1FX0RPTUFJTl9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hF
UkUgbmFtZSA9ID8gQU5EIGRvbWFpbiA9ID87IgorICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hF
UkUgbmFtZSA9ID8gQU5EIGRvbWFpbiA9ID87Il9zCiAjZGVmaW5lIERFTEVURV9BTExfU0VTU0lP
Tl9DT09LSUVfU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAx
OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAxOyJfcwogI2RlZmlu
ZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2ll
IFdIRVJFIGRvbWFpbiA9ID8gOyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIGRvbWFp
biA9ID8gOyJfcwogI2RlZmluZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBf
T05MWV9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgKGRvbWFpbiA9ID8pIEFO
RCAoaHR0cG9ubHkgPSAwKTsiCisgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSAoZG9tYWlu
ID0gPykgQU5EIChodHRwb25seSA9IDApOyJfcwogI2RlZmluZSBERUxFVEVfQUxMX0NPT0tJRV9T
UUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWU7IgorICAgICJERUxFVEUgRlJPTSBDb29raWU7
Il9zCiAKIAogLy8gSWYgdGhlIGRhdGFiYXNlIHNjaGVtYSBpcyB1cGRhdGVkOgpAQCAtMjExLDcg
KzIxMSw3IEBAIHZvaWQgQ29va2llSmFyREI6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAgIH0K
IAogICAgIC8vIFVwZGF0ZSB2ZXJzaW9uCi0gICAgZXhlY3V0ZVNxbChtYWtlU3RyaW5nKCJQUkFH
TUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKTsKKyAgICBleGVjdXRlU3FsU2xvdyht
YWtlU3RyaW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKTsKIH0KIAog
dm9pZCBDb29raWVKYXJEQjo6ZGVsZXRlQWxsVGFibGVzKCkKQEAgLTYyNCw3ICs2MjQsNyBAQCBi
b29sIENvb2tpZUphckRCOjpkZWxldGVBbGxDb29raWVzKCkKICAgICByZXR1cm4gZXhlY3V0ZVNx
bChERUxFVEVfQUxMX0NPT0tJRV9TUUwpOwogfQogCi12b2lkIENvb2tpZUphckRCOjpjcmVhdGVQ
cmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQordm9pZCBDb29raWVKYXJEQjo6Y3Jl
YXRlUHJlcGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgc3FsKQogewogICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlSGVhcFN0YXRlbWVudChzcWwpOwogICAgIEFTU0VSVChz
dGF0ZW1lbnQpOwpAQCAtNjM5LDkgKzYzOSw4IEBAIFNRTGl0ZVN0YXRlbWVudCYgQ29va2llSmFy
REI6OnByZXBhcmVkU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogICAgIHJldHVybiAqc3Rh
dGVtZW50OwogfQogCi1ib29sIENvb2tpZUphckRCOjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYg
c3FsKQorc3RhdGljIGJvb2wgZXhlY3V0ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxTUUxpdGVTdGF0
ZW1lbnQsIGludD4mJiBzdGF0ZW1lbnQpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQoc3FsKTsKICAgICBpZiAoIXN0YXRlbWVudCAmJiAhY2hlY2tT
UUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVudC5lcnJvcigpKSkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBwcmVwYXJlICVzIGVycm9yOiAlcyIsIHNxbC5hc2NpaSgpLmRhdGEoKSwgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Niw0
ICs2NTUsMTQgQEAgYm9vbCBDb29raWVKYXJEQjo6ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNx
bCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBDb29raWVKYXJEQjo6ZXhlY3V0ZVNxbFNs
b3coY29uc3QgU3RyaW5nJiBzcWwpCit7CisgICAgZXhlY3V0ZVNRTFN0YXRlbWVudChtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KHNxbCkpOworfQorCitib29sIENvb2tpZUphckRCOjpl
eGVjdXRlU3FsKEFTQ0lJTGl0ZXJhbCBzcWwpCit7CisgICAgZXhlY3V0ZVNRTFN0YXRlbWVudCht
X2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoc3FsKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmgKaW5kZXggN2MwZWE0N2VjZTRmZjBkNDcyY2U1OTVjOTFlYTFjZmE5MGIyNWNhNy4u
Zjc2MTk1YTZjZjczNWZiMWI5NWM2NDUzMTMzZDUzYTY3MjliNzAxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTkzLDkg
KzkzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB2ZXJpZnlTY2hlbWFWZXJzaW9uKCk7CiAgICAg
dm9pZCBkZWxldGVBbGxUYWJsZXMoKTsKIAotICAgIHZvaWQgY3JlYXRlUHJlcGFyZVN0YXRlbWVu
dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoQVNDSUlM
aXRlcmFsKTsKICAgICBTUUxpdGVTdGF0ZW1lbnQmIHByZXBhcmVkU3RhdGVtZW50KGNvbnN0IFN0
cmluZyYpOwotICAgIGJvb2wgZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGV4
ZWN1dGVTcWxTbG93KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgZXhlY3V0ZVNxbChBU0NJSUxp
dGVyYWwpOwogCiAgICAgYm9vbCBkZWxldGVDb29raWVJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIGJvb2wg
aGFzSHR0cE9ubHlDb29raWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFp
biwgY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDk5YzJlNTJhZjQyY2YxMGI3ZTFjNTAyNjZjN2U2ZWYw
NTU1YThhNzcuLjIwMjZmYTIzMTFhN2UxYWM3MGZlNzYzYzk4MjM0OGE2ODY2ZDM1MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMjkz
LDcgKzI5Myw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldE1heGltdW1TaXplKGludDY0X3Qg
c2l6ZSkKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICBlbmFi
bGVBdXRob3JpemVyKGZhbHNlKTsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRl
bWVudChtYWtlU3RyaW5nKCJQUkFHTUEgbWF4X3BhZ2VfY291bnQgPSAiLCBuZXdNYXhQYWdlQ291
bnQpKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJp
bmcoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCA9ICIsIG5ld01heFBhZ2VDb3VudCkpOwogICAgIGlm
ICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpCiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBtYXhpbXVtIHNpemUgb2YgZGF0YWJhc2UgdG8gJWxs
aSBieXRlcyIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc2l6ZSkpOwogCkBAIC0zNTEsNyArMzUx
LDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKCkKIAogdm9pZCBTUUxpdGVE
YXRhYmFzZTo6c2V0U3luY2hyb25vdXMoU3luY2hyb25vdXNQcmFnbWEgc3luYykKIHsKLSAgICBl
eGVjdXRlQ29tbWFuZChtYWtlU3RyaW5nKCJQUkFHTUEgc3luY2hyb25vdXMgPSAiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3luYykpKTsKKyAgICBleGVjdXRlQ29tbWFuZFNsb3cobWFrZVN0cmlu
ZygiUFJBR01BIHN5bmNocm9ub3VzID0gIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN5bmMpKSk7
CiB9CiAKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEJ1c3lUaW1lb3V0KGludCBtcykKQEAgLTM3
MCw5ICszNzAsOSBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRCdXN5SGFuZGxlcihpbnQoKmhh
bmRsZXIpKHZvaWQqLCBpbnQpKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJCdXN5IGhhbmRs
ZXIgc2V0IG9uIG5vbi1vcGVuIGRhdGFiYXNlIik7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6
OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFN0cmluZyYgcXVlcnkpCitib29sIFNRTGl0ZURhdGFiYXNl
OjpleGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeSkKIHsKLSAgICBhdXRvIHN0
YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnkpOworICAgIGF1dG8gc3RhdGVtZW50ID0g
cHJlcGFyZVN0YXRlbWVudFNsb3cocXVlcnkpOwogICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3Rh
dGVtZW50LT5leGVjdXRlQ29tbWFuZCgpOwogfQogCkBAIC0zODIsMTkgKzM4MiwxNyBAQCBib29s
IFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwgcXVlcnkpCiAgICAg
cmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCk7CiB9CiAKLWJv
b2wgU1FMaXRlRGF0YWJhc2U6OnJldHVybnNBdExlYXN0T25lUmVzdWx0KGNvbnN0IFN0cmluZyYg
c3FsKQotewotICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudChzcWwpOwotICAg
IHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5yZXR1cm5zQXRMZWFzdE9uZVJlc3VsdCgp
OwotfQotCi1ib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHRh
YmxlbmFtZSkKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKQogewogICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIG5hbWUgRlJP
TSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndGFibGUnIEFORCBuYW1lID0gJyIgKyB0YWJs
ZW5hbWUgKyAiJzsiX3MpOwotICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5zdGVw
KCkgPT0gU1FMSVRFX1JPVzsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQo
IlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ3RhYmxlJyBBTkQg
bmFtZSA9ID87Il9zKTsKKyAgICBpZiAoIXN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09L
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0YXRlbWVudC0+c3RlcCgpID09
IFNRTElURV9ST1c7CiB9CiAKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKCkK
QEAgLTQwOSw3ICs0MDcsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcygp
CiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgdGFibGUgPSB0YWJsZXMuYmVnaW4o
KTsgdGFibGUgIT0gdGFibGVzLmVuZCgpOyArK3RhYmxlICkgewogICAgICAgICBpZiAoKnRhYmxl
ID09ICJzcWxpdGVfc2VxdWVuY2UiKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
ICghZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgIiArICp0YWJsZSkpCisgICAgICAgIGlmICgh
ZXhlY3V0ZUNvbW1hbmRTbG93KCJEUk9QIFRBQkxFICIgKyAqdGFibGUpKQogICAgICAgICAgICAg
TE9HKFNRTERhdGFiYXNlLCAiVW5hYmxlIHRvIGRyb3AgdGFibGUgJXMiLCAoKnRhYmxlKS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgfQogfQpAQCAtNjc3LDcgKzY3NSw3IEBAIHN0YXRpYyBFeHBlY3Rl
ZDxzcWxpdGUzX3N0bXQqLCBpbnQ+IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoU1FMaXRl
RGF0YWJhc2UmCiAgICAgcmV0dXJuIHN0YXRlbWVudDsKIH0KIAotRXhwZWN0ZWQ8U1FMaXRlU3Rh
dGVtZW50LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmlu
ZyYgcXVlcnlTdHJpbmcpCitFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0
YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCiB7
CiAgICAgQ1N0cmluZyBxdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLnV0Zjgo
KTsKICAgICBhdXRvIHNxbFN0YXRlbWVudCA9IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQo
KnRoaXMsIHF1ZXJ5LmRhdGEoKSwgcXVlcnkubGVuZ3RoKCkpOwpAQCAtNjk4LDcgKzY5Niw3IEBA
IEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0
YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlCiAgICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudCB7ICp0
aGlzLCBzcWxTdGF0ZW1lbnQudmFsdWUoKSB9OwogfQogCi1FeHBlY3RlZDxVbmlxdWVSZWY8U1FM
aXRlU3RhdGVtZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQo
Y29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKK0V4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0
ZW1lbnQ+LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coY29u
c3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlTdHJp
bmcuc3RyaXBXaGl0ZVNwYWNlKCkudXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0gY29u
c3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5sZW5n
dGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmlu
ZGV4IGMwNDVmZTU5M2Q3OTlkNTIwODBkZGI5Mzk2YzQ5MzQyMTNlN2NkODAuLjA5ZjU5MWUxYWU0
NDU1ZTdlZDkzZDUwZDk1ODdjZTU5NDRjNGJlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC02MiwxMCArNjIsOCBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUxhc3RDaGFuZ2VzQ291bnQoKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwpOwotCi0gICAg
Ym9vbCByZXR1cm5zQXRMZWFzdE9uZVJlc3VsdChjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxUYWJsZXMoKTsKQEAgLTc0LDkgKzcyLDkgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4g
bV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVk
PFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgcXVl
cnkpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBw
cmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KTsKICAgICBXRUJDT1JFX0VY
UE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudChBU0NJ
SUxpdGVyYWwgcXVlcnkpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxT
UUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
cXVlcnkpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0
ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50
PiwgaW50PiBwcmVwYXJlSGVhcFN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwogCiAgICAg
Ly8gQWJvcnRzIHRoZSBjdXJyZW50IGRhdGFiYXNlIG9wZXJhdGlvbi4gVGhpcyBpcyB0aHJlYWQg
c2FmZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDk3MWJiYTU2NzQ3NGViNjg5NmNlNTYxYzdlNjk5NzY2MDRkZGU3OGMuLjA4
ZTllYjczZGIyNGEwOTBhN2EwODBjMWE4MTU2OTMxOGU1YTI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApAQCAtNjIsOSArNjIs
OSBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiAgICAgICAgIFNRTGl0ZURhdGFi
YXNlVHJhY2tlcjo6aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRp
ZgogICAgICAgICBpZiAobV9yZWFkT25seSkKLSAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1f
ZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIik7CisgICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBt
X2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiJfcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSIpOwor
ICAgICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4gSU1N
RURJQVRFIl9zKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1faW5Q
cm9ncmVzczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1faW5Qcm9n
cmVzcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkK
IHsKICAgICBpZiAobV9pblByb2dyZXNzKSB7CiAgICAgICAgIEFTU0VSVChtX2RiLm1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNv
bW1hbmQoIkNPTU1JVCIpOworICAgICAgICBtX2luUHJvZ3Jlc3MgPSAhbV9kYi5leGVjdXRlQ29t
bWFuZCgiQ09NTUlUIl9zKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IG1faW5Qcm9ncmVzczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1f
aW5Qcm9ncmVzcykKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9s
bGJhY2soKQogICAgIC8vIGEgbm9uLXplcm8vdHJ1ZSByZXN1bHQgKGh0dHA6Ly93d3cuc3FsaXRl
Lm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgogICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKICAg
ICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2Ri
LmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpOworICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5k
KCJST0xMQkFDSyJfcyk7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICBt
X2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
REIuY3BwCmluZGV4IGExOTM5YWFkMWIwYzg2ZjAzNWRhMDA5MjVmZmVjZjE3OWQ5NjdkYmEuLjg4
ZTMxYjIwYWI4ZDhiOTg1MzY4NDMxM2MwYjgxZDE4Nzk1MzJlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjU0LDcgKzI1
NCw3IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51REI6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAg
IH0KIAogICAgIC8vIFVwZGF0ZSB2ZXJzaW9uCi0gICAgZXhlY3V0ZVNpbXBsZVNxbChtYWtlU3Ry
aW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKTsKKyAgICBleGVjdXRl
U2ltcGxlU3FsU2xvdyhtYWtlU3RyaW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZl
cnNpb24pKTsKIH0KIAogdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6Y2hlY2tTUUxpdGVSZXR1cm5D
b2RlKGludCBhY3R1YWwpCkBAIC0yNzEsOSArMjcxLDggQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVE
Qjo6Y2hlY2tTUUxpdGVSZXR1cm5Db2RlKGludCBhY3R1YWwpCiAgICAgfQogfQogCi1pbnQgU2Vh
cmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wg
aWdub3JlRXJyb3IpCitzdGF0aWMgaW50IGV4ZWN1dGVTUUxTdGF0ZW1lbnQoRXhwZWN0ZWQ8U1FM
aXRlU3RhdGVtZW50LCBpbnQ+JiYgc3RhdGVtZW50LCBib29sIGlnbm9yZUVycm9yKQogewotICAg
IGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KHNxbCk7CiAgICAg
aWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAgY2hlY2tTUUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVu
dC5lcnJvcigpKTsKICAgICAgICAgcmV0dXJuIHN0YXRlbWVudC5lcnJvcigpOwpAQCAtMjg1LDYg
KzI4NCwxNiBAQCBpbnQgU2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3Qg
U3RyaW5nJiBzcWwsIGJvb2wgaWdub3JlRXJyb3IpCiAgICAgcmV0dXJuIHJldDsKIH0KIAoraW50
IFNlYXJjaFBvcHVwTWVudURCOjpleGVjdXRlU2ltcGxlU3FsKEFTQ0lJTGl0ZXJhbCBzcWwsIGJv
b2wgaWdub3JlRXJyb3IpCit7CisgICAgcmV0dXJuIGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KHNxbCksIGlnbm9yZUVycm9yKTsKK30KKworaW50IFNlYXJj
aFBvcHVwTWVudURCOjpleGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGln
bm9yZUVycm9yKQoreworICAgIHJldHVybiBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudFNsb3coc3FsKSwgaWdub3JlRXJyb3IpOworfQorCiBzdGQ6OnVuaXF1
ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRT
dGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHNxbCkKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZUhlYXBTdGF0ZW1lbnQoc3FsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmgKaW5kZXggZjkxM2Y0M2VhNWQwYTRmNzQzMWE3
OTJiMTY4MzgwZDc5ZDcyYTYxNy4uZmZlMjRmYmVlNWQwNTFhYzNlYzRjNmQwZGM4NGMzNmYwYjVl
OGY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVw
TWVudURCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dURCLmgKQEAgLTQ5LDcgKzQ5LDggQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrRGF0YWJhc2VW
YWxpZGl0eSgpOwogICAgIHZvaWQgZGVsZXRlQWxsRGF0YWJhc2VGaWxlcygpOwogICAgIHZvaWQg
dmVyaWZ5U2NoZW1hVmVyc2lvbigpOwotICAgIGludCBleGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0
cmluZyYgc3FsLCBib29sIGlnbm9yZUVycm9yID0gZmFsc2UpOworICAgIGludCBleGVjdXRlU2lt
cGxlU3FsKEFTQ0lJTGl0ZXJhbCBzcWwsIGJvb2wgaWdub3JlRXJyb3IgPSBmYWxzZSk7CisgICAg
aW50IGV4ZWN1dGVTaW1wbGVTcWxTbG93KGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVy
cm9yID0gZmFsc2UpOwogICAgIHZvaWQgY2hlY2tTUUxpdGVSZXR1cm5Db2RlKGludCBhY3R1YWwp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IGNyZWF0ZVByZXBhcmVkU3Rh
dGVtZW50KEFTQ0lJTGl0ZXJhbCBzcWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmlu
ZGV4IGIwYzcxNjFhODA2YTg2OGVjNGZmNDQ3NjUzYmI4NTNmYzA5Njg0NWIuLmVmMTFhNzNjYjBl
YmNhNjkyNDFmNjAyMzQxNDIzOTA1NjZhY2RiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwCkBAIC01Miw5ICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0
IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA2OwogCi1zdGF0aWMgY29uc3QgU3RyaW5nIHJlY29y
ZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKK3N0YXRpYyBBU0NJSUxpdGVy
YWwgcmVjb3Jkc1RhYmxlU2NoZW1hKCkKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygiQ1JFQVRF
IFRBQkxFICIsIHRhYmxlTmFtZSwgIiAoIgorICAgIHJldHVybiAiQ1JFQVRFIFRBQkxFIFJlY29y
ZHMgKCIKICAgICAgICAgImtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVF
IE9OIENPTkZMSUNUIFJFUExBQ0UiCiAgICAgICAgICIsIG9yaWdpbiBURVhUIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHNjb3BlVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCIKQEAgLTY3LDIxICs2NywyNSBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29y
ZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICAgICAgIiwgcmVmZXJy
ZXJQb2xpY3kgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCBzY3Jp
cHRSZXNvdXJjZU1hcCBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIs
IGNlcnRpZmljYXRlSW5mbyBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCi0gICAgICAg
ICIpIik7Ci19Ci0KLXN0YXRpYyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKCkKLXsK
LSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBzY2hlbWEocmVjb3Jkc1RhYmxlU2NoZW1hKCJSZWNvcmRzIikpOwotICAgIHJldHVy
biBzY2hlbWE7CisgICAgICAgICIpIl9zOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29y
ZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2NoZW1hKHJlY29yZHNUYWJsZVNj
aGVtYSgiXCJSZWNvcmRzXCIiKSk7Ci0gICAgcmV0dXJuIHNjaGVtYTsKKyAgICByZXR1cm4gIkNS
RUFURSBUQUJMRSBcIlJlY29yZHNcIiAoIgorICAgICAgICAia2V5IFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSIKKyAgICAgICAgIiwgb3Jp
Z2luIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgc2NvcGVVUkwg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCB0b3BPcmlnaW4gVEVY
VCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCBsYXN0VXBkYXRlQ2hlY2tU
aW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCB1cGRhdGVW
aWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIHNjcmlw
dFVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIHdvcmtlclR5
cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCBy
ZWZlcnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIs
IHNjcmlwdFJlc291cmNlTWFwIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAg
ICAgIiwgY2VydGlmaWNhdGVJbmZvIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAg
ICAgICAgIikiX3M7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGRhdGFiYXNlRmlsZW5hbWVG
cm9tVmVyc2lvbih1aW50NjRfdCB2ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggYThhZWQ3MzE2NTE1NWUwY2Yx
ZjJiZDM2MmIxMWU4OWY5YjJkZTI5Yy4uODI4NzFjZTQ4YzgzYmY1NmYyM2MyMGE0ZjRjMjA4Y2Uw
ZjU3MWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCkBAIC00MzYsMTMgKzQzNiwxOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbmFibGVGb3JlaWduS2V5cygpCiAKIFRhYmxlQW5kSW5k
ZXhQYWlyIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpZXMoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7Ci0gICAgYXV0byBnZXRU
YWJsZVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJT
RUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0nIiwgdGFibGVOYW1l
LCAiJyBBTkQgdHlwZSA9ICd0YWJsZSciKSk7CisgICAgYXV0byBnZXRUYWJsZVN0YXRlbWVudCA9
IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0
ZXIgV0hFUkUgdGJsX25hbWU9PyBBTkQgdHlwZSA9ICd0YWJsZSciX3MpOwogICAgIGlmICghZ2V0
VGFibGVTdGF0ZW1lbnQpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmllcyBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZv
ciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAorICAgIGlmIChnZXRUYWJsZVN0YXRlbWVu
dC0+YmluZFRleHQoMSwgdGFibGVOYW1lKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0ZW1l
bnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZB
VEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAg
IGlmIChnZXRUYWJsZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBlcnJvciBleGVjdXRpbmcg
c3RhdGVtZW50IHRvIGZldGNoIHRhYmxlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00NTEsMTMgKzQ1NywxOSBAQCBUYWJsZUFuZEluZGV4
UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5k
SW5kZXhRdWVyaQogCiAgICAgU3RyaW5nIGNyZWF0ZVRhYmxlUXVlcnkgPSBnZXRUYWJsZVN0YXRl
bWVudC0+Z2V0Q29sdW1uVGV4dCgwKTsKIAotICAgIGF1dG8gZ2V0SW5kZXhTdGF0ZW1lbnQgPSBt
X2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiU0VMRUNUIHNxbCBGUk9NIHNx
bGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25hbWU9JyIsIHRhYmxlTmFtZSwgIicgQU5EIHR5cGUgPSAn
aW5kZXgnIikpOworICAgIGF1dG8gZ2V0SW5kZXhTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1l
PT8gQU5EIHR5cGUgPSAnaW5kZXgnIl9zKTsKICAgICBpZiAoIWdldEluZGV4U3RhdGVtZW50KSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxl
IHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9y
IG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAorICAgIGlmIChnZXRJbmRleFN0YXRlbWVudC0+YmluZFRleHQoMSwgdGFi
bGVOYW1lKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJs
ZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0ZW1lbnQgdG8gZmV0Y2ggaW5kZXgg
Zm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBp
bmRleDsKICAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7
CiAgICAgICAgIGF1dG8gcmF3SW5kZXggPSBTdHJpbmcoZ2V0SW5kZXhTdGF0ZW1lbnQtPmdldENv
bHVtblRleHQoMCkpOwpAQCAtNTIxLDI3ICs1MzMsMjcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6bmVlZHNVcGRhdGVkU2NoZW1hKCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyBTdHJpbmcgaW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRhYmxlUXVlcnko
Y29uc3QgU3RyaW5nJiB0YWJsZSkKK3N0YXRpYyBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGlu
dD4gaW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlJiBk
YXRhYmFzZSwgY29uc3QgU3RyaW5nJiB0YWJsZSkKIHsKICAgICBpZiAodGFibGUgPT0gIlN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSU5T
RVJUIElOVE8gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3ViRnJhbWVEb21h
aW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YkZyYW1lRG9tYWluSUQsIHRvcEZyYW1lRG9t
YWluSUQiKTsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VS
VCBJTlRPIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YkZyYW1lRG9tYWlu
SUQsIE1BWChsYXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucyBHUk9VUCBCWSBzdWJGcmFtZURvbWFpbklELCB0b3BGcmFtZURvbWFp
bklEIl9zKTsKIAogICAgIGlmICh0YWJsZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9t
YWlucyIpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBNQVgobGFz
dFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCwgdG9wRnJhbWVEb21haW5JRCIp
OworICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8g
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5J
RCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvcEZyYW1l
RG9tYWluSUQiX3MpOwogCiAgICAgaWYgKHRhYmxlID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvIikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPIFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8gU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIE1BWChsYXN0
VXBkYXRlZCksIHRvRG9tYWluSUQgRlJPTSBfU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBH
Uk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEIik7CisgICAgICAgIHJldHVy
biBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQp
LCB0b0RvbWFpbklEIEZST00gX1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gR1JPVVAgQlkg
c3VicmVzb3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFibGUgPT0g
IlRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSIpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCJJTlNFUlQgSU5UTyBUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gU0VMRUNUIHRvRG9tYWlu
SUQsIE1BWChsYXN0VXBkYXRlZCksIGZyb21Eb21haW5JRCBGUk9NIF9Ub3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb20gR1JPVVAgQlkgdG9Eb21haW5JRCwgZnJvbURvbWFpbklEIik7CisgICAgICAg
IHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBUb3BGcmFtZUxp
bmtEZWNvcmF0aW9uc0Zyb20gU0VMRUNUIHRvRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIGZy
b21Eb21haW5JRCBGUk9NIF9Ub3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gR1JPVVAgQlkgdG9E
b21haW5JRCwgZnJvbURvbWFpbklEIl9zKTsKIAogICAgIGlmICh0YWJsZSA9PSAiVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygi
SU5TRVJUIElOVE8gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VMRUNUIHNv
dXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNvdXJjZUlELCBNQVgo
dGltZU9mQWRDbGljayksIHRva2VuLCBzaWduYXR1cmUsIGtleUlEIEZST00gX1VuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50IEdST1VQIEJZIHNvdXJjZVNpdGVEb21haW5JRCwgZGVz
dGluYXRpb25TaXRlRG9tYWluSUQiKTsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIklOU0VSVCBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
IFNFTEVDVCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3Vy
Y2VJRCwgTUFYKHRpbWVPZkFkQ2xpY2spLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCBGUk9NIF9V
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBHUk9VUCBCWSBzb3VyY2VTaXRlRG9t
YWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zKTsKIAogICAgIGlmICh0YWJsZSA9PSAi
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IikKLSAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoIklOU0VSVCBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxF
Q1Qgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQs
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCBNQVgodGltZU9mQWRDbGljayksIGVh
cmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGll
c3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIF9BdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21h
aW5JRCIpOworICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJU
IElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFTEVDVCBzb3VyY2VTaXRl
RG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJRCwgYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSwgcHJpb3JpdHksIE1BWCh0aW1lT2ZBZENsaWNrKSwgZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRU
b0Rlc3RpbmF0aW9uIEZST00gX0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBHUk9V
UCBCWSBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zKTsKIAot
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyAiLCB0YWJsZSwgIiBTRUxFQ1QgRElT
VElOQ1QgKiBGUk9NIF8iLCB0YWJsZSk7CisgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0
ZW1lbnRTbG93KG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPICIsIHRhYmxlLCAiIFNFTEVDVCBESVNU
SU5DVCAqIEZST00gXyIsIHRhYmxlKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpCkBAIC01
NTMsOCArNTY1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKICAgICB0cmFuc2FjdGlvbi5iZWdp
bigpOwogCiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJp
ZXMoKS5rZXlzKCkpIHsKLSAgICAgICAgYXV0byBxdWVyeSA9IG1ha2VTdHJpbmcoIkFMVEVSIFRB
QkxFICIsIHRhYmxlLCAiIFJFTkFNRSBUTyBfIiwgdGFibGUpOwotICAgICAgICBhdXRvIGFsdGVy
VGFibGUgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQocXVlcnkpOworICAgICAgICBhdXRv
IGFsdGVyVGFibGUgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmco
IkFMVEVSIFRBQkxFICIsIHRhYmxlLCAiIFJFTkFNRSBUTyBfIiwgdGFibGUpKTsKICAgICAgICAg
aWYgKCFhbHRlclRhYmxlIHx8IGFsdGVyVGFibGUtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewog
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2Fy
eSBmYWlsZWQgdG8gcmVuYW1lIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC01NjksMTYgKzU4MCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKQogICAgIH0KIAogICAg
IGZvciAoYXV0byYgdGFibGUgOiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygp
KSB7Ci0gICAgICAgIGF1dG8gcXVlcnkgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVRdWVy
eSh0YWJsZSk7Ci0gICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudChxdWVyeSk7CisgICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGlu
c2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChtX2RhdGFiYXNlLCB0YWJsZSk7CiAg
ICAgICAgIGlmICghbWlncmF0ZVRhYmxlRGF0YSB8fCBtaWdyYXRlVGFibGVEYXRhLT5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRv
TmV3VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1hLCBlcnJvciBtZXNz
YWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIGRyb3BRdWVyeSA9IG1ha2VTdHJpbmcoIkRST1AgVEFCTEUgXyIsIHRhYmxl
KTsKLSAgICAgICAgYXV0byBkcm9wVGFibGVRdWVyeSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRl
bWVudChkcm9wUXVlcnkpOworICAgICAgICBhdXRvIGRyb3BUYWJsZVF1ZXJ5ID0gbV9kYXRhYmFz
ZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJEUk9QIFRBQkxFIF8iLCB0YWJsZSkp
OwogICAgICAgICBpZiAoIWRyb3BUYWJsZVF1ZXJ5IHx8IGRyb3BUYWJsZVF1ZXJ5LT5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRv
TmV3VGFibGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGRyb3AgdGVtcG9yYXJ5IHRhYmxlcywgZXJy
b3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTk3LDcgKzYwNiw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJ
Zk5lY2Vzc2FyeSgpCiAKIFZlY3RvcjxTdHJpbmc+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7Ci0g
ICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmlu
ZygiUFJBR01BIHRhYmxlX2luZm8oIiwgdGFibGVOYW1lLCAiKSIpKTsKKyAgICBhdXRvIHN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiUFJBR01B
IHRhYmxlX2luZm8oIiwgdGFibGVOYW1lLCAiKSIpKTsKIAogICAgIGlmICghc3RhdGVtZW50KSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRDb2x1bW5zRnJvbVRhYmxlSW5mb1N0YXRlbWVudCBV
bmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0YWJsZSwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKQEAgLTYyMiw3ICs2MzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoU3RyaW5nJiYgdGFibAog
ICAgICAgICBpZiAoZXhpc3RpbmdDb2x1bW5zLmNvbnRhaW5zKGNvbHVtbikpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFz
ZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlTmFtZSwg
IiBBREQgQ09MVU1OICIsIGNvbHVtbikpOworICAgICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFi
bGVOYW1lLCAiIEFERCBDT0xVTU4gIiwgY29sdW1uKSk7CiAgICAgICAgIGlmICghc3RhdGVtZW50
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlIFVu
YWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBhZGQgbWlzc2luZyBjb2x1bW5zIHRvIHRhYmxl
LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02
NDgsNyArNjU3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
YWRkTWlzc2luZ0NvbHVtbnNJZk5lY2Vzc2FyeSgpCiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNvbHVtbkluVGFibGUoU3RyaW5nJiYgdGFibGVOYW1l
LCBFeGlzdGluZ0NvbHVtbk5hbWUmJiBleGlzdGluZ0NvbHVtbk5hbWUsIEV4cGVjdGVkQ29sdW1u
TmFtZSYmIGV4cGVjdGVkQ29sdW1uTmFtZSkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5h
bWUsICIgUkVOQU1FIENPTFVNTiAiLCBleGlzdGluZ0NvbHVtbk5hbWUsICIgVE8gIiwgZXhwZWN0
ZWRDb2x1bW5OYW1lKSk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlTmFtZSwgIiBSRU5B
TUUgQ09MVU1OICIsIGV4aXN0aW5nQ29sdW1uTmFtZSwgIiBUTyAiLCBleHBlY3RlZENvbHVtbk5h
bWUpKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlz
c2luZ0NvbHVtbnNUb1RhYmxlIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byByZW5hbWUg
Y29sdW1uIGluIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTY5Myw3ICs3MDIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjphZGRNaXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKQogCiAgICAgZm9yIChhdXRv
JiB0YWJsZSA6ICptaXNzaW5nVGFibGVzKSB7CiAgICAgICAgIGF1dG8gY3JlYXRlVGFibGVRdWVy
eSA9IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5nZXQodGFibGUpLmZpcnN0OwotICAg
ICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVGFibGVRdWVyeSkpCisg
ICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZFNsb3coY3JlYXRlVGFibGVRdWVy
eSkpCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ1RhYmxlcyBmYWlsZWQgdG8g
ZXhlY3V0ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgIH0KIApAQCAtMTA0MCw3ICsxMDQ5LDcgQEAgU3Ry
aW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVBbmRNYWtlRG9t
YWluTGlzdChjb25zdCBIYXNoU2UKIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25zdCBTdHJpbmcmIHN0YXRl
bWVudCwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbkxpc3QsIHVuc2ln
bmVkIGRvbWFpbklEKQogewotICAgIGF1dG8gaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoc3RhdGVtZW50LCBlbnN1cmVB
bmRNYWtlRG9tYWluTGlzdChkb21haW5MaXN0KSwgIiApOyIpKTsKKyAgICBhdXRvIGluc2VydFJl
bGF0aW9uc2hpcFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFr
ZVN0cmluZyhzdGF0ZW1lbnQsIGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGRvbWFpbkxpc3QpLCAi
ICk7IikpOwogICAgIAogICAgIGlmICghaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50CiAgICAg
ICAgIHx8IGluc2VydFJlbGF0aW9uc2hpcFN0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkg
IT0gU1FMSVRFX09LKSB7CkBAIC0xMTgxLDkgKzExOTAsOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YQogICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRpc3RpYyk7CiB9CiAK
LXN0YXRpYyBjb25zdCBTdHJpbmdWaWV3IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpCitz
dGF0aWMgQVNDSUlMaXRlcmFsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpCiB7Ci0gICAg
cmV0dXJuICJkb21haW5JRCwiCisgICAgcmV0dXJuICJTRUxFQ1QgZG9tYWluSUQsIgogICAgICAg
ICAiKGNvdW50U3ViRnJhbWVVbmRlclRvcEZyYW1lICsgY291bnRTdWJSZXNvdXJjZVVuZGVyVG9w
RnJhbWUgKyBjb3VudFVuaXF1ZVJlZGlyZWN0VG8pIGFzIHN1bSAgIgogICAgICAgICAiRlJPTSAo
ICIKICAgICAgICAgIlNFTEVDVCAiCkBAIC0xMTk4LDcgKzEyMDcsNyBAQCBzdGF0aWMgY29uc3Qg
U3RyaW5nVmlldyBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKQogICAgICAgICAiTEVGVCBK
T0lOIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gdSBPTiBvLmRvbWFpbklEID0gdS5zdWJy
ZXNvdXJjZURvbWFpbklEICIKICAgICAgICAgIldIRVJFIGlzUHJldmFsZW50IExJS0UgPyAiCiAg
ICAgICAgICJhbmQgaGFkVXNlckludGVyYWN0aW9uIExJS0UgPyAiCi0gICAgICAgICJHUk9VUCBC
WSBkb21haW5JRCkgT1JERVIgQlkgc3VtIERFU0MgIjsKKyAgICAgICAgIkdST1VQIEJZIGRvbWFp
bklEKSBPUkRFUiBCWSBzdW0gREVTQzsiX3M7CiB9CiAKIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVj
aWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVkIHRoaXJkUGFydHlEb21haW5JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4pIGNvbnN0CkBAIC0xMjMwLDcgKzEy
MzksNyBAQCBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5
RGF0YT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdAogCiAgICAgVmVjdG9yPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsK
ICAgICBjb25zdCBhdXRvIHByZXZhbGVudERvbWFpbnNCaW5kUGFyYW1ldGVyID0gdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSgpID09IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bCA/ICIlIiA6ICIxIjsKLSAgICBhdXRvIHNvcnRlZFN0YXRpc3RpY3MgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9y
U29ydGluZygpKSk7CisgICAgYXV0byBzb3J0ZWRTdGF0aXN0aWNzID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpKTsKICAgICBpZiAoIXNv
cnRlZFN0YXRpc3RpY3MKICAgICAgICAgfHwgc29ydGVkU3RhdGlzdGljcy0+YmluZFRleHQoMSwg
cHJldmFsZW50RG9tYWluc0JpbmRQYXJhbWV0ZXIpCiAgICAgICAgIHx8IHNvcnRlZFN0YXRpc3Rp
Y3MtPmJpbmRUZXh0KDIsICIlIikgIT0gU1FMSVRFX09LKSB7CkBAIC0xMjY2LDcgKzEyNzUsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1lbnRSZWNv
cmRzRGVsZXRlZENvdW50Rm9yRG9tYWlucwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZGF0
YVJlY29yZHNSZW1vdmVkID0gZGF0YVJlY29yZHNSZW1vdmVkICsgMSBXSEVSRSByZWdpc3RyYWJs
ZURvbWFpbiBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsKKyAgICBhdXRv
IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNs
b3cobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZGF0YVJlY29yZHNSZW1v
dmVkID0gZGF0YVJlY29yZHNSZW1vdmVkICsgMSBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBJTiAo
IiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsKICAgICBpZiAoIWRvbWFpbnNUb1Vw
ZGF0ZVN0YXRlbWVudCB8fCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVtZW50
U3RhdGlzdGljc0ZvckRvbWFpbnMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzNTIsNyArMTM2MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRv
UHJldmFsCiAgICAgICAgICAgICBwcmV2YWxlbnREdWVUb1JlZGlyZWN0Lmluc2VydCh0b3BGcmFt
ZVJlZGlyZWN0U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOwogICAgIH0KIAotICAgIGF1dG8g
bWFya1ByZXZhbGVudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtl
U3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDEgV0hFUkUg
ZG9tYWluSUQgSU4gKCIsIGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2ln
bmVkPjo6aXRlcmF0b3I+KHByZXZhbGVudER1ZVRvUmVkaXJlY3QuYmVnaW4oKSwgcHJldmFsZW50
RHVlVG9SZWRpcmVjdC5lbmQoKSkpLCAiKSIpKTsKKyAgICBhdXRvIG1hcmtQcmV2YWxlbnRTdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFU
RSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gMSBXSEVSRSBkb21haW5JRCBJTiAo
IiwgYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxTdGRTZXQ8dW5zaWduZWQ+OjppdGVyYXRv
cj4ocHJldmFsZW50RHVlVG9SZWRpcmVjdC5iZWdpbigpLCBwcmV2YWxlbnREdWVUb1JlZGlyZWN0
LmVuZCgpKSksICIpIikpOwogICAgIGlmICghbWFya1ByZXZhbGVudFN0YXRlbWVudCB8fCBtYXJr
UHJldmFsZW50U3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRv
UHJldmFsZW50IGZhaWxlZCB0byBleGVjdXRlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzODQsNyArMTM5Myw3IEBAIEhhc2hNYXA8dW5zaWduZWQs
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpOb3RWZXJ5UHJldmFsZW50UmVz
b3VyY2VzCiAKICAgICBhdXRvIGRvbWFpbklEc09mSW50ZXJlc3QgPSBidWlsZGVyLnRvU3RyaW5n
KCk7CiAKLSAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiU0VMRUNUIHN1YnJlc291
cmNlRG9tYWluSUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5J
RHNPZkludGVyZXN0LCAiKSBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklEIikpOworICAgIGF1
dG8gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHN1YnJlc291cmNlRG9tYWlu
SUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVy
ZXN0LCAiKSBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklEIikpOwogICAgIGlmIChzdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50KSB7CiAgICAgICAgIHdoaWxlIChzdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JP
VykgewogICAgICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50
KDApKTsKQEAgLTEzOTQsNyArMTQwMyw3IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpOb3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3Vu
dFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJTRUxF
Q1Qgc3VicmVzb3VyY2VEb21haW5JRCwgQ09VTlQodG9Eb21haW5JRCkgRlJPTSBTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFp
bklEc09mSW50ZXJlc3QsICIpIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQiKSk7CisgICAg
YXV0byBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlNFTEVDVCBzdWJyZXNvdXJjZURv
bWFpbklELCBDT1VOVCh0b0RvbWFpbklEKSBGUk9NIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8gV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9tYWluSURzT2ZJbnRlcmVzdCwg
IikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsKICAgICBpZiAoc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50KSB7CiAgICAgICAgIHdoaWxlIChzdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9X
KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPmdldENvbHVtbklu
dCgwKSk7CkBAIC0xNDA0LDcgKzE0MTMsNyBAQCBIYXNoTWFwPHVuc2lnbmVkLCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZhbGVudFJlc291cmNlcwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291
bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiU0VM
RUNUIHN1YmZyYW1lRG9tYWluSUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJmcmFtZURvbWFpbklEIElOICgiLCBkb21h
aW5JRHNPZkludGVyZXN0LCAiKSBHUk9VUCBCWSBzdWJmcmFtZURvbWFpbklEIikpOworICAgIGF1
dG8gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50ID0gbV9kYXRhYmFz
ZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJTRUxFQ1Qgc3ViZnJhbWVEb21haW5J
RCwgQ09VTlQodG9wRnJhbWVEb21haW5JRCkgRlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW5zIFdIRVJFIHN1YmZyYW1lRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50ZXJlc3QsICIp
IEdST1VQIEJZIHN1YmZyYW1lRG9tYWluSUQiKSk7CiAgICAgaWYgKHN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbnNDb3VudFN0YXRlbWVudCkgewogICAgICAgICB3aGlsZSAoc3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewog
ICAgICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkp
OwpAQCAtMTQxNCw3ICsxNDIzLDcgQEAgSGFzaE1hcDx1bnNpZ25lZCwgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Ok5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMKICAgICAgICAg
fQogICAgIH0KIAotICAgIGF1dG8gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNFTEVDVCBzb3Vy
Y2VEb21haW5JRCwgQ09VTlQodG9Eb21haW5JRCkgRlJPTSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvIFdIRVJFIHNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVyZXN0LCAiKSBH
Uk9VUCBCWSBzb3VyY2VEb21haW5JRCIpKTsKKyAgICBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG9Db3VudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFr
ZVN0cmluZygiU0VMRUNUIHNvdXJjZURvbWFpbklELCBDT1VOVCh0b0RvbWFpbklEKSBGUk9NIFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFp
bklEc09mSW50ZXJlc3QsICIpIEdST1VQIEJZIHNvdXJjZURvbWFpbklEIikpOwogICAgIGlmICh0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUg
KHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElU
RV9ST1cpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+Z2V0Q29sdW1u
SW50KDApKTsKQEAgLTE2NDQsNyArMTY1Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNlCiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbmRmYXRoZXJEYXRhRm9y
RG9tYWlucyB3YXMgbm90IGNvbXBsZXRlZCBkdWUgdG8gZmFpbGVkIGluc2VydCBhdHRlbXB0Iiwg
dGhpcyk7CiAgICAgfQogCi0gICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlu
cyBTRVQgZ3JhbmRmYXRoZXJlZCA9IDEgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gSU4gKCIsIGRv
bWFpbnNUb1N0cmluZyhkb21haW5zKSwgIikiKSk7CisgICAgYXV0byBkb21haW5zVG9VcGRhdGVT
dGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQ
REFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAxIFdIRVJFIHJlZ2lzdHJh
YmxlRG9tYWluIElOICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikpOwogICAgIGlm
ICghZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50IHx8IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIg
UFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTE1LDcgKzE5MjQsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXREb21haW5zQXNQcmV2YWxlbnQo
U3RkU2V0PHVuc2lnbmVkPgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0
ZW1lbnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQg
PSAxIFdIRVJFIGRvbWFpbklEIElOICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0
ZFNldDx1bnNpZ25lZD46Oml0ZXJhdG9yPihkb21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkp
KSwgIikiKSk7CisgICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMg
U0VUIGlzUHJldmFsZW50ID0gMSBXSEVSRSBkb21haW5JRCBJTiAoIiwgYnVpbGRMaXN0KFdURjo6
SXRlcmF0b3JSYW5nZTxTdGRTZXQ8dW5zaWduZWQ+OjppdGVyYXRvcj4oZG9tYWlucy5iZWdpbigp
LCBkb21haW5zLmVuZCgpKSksICIpIikpOwogICAgIGlmICghZG9tYWluc1RvVXBkYXRlU3RhdGVt
ZW50IHx8IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXREb21haW5zQXNQcmV2YWxl
bnQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTI0NjYsNyArMjQ3NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNsZWFyR3JhbmRmYXRoZXJpbmcoVmVjdG9yPHVuc2lnbmVkPiYmCiAKICAgICBhdXRv
IGxpc3RUb0NsZWFyID0gYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxWZWN0b3I8dW5zaWdu
ZWQ+OjppdGVyYXRvcj4oZG9tYWluSURzVG9DbGVhci5iZWdpbigpLCBkb21haW5JRHNUb0NsZWFy
LmVuZCgpKSk7CiAKLSAgICBhdXRvIGNsZWFyR3JhbmRmYXRoZXJpbmdTdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlu
cyBTRVQgZ3JhbmRmYXRoZXJlZCA9IDAgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGxpc3RUb0NsZWFy
LCAiKSIpKTsKKyAgICBhdXRvIGNsZWFyR3JhbmRmYXRoZXJpbmdTdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFp
bnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAwIFdIRVJFIGRvbWFpbklEIElOICgiLCBsaXN0VG9DbGVh
ciwgIikiKSk7CiAgICAgaWYgKCFjbGVhckdyYW5kZmF0aGVyaW5nU3RhdGVtZW50KQogICAgICAg
ICByZXR1cm47CiAgICAgCkBAIC0yNjIzLDcgKzI2MzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCiAKICAgICBh
dXRvIGxpc3RUb1BydW5lID0gYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxWZWN0b3I8dW5z
aWduZWQ+OjppdGVyYXRvcj4oZW50cmllc1RvUHJ1bmUuYmVnaW4oKSwgZW50cmllc1RvUHJ1bmUu
ZW5kKCkpKTsKIAotICAgIGF1dG8gcHJ1bmVDb21tYW5kID0gbV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KG1ha2VTdHJpbmcoIkRFTEVURSBmcm9tIE9ic2VydmVkRG9tYWlucyBXSEVSRSBkb21h
aW5JRCBJTiAoIiwgbGlzdFRvUHJ1bmUsICIpIikpOworICAgIGF1dG8gcHJ1bmVDb21tYW5kID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJERUxFVEUgZnJvbSBP
YnNlcnZlZERvbWFpbnMgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGxpc3RUb1BydW5lLCAiKSIpKTsK
ICAgICBpZiAoIXBydW5lQ29tbWFuZCB8fCBwcnVuZUNvbW1hbmQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0
aWNzSWZOZWVkZWQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTI3NzAsMzUgKzI3NzksMzUgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmIHRhYmxl
TmFtZSkgY29uc3QKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Z2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKSBj
b25zdAogewogICAgIGlmICh0YWJsZU5hbWUgPT0gIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1l
RG9tYWlucyIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIHRvcExldmVsRG9tYWluSUQgZnJvbSBT
dG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/IjsKKyAg
ICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wTGV2ZWxEb21haW5JRCBmcm9tIFN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxl
TmFtZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIpCi0gICAgICAgIHJldHVybiAiU0VM
RUNUIHRvRG9tYWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJj
ZURvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFpbklEID0gPyJfczsKICAg
ICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKQotICAgICAg
ICByZXR1cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20gV0hFUkUgdGFyZ2V0RG9tYWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1Qg
ZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHRhcmdl
dERvbWFpbklEID0gPyJfczsKICAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb20iKQotICAgICAgICByZXR1cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBU
b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gV0hFUkUgdG9Eb21haW5JRCA9ID8iOworICAgICAg
ICByZXR1cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFtZUxpbmtEZWNvcmF0aW9u
c0Zyb20gV0hFUkUgdG9Eb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9w
RnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIHN1
YnJlc291cmNlRG9tYWluSUQgZnJvbSBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIFdI
RVJFIHRvcEZyYW1lRG9tYWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1Qgc3VicmVz
b3VyY2VEb21haW5JRCBmcm9tIFRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMgV0hFUkUg
dG9wRnJhbWVEb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9t
YWluSUQgZnJvbSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9t
YWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBmcm9t
IFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViRnJhbWVEb21haW5JRCA9ID8i
X3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
cyIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgZnJvbSBTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IjsK
KyAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBmcm9tIFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7CiAg
ICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIpCi0gICAg
ICAgIHJldHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJT
RUxFQ1QgdG9Eb21haW5JRCBmcm9tIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUg
c3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIikKLSAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURv
bWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHN1YnJlc291
cmNlRG9tYWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZy
b20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHN1YnJlc291cmNlRG9tYWlu
SUQgPSA/Il9zOwogICAgIAotICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiAi
Il9zOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBl
bmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKIHsKICAgICBhdXRvIHF1ZXJ5
ID0gZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KHRhYmxlTmFtZSk7CiAgICAgCi0gICAgaWYgKHF1
ZXJ5LmlzRW1wdHkoKSkKKyAgICBpZiAoIXF1ZXJ5Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgYXV0byBkYXRhID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KHF1ZXJ5
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmgKaW5kZXggYTFlMzUxNTM0NDZjNTdmZDM4ODU5YTZkY2Y4NjI0YjAxNjAzMDk3ZS4uZmQ3MWNj
NWU3Yjk2MDRjNzgxOGYxYjZhZTliYTVkMzE2ZTI4MTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTE4MSw3ICsxODEsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7CiAgICAgdm9pZCBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAg
ICBTdHJpbmcgZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkKSBjb25zdDsKLSAg
ICBTdHJpbmcgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYpIGNvbnN0Owor
ICAgIEFTQ0lJTGl0ZXJhbCBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CiAgICAgdm9pZCBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAg
IHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAg
IHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNGM3OGZj
ZTk0Nzg5Mjg3MmU1ZGExNjVkZTNmNWFjOTdkYzJlMGQ4YS4uMzY4MzY1ZmYxYjA4ODQzZDM2YWUw
Mjk3MzYwOGQ3YmFhNGNiZmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBA
IC04MSwxMSArODEsMTEgQEAgYm9vbCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6b3BlbkRhdGFiYXNl
KFNob3VsZENyZWF0ZURhdGFiYXNlIHNob3VsZENyZWF0ZURhdGFiYXMKICAgICBpZiAoIW1pZ3Jh
dGVJdGVtVGFibGVJZk5lZWRlZCgpKSB7CiAgICAgICAgIC8vIFdlIGZhaWxlZCB0byBtaWdyYXRl
IHRoZSBpdGVtIHRhYmxlLiBJbiBvcmRlciB0byBhdm9pZCB0cnlpbmcgdG8gbWlncmF0ZSB0aGUg
dGFibGUgb3ZlciBhbmQgb3ZlciwKICAgICAgICAgLy8ganVzdCBkZWxldGUgaXQgYW5kIHN0YXJ0
IGZyb20gc2NyYXRjaC4KLSAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJE
Uk9QIFRBQkxFIEl0ZW1UYWJsZSIpKQorICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNv
bW1hbmQoIkRST1AgVEFCTEUgSXRlbVRhYmxlIl9zKSkKICAgICAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGRlbGV0ZSB0YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsKICAg
ICB9CiAKLSAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJ
RiBOT1QgRVhJU1RTIEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExB
Q0UsIHZhbHVlIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKSkgeworICAgIGlmICgh
bV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgSXRl
bVRhYmxlIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gY3JlYXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA2LDEzICsxMDYsMTMgQEAgYm9vbCBMb2NhbFN0
b3JhZ2VEYXRhYmFzZTo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgdGFibGUgd2l0aCB0aGUgcmlnaHQgdHlwZSwg
Y29weSBhbGwgdGhlIGRhdGEgb3ZlciB0byBpdCBhbmQgdGhlbiByZXBsYWNlIHRoZSBuZXcgdGFi
bGUgd2l0aCB0aGUgb2xkIHRhYmxlLgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb21tYW5kc1td
ID0gewotICAgICAgICAiRFJPUCBUQUJMRSBJRiBFWElTVFMgSXRlbVRhYmxlMiIsCi0gICAgICAg
ICJDUkVBVEUgVEFCTEUgSXRlbVRhYmxlMiAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJF
UExBQ0UsIHZhbHVlIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiLAotICAgICAgICAi
SU5TRVJUIElOVE8gSXRlbVRhYmxlMiBTRUxFQ1QgKiBmcm9tIEl0ZW1UYWJsZSIsCi0gICAgICAg
ICJEUk9QIFRBQkxFIEl0ZW1UYWJsZSIsCi0gICAgICAgICJBTFRFUiBUQUJMRSBJdGVtVGFibGUy
IFJFTkFNRSBUTyBJdGVtVGFibGUiLAotICAgICAgICAwLAorICAgIHN0YXRpYyBjb25zdCBBU0NJ
SUxpdGVyYWwgY29tbWFuZHNbXSA9IHsKKyAgICAgICAgIkRST1AgVEFCTEUgSUYgRVhJU1RTIEl0
ZW1UYWJsZTIiX3MsCisgICAgICAgICJDUkVBVEUgVEFCTEUgSXRlbVRhYmxlMiAoa2V5IFRFWFQg
VU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCkiX3MsCisgICAgICAgICJJTlNFUlQgSU5UTyBJdGVtVGFibGUyIFNFTEVDVCAqIGZy
b20gSXRlbVRhYmxlIl9zLAorICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUiX3MsCisgICAg
ICAgICJBTFRFUiBUQUJMRSBJdGVtVGFibGUyIFJFTkFNRSBUTyBJdGVtVGFibGUiX3MsCisgICAg
ICAgIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpLAogICAgIH07CiAKICAgICBTUUxpdGVUcmFuc2FjdGlv
biB0cmFuc2FjdGlvbihtX2RhdGFiYXNlKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIExvY2Fs
U3RvcmFnZURhdGFiYXNlOjptaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKQogICAgICAgICBpZiAo
bV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjb21tYW5kc1tpXSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtaWdyYXRlIHRhYmxlIEl0ZW1U
YWJsZSBmb3IgbG9jYWwgc3RvcmFnZSB3aGVuIGV4ZWN1dGluZzogJXMiLCBjb21tYW5kc1tpXSk7
CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1pZ3JhdGUgdGFibGUgSXRlbVRhYmxlIGZv
ciBsb2NhbCBzdG9yYWdlIHdoZW4gZXhlY3V0aW5nOiAlcyIsIGNvbW1hbmRzW2ldLmNoYXJhY3Rl
cnMoKSk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDY1MDg4NmVlNTY2
MTYyMGI4ODMwYTYzNTA2Yjk3ZjM0NDBkN2Y3ODUuLjk0NzcwMjUxNDU5ZDIyMzNiYjAxMjhlYmZm
ODJjNGI0NGZlZmZhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMTI0LDQyICsxMjQsNDMgQEAgYm9vbCBJY29uRGF0YWJh
c2U6OmNyZWF0ZVRhYmxlc0lmTmVlZGVkKCkKIAogICAgIG1fZGIuY2xlYXJBbGxUYWJsZXMoKTsK
IAotICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIFBhZ2VVUkwgKHVy
bCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExB
Q0UsaWNvbklEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBp
ZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBQYWdlVVJMICh1cmwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLGljb25J
RCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyJfcykpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFBhZ2VVUkwgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAt
ICVzIiwgbV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1f
ZGIuY2xvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIu
ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBQYWdlVVJMSW5kZXggT04gUGFnZVVSTCAodXJs
KTsiKSkgeworICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIElOREVYIFBhZ2VV
UkxJbmRleCBPTiBQYWdlVVJMICh1cmwpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZCBub3QgY3JlYXRlIFBhZ2VVUkwgaW5kZXggaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYi5s
YXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIuY2xvc2UoKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1h
bmQoIkNSRUFURSBUQUJMRSBJY29uSW5mbyAoaWNvbklEIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVU
T0lOQ1JFTUVOVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdXJsIFRFWFQgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgc3RhbXAgSU5URUdFUik7
IikpIHsKKyAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJY29uSW5m
byAoaWNvbklEIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBVTklRVUUgT04gQ09O
RkxJQ1QgUkVQTEFDRSwgdXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUg
T04gQ09ORkxJQ1QgRkFJTCwgc3RhbXAgSU5URUdFUik7Il9zKSkgewogICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkIG5vdCBjcmVhdGUgSWNvbkluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVz
IiwgbV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIu
Y2xvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIuZXhl
Y3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBJY29uSW5mb0luZGV4IE9OIEljb25JbmZvICh1cmws
IGljb25JRCk7IikpIHsKKyAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRF
WCBJY29uSW5mb0luZGV4IE9OIEljb25JbmZvICh1cmwsIGljb25JRCk7Il9zKSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgUGFnZVVSTCBpbmRleCBpbiBkYXRhYmFzZSAo
JWkpIC0gJXMiLCBtX2RiLmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgbV9kYi5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICgh
bV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEljb25EYXRhIChpY29uSUQgSU5URUdF
UiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBk
YXRhIEJMT0IpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFC
TEUgSWNvbkRhdGEgKGljb25JRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQgVU5J
UVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIGRhdGEgQkxPQik7Il9zKSkgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgSWNvbkRhdGEgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAt
ICVzIiwgbV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1f
ZGIuY2xvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIu
ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBJY29uRGF0YUluZGV4IE9OIEljb25EYXRhIChp
Y29uSUQpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVgg
SWNvbkRhdGFJbmRleCBPTiBJY29uRGF0YSAoaWNvbklEKTsiX3MpKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBQYWdlVVJMIGluZGV4IGluIGRhdGFiYXNlICglaSkgLSAl
cyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBtX2Ri
LmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKCFtX2RiLmV4
ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSWNvbkRhdGFiYXNlSW5mbyAoa2V5IFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1
dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSWNvbkRhdGFiYXNlSW5mbyAoa2V5IFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIEljb25EYXRhYmFzZUluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAt
ICVzIiwgbV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1f
ZGIuY2xvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIu
ZXhlY3V0ZUNvbW1hbmQoU3RyaW5nKCJJTlNFUlQgSU5UTyBJY29uRGF0YWJhc2VJbmZvIFZBTFVF
UyAoJ1ZlcnNpb24nLCAiKSArIFN0cmluZzo6bnVtYmVyKGN1cnJlbnREYXRhYmFzZVZlcnNpb24p
ICsgIik7IikpIHsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudCgi
SU5TRVJUIElOVE8gSWNvbkRhdGFiYXNlSW5mbyBWQUxVRVMgKCdWZXJzaW9uJywgPyk7Il9zKTsK
KyAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoY3VycmVudERhdGFiYXNl
VmVyc2lvbikgIT0gU1FMSVRFX09LIHx8ICFzdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgaW5zZXJ0IGljb24gZGF0YWJhc2UgdmVyc2lv
biBpbnRvIEljb25EYXRhYmFzZUluZm8gdGFibGUgKCVpKSAtICVzIiwgbV9kYi5sYXN0RXJyb3Io
KSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIuY2xvc2UoKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTc1LDEzICsxNzYsMTcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBv
cHVsYXRlUGFnZVVSTFRvSWNvblVSTE1hcCgpCiAgICAgaWYgKCFtX2RiLmlzT3BlbigpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgaW1wb3J0UXVlcnkgPSBtYWtlU3RyaW5nKCJTRUxF
Q1QgUGFnZVVSTC51cmwsIEljb25JbmZvLnVybCwgSWNvbkluZm8uc3RhbXAgRlJPTSBQYWdlVVJM
IElOTkVSIEpPSU4gSWNvbkluZm8gT04gUGFnZVVSTC5pY29uSUQ9SWNvbkluZm8uaWNvbklEIFdI
RVJFIEljb25JbmZvLnN0YW1wID4gIiwgZmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIG5vdFVzZWRJ
Y29uRXhwaXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSwgJzsnKTsK
LSAgICBhdXRvIHF1ZXJ5ID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KGltcG9ydFF1ZXJ5KTsKKyAg
ICBhdXRvIHF1ZXJ5ID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgUGFnZVVSTC51cmws
IEljb25JbmZvLnVybCwgSWNvbkluZm8uc3RhbXAgRlJPTSBQYWdlVVJMIElOTkVSIEpPSU4gSWNv
bkluZm8gT04gUGFnZVVSTC5pY29uSUQ9SWNvbkluZm8uaWNvbklEIFdIRVJFIEljb25JbmZvLnN0
YW1wID4gKD8pOyJfcyk7CiAgICAgaWYgKCFxdWVyeSkgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBwcmVwYXJlIGljb24gdXJsIGltcG9ydCBxdWVyeSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgaWYgKHF1ZXJ5LT5iaW5kSW50NjQoMSwgZmxvb3IoKFdhbGxUaW1lOjpu
b3coKSAtIG5vdFVzZWRJY29uRXhwaXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vj
b25kcygpKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIExPR19FUlJPUigiSWNvbkRhdGFiYXNl
Ojpwb3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxNYXA6IGZhaWxlZCB0byBiaW5kIHN0YXRlbWVudDog
JXMiLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGF1dG8gcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIo
bV9wYWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CiAgICAgd2hpbGUgKHJlc3VsdCA9PSBTUUxJVEVf
Uk9XKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMu
Y3BwCmluZGV4IGNhZTA4MmYxM2RjZDM2OGM0ODE5NWJlMzExZjIwYTViNjY0NDhmYWIuLjVkYzIw
YmNmMGRmNWM5MDFiNzg1NzU3NzgxZTViNzBmMzA3NzNkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAg
dm9pZCBTdG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFzZShPcGVuRGF0YWJhc2VQYXJhbVR5cGUg
b3BlbmluZ1N0cmF0ZWd5KQogCiAgICAgbWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCk7CiAKLSAg
ICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJ
U1RTIEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVl
IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKSkgeworICAgIGlmICghbV9kYXRhYmFz
ZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgSXRlbVRhYmxlIChr
ZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKSJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3Jl
YXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOwogICAgICAgICBtYXJrSW1w
b3J0ZWQoKTsKICAgICAgICAgbV9kYXRhYmFzZU9wZW5GYWlsZWQgPSB0cnVlOwpAQCAtMjg1LDIw
ICsyODUsMjAgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRl
ZCgpCiAgICAgfQogCiAgICAgLy8gYWx0ZXIgdGFibGUgZm9yIGJhY2t3YXJkIGNvbXBsaWFuY2Us
IGNoYW5nZSB0aGUgdmFsdWUgdHlwZSBmcm9tIFRFWFQgdG8gQkxPQi4KLSAgICBzdGF0aWMgY29u
c3QgY2hhciogY29tbWFuZHNbXSA9IHsKLSAgICAgICAgIkRST1AgVEFCTEUgSUYgRVhJU1RTIEl0
ZW1UYWJsZTIiLAotICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJsZTIgKGtleSBURVhUIFVO
SVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwpIiwKLSAgICAgICAgIklOU0VSVCBJTlRPIEl0ZW1UYWJsZTIgU0VMRUNUICogZnJvbSBJ
dGVtVGFibGUiLAotICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUiLAotICAgICAgICAiQUxU
RVIgVEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIiwKLSAgICAgICAgMCwKKyAg
ICBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIGNvbW1hbmRzW10gPSB7CisgICAgICAgICJEUk9Q
IFRBQkxFIElGIEVYSVNUUyBJdGVtVGFibGUyIl9zLAorICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0
ZW1UYWJsZTIgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9C
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zLAorICAgICAgICAiSU5TRVJUIElOVE8gSXRl
bVRhYmxlMiBTRUxFQ1QgKiBmcm9tIEl0ZW1UYWJsZSJfcywKKyAgICAgICAgIkRST1AgVEFCTEUg
SXRlbVRhYmxlIl9zLAorICAgICAgICAiQUxURVIgVEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8g
SXRlbVRhYmxlIl9zLAorICAgICAgICBBU0NJSUxpdGVyYWw6Om51bGwoKSwKICAgICB9OwogCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24obV9kYXRhYmFzZSwgZmFsc2UpOwogICAg
IHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGNvbW1hbmRzW2ld
OyArK2kpIHsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmRz
W2ldKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWlncmF0ZSB0YWJsZSBJ
dGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVzIiwgY29tbWFuZHNb
aV0pOworICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWlncmF0ZSB0YWJsZSBJdGVt
VGFibGUgZm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVzIiwgY29tbWFuZHNbaV0u
Y2hhcmFjdGVycygpKTsKICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAKICAg
ICAgICAgICAgIC8vIGZpbmFsbHkgaXQgd2lsbCB0cnkgdG8ga2VlcCBhIGJhY2t1cCBvZiBJdGVt
VGFibGUgZm9yIHRoZSBmdXR1cmUgcmVzdG9yYXRpb24uCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9p
ZCBTdG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpCiAgICAgICAgICAg
ICAvLyB0aGFuIGNvbnRpbnVhbGx5IGhpdHRpbmcgdGhpcyBjYXNlIGFuZCBuZXZlciBiZWluZyBh
YmxlIHRvIHVzZSB0aGUgbG9jYWwgc3RvcmFnZS4KICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMg
ZXZlciBoaXQsIGl0J3MgZGVmaW5pdGVseSBhIGJ1Zy4KICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJB
TFRFUiBUQUJMRSBJdGVtVGFibGUgUkVOQU1FIFRPIEJhY2t1cF9JdGVtVGFibGUiKSkKKyAgICAg
ICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgSXRlbVRh
YmxlIFJFTkFNRSBUTyBCYWNrdXBfSXRlbVRhYmxlIl9zKSkKICAgICAgICAgICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBzYXZlIEl0ZW1UYWJsZSBhZnRlciBtaWdyYXRpb24gam9iIGZhaWxl
ZC4iKTsKIAogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggM2VjY2ZhNzVkMjAyNmU1ZDMwZDk3YjAwMzZl
M2ZlMjM3ZDRiNzcwZC4uOGIxZTEwYjI0YjhhNDI3ZWQ2YjJiMTdiNDc0YTE0MmIxY2MyOTc2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFz
ZShib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVh
ZGluZ0NoZWNrcygpOwogICAgIAogICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3Jp
Z2lucyIpKSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRF
IFRBQkxFIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBw
YXRoIFRFWFQpOyIpKQorICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNS
RUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFD
RSwgcGF0aCBURVhUKTsiX3MpKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3Jl
YXRlIE9yaWdpbnMgdGFibGUuIik7CiAgICAgfQogfQo=
</data>
<flag name="commit-queue"
          id="449826"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428800</attachid>
            <date>2021-05-16 12:24:15 -0700</date>
            <delta_ts>2021-05-16 13:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225855-20210516122415.patch</filename>
            <type>text/plain</type>
            <size>96307</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhMDgyY2JkODllODYw
NTgzZWIxZTI0MDY2MDMzOTA1ZDgzMWE0NC4uZmEwMzQzZjRkNTFlODRiY2JlZmYwMWJlY2JmY2E1
MjVjOGMyZTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTA1LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9yZSBTdHJpbmcg
Y3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBtb3JlIFN0cmluZyBjcmVh
dGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVudHMgYnkgdXNpbmcgQVNDSUlMaXRl
cmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0
ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZCgpIG92ZXJsb2FkcyB0aGF0
IHRha2UgaW4gYQorICAgICAgICBTdHJpbmcgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIG5vdCBjYWxs
ZWQgYnkgbWlzdGFrZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2M1Jl
Y29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYzUmVjb3Jk
c1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djNJ
bmRleFJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYz
SW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpibG9iUmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6YmxvYlJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OmJsb2JGaWxlc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6YmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpjcmVhdGVPck1pZ3JhdGVSZWNvcmRzVGFibGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRSZWNvcmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRPYmplY3RTdG9yZUluZm9UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5k
ZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpleGVjdXRlU1FMQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6dmVyaWZ5U2NoZW1hVmVyc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2hlY2tGb3JEZWxldGVkUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llSmFyREI6OnZlcmlmeVNjaGVtYVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZVNRTFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
ZXhlY3V0ZVNxbFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmV4ZWN1dGVT
cWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6c2V0TWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U6OnNldFN5bmNocm9ub3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OnRhYmxlRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpj
bGVhckFsbFRhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFy
ZVN0YXRlbWVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnByZXBh
cmVIZWFwU3RhdGVtZW50U2xvdyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZVRyYW5zYWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjp2ZXJp
ZnlTY2hlbWFWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTUUxTdGF0ZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oOgorCiAyMDIxLTA1
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXpl
IC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNyZWF0aW9uIGFuZCBwcmVwYXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5MDAzY2QwNjUwMDcyNGViZjFjYmQ4YzNiMWFmYjFkNWQ3NWZjNDVhLi43M2Q0OWQ5
YzVhOGNlNzY3MTQzOTYwZTNkYzFmMjcyYmZmNTRkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXZvaWQgbW9yZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
dm9pZCBtb3JlIFN0cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVu
dHMgYnkgdXNpbmcgQVNDSUlMaXRlcmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRl
RGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29t
bWFuZCgpIG92ZXJsb2FkcyB0aGF0IHRha2UgaW4gYSAKKyAgICAgICAgU3RyaW5nIHRvIG1ha2Ug
c3VyZSB0aGV5IGFyZSBub3QgY2FsbGVkIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6Omluc2VydERp
c3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y29sdW1uc0ZvclRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1
bW5JblRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QpOgorICAgICAgICAoV2ViS2l0
Ojpqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVu
dElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmROb3RWZXJ5UHJldmFsZW50UmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3Jh
bmRmYXRoZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGljU3RhdGVt
ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjptaWdyYXRlSXRl
bVRhYmxlSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNyZWF0ZVRhYmxlc0lmTmVl
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0lj
b25VUkxNYXApOgorCiAyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgTW9kZXJuaXplIC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNyZWF0aW9u
IGFuZCBwcmVwYXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBhOTRiYTI5NDdmMDM3MDRl
ZjY3NmNmZjEzYjIxNWEzOWJjMjg3NTM2Li42MWMwZjhlZGQ0MTJmYWFmOTg1M2I4MTUyYWEyMmZi
Mzc4MmY0MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9y
ZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBtb3JlIFN0
cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVudHMgYnkgdXNpbmcg
QVNDSUlMaXRlcmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRlRGF0YWJhc2U6OnBy
ZXBhcmVTdGF0ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZCgpIG92ZXJs
b2FkcyB0aGF0IHRha2UgaW4gYSAKKyAgICAgICAgU3RyaW5nIHRvIG1ha2Ugc3VyZSB0aGV5IGFy
ZSBub3QgY2FsbGVkIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxlSWZO
ZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisKIDIwMjEtMDUt
MTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb2Rlcm5pemUg
LyBPcHRpbWl6ZSBTUUxpdGVTdGF0ZW1lbnQgY3JlYXRpb24gYW5kIHByZXBhcmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDlhYWEwZmQ1M2RlY2QxYWQ2Zjg1NTAw
NmRjNzNhNTc1NGY3NzIzZjkuLmExYWE5MmMyOTYyMWM3Y2U2MTc3ZjZhNTdiNTM1NThkZDQ4OGQ5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMzEsMTYgKzEzMSwx
NCBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHYzUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lKQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVBVEUgVEFCTEUgIiwgdGFi
bGVOYW1lLCAiIChvYmplY3RTdG9yZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdmFs
dWUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgcmVjb3JkSUQgSU5URUdFUiBQUklNQVJZIEtF
WSkiKTsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgdjNSZWNvcmRzVGFibGVTY2hlbWEoKQor
c3RhdGljIEFTQ0lJTGl0ZXJhbCB2M1JlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2M1JlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2
M1JlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKLSAgICByZXR1cm4gdjNSZWNvcmRzVGFi
bGVTY2hlbWFTdHJpbmc7CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgUmVjb3JkcyAob2JqZWN0
U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExB
VEUgSURCS0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIHJlY29yZElEIElOVEVHRVIgUFJJTUFSWSBLRVkpIl9zOwogfQogCi1zdGF0
aWMgY29uc3QgU3RyaW5nJiB2M1JlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIHYzUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYzUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5n
KHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29yZHNcIiIpKTsKLSAgICByZXR1cm4gdjNSZWNv
cmRzVGFibGVTY2hlbWFTdHJpbmc7CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJSZWNvcmRz
XCIgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBrZXkg
VEVYVCBDT0xMQVRFIElEQktFWSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB2YWx1ZSBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMLCByZWNvcmRJRCBJTlRFR0VSIFBSSU1BUlkgS0VZKSJfczsK
IH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyB2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0
IFN0cmluZyYgdGFibGVOYW1lKQpAQCAtMTgyLDUwICsxODAsMzQgQEAgc3RhdGljIGNvbnN0IFN0
cmluZyB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQog
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChpbmRl
eElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwpIik7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcgdjNJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHYzSW5kZXhSZWNvcmRzVGFi
bGVTY2hlbWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gaW5k
ZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcgPSB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJ
bmRleFJlY29yZHMiKTsKLSAgICByZXR1cm4gaW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgSW5kZXhSZWNvcmRzIChpbmRleElEIElOVEVHRVIg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIHYzSW5kZXhSZWNvcmRzVGFibGVT
Y2hlbWFBbHRlcm5hdGUoKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCB2M0luZGV4UmVjb3Jkc1RhYmxl
U2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJp
bmc+IGluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nID0gdjNJbmRleFJlY29yZHNUYWJsZVNj
aGVtYSgiXCJJbmRleFJlY29yZHNcIiIpOwotICAgIHJldHVybiBpbmRleFJlY29yZHNUYWJsZVNj
aGVtYVN0cmluZzsKKyAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIkluZGV4UmVjb3Jkc1wiIChp
bmRleElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJ
TlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZ
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIGJsb2JS
ZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCitzdGF0aWMgQVNDSUlM
aXRlcmFsIGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKQogewotICAgIHJldHVybiBtYWtlU3RyaW5n
KCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChvYmplY3RTdG9yZVJvdyBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKSIpOworICAgIHJldHVybiAiQ1JFQVRFIFRBQkxFIEJsb2JSZWNvcmRzIChvYmplY3RT
dG9yZVJvdyBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYg
YmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JSZWNvcmRz
VGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcoYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgi
QmxvYlJlY29yZHMiKSk7Ci0gICAgcmV0dXJuIGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJCbG9iUmVjb3Jkc1wiIChvYmplY3RTdG9yZVJv
dyBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgYmxvYlJl
Y29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JGaWxl
c1RhYmxlU2NoZW1hKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBibG9i
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoIlwiQmxvYlJl
Y29yZHNcIiIpKTsKLSAgICByZXR1cm4gYmxvYlJlY29yZHNUYWJsZVNjaGVtYVN0cmluZzsKKyAg
ICByZXR1cm4gIkNSRUFURSBUQUJMRSBCbG9iRmlsZXMgKGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBmaWxlTmFtZSBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogfQog
Ci1zdGF0aWMgY29uc3QgU3RyaW5nIGJsb2JGaWxlc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBibG9iRmlsZXNUYWJsZVNjaGVtYUFsdGVy
bmF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNSRUFURSBUQUJMRSAiLCB0YWJsZU5h
bWUsICIgKGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBD
T05GTElDVCBGQUlMLCBmaWxlTmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5J
UVVFIE9OIENPTkZMSUNUIEZBSUwpIik7Ci19Ci0KLXN0YXRpYyBjb25zdCBTdHJpbmcmIGJsb2JG
aWxlc1RhYmxlU2NoZW1hKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBi
bG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZyhibG9iRmlsZXNUYWJsZVNjaGVtYSgiQmxvYkZpbGVz
IikpOwotICAgIHJldHVybiBibG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZzsKLX0KLQotc3RhdGlj
IGNvbnN0IFN0cmluZyYgYmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJsb2JGaWxlc1RhYmxlU2NoZW1hU3RyaW5nKGJs
b2JGaWxlc1RhYmxlU2NoZW1hKCJcIkJsb2JGaWxlc1wiIikpOwotICAgIHJldHVybiBibG9iRmls
ZXNUYWJsZVNjaGVtYVN0cmluZzsKKyAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIkJsb2JGaWxl
c1wiIChibG9iVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09O
RkxJQ1QgRkFJTCwgZmlsZU5hbWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFV
RSBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAogc3RhdGljIFN0cmluZyBjcmVhdGVWMU9iamVj
dFN0b3JlSW5mb1NjaGVtYShBU0NJSUxpdGVyYWwgdGFibGVOYW1lKQpAQCAtMzA1LDIyICsyODcs
MjIgQEAgc3RhdGljIGJvb2wgY3JlYXRlT3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3Nhcnko
U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKICAg
ICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgdGFibGUgd2l0aCB0aGUgY29ycmVjdCBzY2hlbWEgYW5k
IG1pZ3JhdGUgYWxsIGV4aXN0aW5nIGNvbnRlbnQgb3Zlci4KLSAgICBpZiAoIWRhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCJfVGVtcF9SZWNvcmRzIikpKSB7Cisg
ICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZFNsb3codjNSZWNvcmRzVGFibGVTY2hlbWEo
Il9UZW1wX1JlY29yZHMiKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IHRlbXBvcmFyeSByZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRhdGFiYXNl
Lmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQg
SU5UTyBfVGVtcF9SZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXksIHZhbHVlKSBTRUxFQ1Qgb2Jq
ZWN0U3RvcmVJRCwgQ0FTVChrZXkgQVMgVEVYVCksIHZhbHVlIEZST00gUmVjb3JkcyIpKSB7Cisg
ICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfUmVjb3Jk
cyAob2JqZWN0U3RvcmVJRCwga2V5LCB2YWx1ZSkgU0VMRUNUIG9iamVjdFN0b3JlSUQsIENBU1Qo
a2V5IEFTIFRFWFQpLCB2YWx1ZSBGUk9NIFJlY29yZHMiX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3RpbmcgUmVjb3JkcyBjb250ZW50ICglaSkgLSAlcyIs
IGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KCJEUk9QIFRBQkxFIFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkRST1AgVEFCTEUgUmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgZHJvcCBleGlzdGluZyBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RF
cnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBf
VGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRzIikpIHsKKyAgICBpZiAoIWRhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRz
Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IFJl
Y29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQxMiw3ICsz
OTQsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFi
bGUoKQogCiAgICAgLy8gV2hldGhlciB0aGUgdXBkYXRlZCByZWNvcmRzIHRhYmxlIGFscmVhZHkg
ZXhpc3RlZCBvciBpZiBpdCB3YXMganVzdCBjcmVhdGVkIGFuZCB0aGUgZGF0YSBtaWdyYXRlZCBv
dmVyLAogICAgIC8vIG1ha2Ugc3VyZSB0aGUgdW5pcXVlbmVzcyBpbmRleCBleGlzdHMuCi0gICAg
aWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBO
T1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXkpOyIp
KSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVOSVFVRSBJ
TkRFWCBJRiBOT1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RTdG9yZUlE
LCBrZXkpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFJlY29y
ZHNJbmRleCBvbiBSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRl
REItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC00NzAsMjIgKzQ1MiwyMiBAQCBib29sIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSgpCiAgICAgdHJhbnNhY3Rp
b24uYmVnaW4oKTsKIAogICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSB0YWJsZSB3aXRoIHRoZSBj
b3JyZWN0IHNjaGVtYSBhbmQgbWlncmF0ZSBhbGwgZXhpc3RpbmcgY29udGVudCBvdmVyLgotICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNUYWJsZVNjaGVt
YSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRl
Q29tbWFuZFNsb3codjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRz
IikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgaW5k
ZXggcmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0
RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJU
IElOVE8gX1RlbXBfSW5kZXhSZWNvcmRzIFNFTEVDVCBJbmRleFJlY29yZHMuaW5kZXhJRCwgSW5k
ZXhSZWNvcmRzLm9iamVjdFN0b3JlSUQsIEluZGV4UmVjb3Jkcy5rZXksIEluZGV4UmVjb3Jkcy52
YWx1ZSwgUmVjb3Jkcy5yb3dpZCBGUk9NIEluZGV4UmVjb3JkcyBJTk5FUiBKT0lOIFJlY29yZHMg
T04gUmVjb3Jkcy5rZXkgPSBJbmRleFJlY29yZHMudmFsdWUgQU5EIFJlY29yZHMub2JqZWN0U3Rv
cmVJRCA9IEluZGV4UmVjb3Jkcy5vYmplY3RTdG9yZUlEIikpIHsKKyAgICBpZiAoIW1fc3FsaXRl
REItPmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9JbmRleFJlY29yZHMgU0VMRUNU
IEluZGV4UmVjb3Jkcy5pbmRleElELCBJbmRleFJlY29yZHMub2JqZWN0U3RvcmVJRCwgSW5kZXhS
ZWNvcmRzLmtleSwgSW5kZXhSZWNvcmRzLnZhbHVlLCBSZWNvcmRzLnJvd2lkIEZST00gSW5kZXhS
ZWNvcmRzIElOTkVSIEpPSU4gUmVjb3JkcyBPTiBSZWNvcmRzLmtleSA9IEluZGV4UmVjb3Jkcy52
YWx1ZSBBTkQgUmVjb3Jkcy5vYmplY3RTdG9yZUlEID0gSW5kZXhSZWNvcmRzLm9iamVjdFN0b3Jl
SUQiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3Rpbmcg
SW5kZXhSZWNvcmRzIGNvbnRlbnQgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCks
IG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgSW5k
ZXhSZWNvcmRzIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJEUk9Q
IFRBQkxFIEluZGV4UmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
ZHJvcCBleGlzdGluZyBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+
bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFM
VEVSIFRBQkxFIF9UZW1wX0luZGV4UmVjb3JkcyBSRU5BTUUgVE8gSW5kZXhSZWNvcmRzIikpIHsK
KyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9J
bmRleFJlY29yZHMgUkVOQU1FIFRPIEluZGV4UmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgcmVuYW1lIHRlbXBvcmFyeSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAt
ICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTUzOSw3ICs1MjEsNyBAQCBib29s
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJE
Uk9QIElOREVYIEluZGV4UmVjb3Jkc0luZGV4IikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4
ZWN1dGVDb21tYW5kKCJEUk9QIElOREVYIEluZGV4UmVjb3Jkc0luZGV4Il9zKSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBkcm9wIGluZGV4IEluZGV4UmVjb3Jkc0luZGV4IGluIGRh
dGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC01OTksNyAr
NTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAgICBBU1NFUlQobV9zcWxpdGVEQik7
CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJREJEYXRhYmFzZUluZm8gKGtleSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZh
bHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1fc3Fs
aXRlREItPmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSURCRGF0YWJhc2VJbmZvIChrZXkg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCB2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyJfcykpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIElEQkRhdGFiYXNlSW5mbyB0YWJsZSBpbiBkYXRh
YmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNjExLDEzICs1OTMsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNl
SW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVj
dXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgiSW5kZXhJbmZvIl9zKSkpIHsKKyAgICBp
ZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kU2xvdyhpbmRleEluZm9UYWJsZVNjaGVtYSgi
SW5kZXhJbmZvIl9zKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIElu
ZGV4SW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURC
KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBLZXlHZW5lcmF0b3JzIChvYmplY3RTdG9y
ZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSwgY3VycmVudEtleSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIp
KSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEtl
eUdlbmVyYXRvcnMgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBjdXJyZW50S2V5IElOVEVHRVIgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCk7Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBjcmVhdGUgS2V5R2VuZXJhdG9ycyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzAyLDIyICs2
ODQsMjIgQEAgT3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmwKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVjJPYmplY3RTdG9yZUluZm9T
Y2hlbWEoIl9UZW1wX09iamVjdFN0b3JlSW5mbyJfcykpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURC
LT5leGVjdXRlQ29tbWFuZFNsb3coY3JlYXRlVjJPYmplY3RTdG9yZUluZm9TY2hlbWEoIl9UZW1w
X09iamVjdFN0b3JlSW5mbyJfcykpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSB0ZW1wb3JhcnkgT2JqZWN0U3RvcmVJbmZvIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAl
cyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfT2JqZWN0U3RvcmVJbmZvIChp
ZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYykgU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jIEZST00gT2JqZWN0U3RvcmVJbmZvIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1
dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9PYmplY3RTdG9yZUluZm8gKGlkLCBuYW1lLCBr
ZXlQYXRoLCBhdXRvSW5jKSBTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMgRlJPTSBP
YmplY3RTdG9yZUluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3Jh
dGUgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZvIGNvbnRlbnQgKCVpKSAtICVzIiwgbV9zcWxpdGVE
Qi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVD
b21tYW5kKCJEUk9QIFRBQkxFIE9iamVjdFN0b3JlSW5mbyIpKSB7CisgICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBPYmplY3RTdG9yZUluZm8iX3MpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRyb3AgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZv
IHRhYmxlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfT2Jq
ZWN0U3RvcmVJbmZvIFJFTkFNRSBUTyBPYmplY3RTdG9yZUluZm8iKSkgeworICAgIGlmICghbV9z
cWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX09iamVjdFN0b3JlSW5m
byBSRU5BTUUgVE8gT2JqZWN0U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IE9iamVjdFN0b3JlSW5mbyB0YWJsZSAoJWkpIC0gJXMi
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KQEAgLTczMyw3ICs3MTUsNyBAQCBi
b29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRh
dGUoY29uc3QgSGFzaE1hcDxzdGQ6OgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KGRhdGFiYXNlKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgaWYgKCFkYXRhYmFz
ZS5leGVjdXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhJbmZvIl9z
KSkpIHsKKyAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhpbmRleEluZm9UYWJs
ZVNjaGVtYSgiX1RlbXBfSW5kZXhJbmZvIl9zKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJFcnJv
ciBjcmVhdGluZyBfVGVtcF9JbmRleEluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
ZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTc3OCwxMiArNzYwLDEyIEBAIGJvb2wgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXhJbmZvVGFibGVGb3JJRFVwZGF0ZShjb25zdCBIYXNo
TWFwPHN0ZDo6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKCJEUk9QIFRBQkxFIEluZGV4SW5mbyIpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5leGVj
dXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBJbmRleEluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiRXJyb3IgZHJvcHBpbmcgZXhpc3RpbmcgSW5kZXhJbmZvIHRhYmxlICglaSkgLSAlcyIsIGRh
dGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJB
TFRFUiBUQUJMRSBfVGVtcF9JbmRleEluZm8gUkVOQU1FIFRPIEluZGV4SW5mbyIpKSB7CisgICAg
aWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfSW5kZXhJbmZv
IFJFTkFNRSBUTyBJbmRleEluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgcmVu
YW1pbmcgX1RlbXBfSW5kZXhJbmZvIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC03OTgsNyArNzgwLDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKGNvbnN0IEhhc2hNYXA8c3QKICAgICBTUUxp
dGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihkYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVn
aW4oKTsKIAotICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNU
YWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZFNsb3codjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhS
ZWNvcmRzIikpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgY3JlYXRpbmcgX1RlbXBfSW5k
ZXhSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC04NDIsMTIgKzgyNCwxMiBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWln
cmF0ZUluZGV4UmVjb3Jkc1RhYmxlRm9ySURVcGRhdGUoY29uc3QgSGFzaE1hcDxzdAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJM
RSBJbmRleFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkRS
T1AgVEFCTEUgSW5kZXhSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGRy
b3BwaW5nIGV4aXN0aW5nIEluZGV4UmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBkYXRhYmFzZS5s
YXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFC
TEUgX1RlbXBfSW5kZXhSZWNvcmRzIFJFTkFNRSBUTyBJbmRleFJlY29yZHMiKSkgeworICAgIGlm
ICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX0luZGV4UmVjb3Jk
cyBSRU5BTUUgVE8gSW5kZXhSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkVycm9y
IHJlbmFtaW5nIHRlbXBvcmFyeSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJh
c2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggZjI4OTA4Y2E1MTVlN2I5
YjJmZmY4NDg4YzAwNmQyYjBlODFiYmY1Ny4uMDU2N2VhOWIzNmMyYzY0MTg0MmY3Mzc2OWNkNmMy
MzA4YjdmOGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
c3FsKQogICAgIEFTU0VSVCghbV9jdXJyZW50VXBwZXJLZXkuaXNOdWxsKCkpOwogICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpKTsKIAotICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5wcmVw
YXJlSGVhcFN0YXRlbWVudChzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5wcmVwYXJlSGVhcFN0YXRlbWVudFNs
b3coc3FsKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAocHJlcGFyZS9pZCkgLSAnJXMnIiwgbV90cmFu
c2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIFNRTGl0ZUlE
QkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKIAog
ICAgIGF1dG8mIGRhdGFiYXNlID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+
ZGF0YWJhc2UoKTsKICAgICBpZiAoIW1fcHJlSW5kZXhTdGF0ZW1lbnQpIHsKLSAgICAgICAgYXV0
byBwcmVJbmRleFN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50KGJ1aWxk
UHJlSW5kZXhTdGF0ZW1lbnQoaXNEaXJlY3Rpb25OZXh0KCkpKTsKKyAgICAgICAgYXV0byBwcmVJ
bmRleFN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhidWlsZFBy
ZUluZGV4U3RhdGVtZW50KGlzRGlyZWN0aW9uTmV4dCgpKSk7CiAgICAgICAgIGlmICghcHJlSW5k
ZXhTdGF0ZW1lbnQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHByZXBhcmUg
cHJlIHN0YXRlbWVudCAtICclcyciLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCmluZGV4IGU3NGUyOGY1YjllNWY3OWZjNWQ1Y2QwY2U3NjZjYTBkZGYx
YmY0NzguLjY2NjQzM2I5ODczZWU4MjUzM2U3MmY0NjNlZmI2NTU5NTBmZGNiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRFcnJvck1lc3NhZ2UoY29uc3QgY2hhciog
bWVzc2FnZSwgaW50IHNxbGl0ZUVycm9yQ29kZSwgY29uc3QKIAogc3RhdGljIGJvb2wgc2V0VGV4
dFZhbHVlSW5EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVwYXJl
U3RhdGVtZW50KHF1ZXJ5KTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBhcmVTdGF0ZW1l
bnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVz
KSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0YXRpYyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0
YWJhc2UmIGRiLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zCiAKIHN0YXRpYyBib29sIHJldHJp
ZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0g
ZGIucHJlcGFyZVN0YXRlbWVudChxdWVyeSk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVw
YXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmluZyBzdGF0ZW1lbnQgdG8gcmVhZCB0ZXh0IHJl
c3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCBzdGF0ZW1lbnQuZXJyb3IoKSwgcXVlcnkuYXNjaWko
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzAsNyArMzcwLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxk
U2V0VmVyc2lvbkluTmV3RGF0YWIKICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50
YWJsZUV4aXN0cyh0YWJsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgbV9uZXcgPSB0cnVlOwog
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJD
UkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRh
YmFzZS5leGVjdXRlQ29tbWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAo
a2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUg
dG8gb3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0
ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDc1OTVm
OTA2YjA4ZWQ1ZDQ5NDM2M2M1MTlmZDc2MjA4ZGFmZjdhZGYuLmY2ODRmM2ExYTEyNTJmYzQ1M2Qz
YTY4NjU5MGU0NWVmNWE5MWM2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEyNywxNCArMTI3LDE0IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlv
bkFjdGlvbiBjcmVhdGVBY3Rpb24pCiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hl
Y2tzKCk7CiAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiKSkgewot
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmln
aW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdF
UiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklR
VUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKTsiX3MpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUKICAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNlcyIp
KSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IERhdGFiYXNlcyAoZ3VpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9yaWdp
biBURVhULCBuYW1lIFRFWFQsIGRpc3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5URUdF
UiwgcGF0aCBURVhUKTsiKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkNSRUFURSBUQUJMRSBEYXRhYmFzZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRP
SU5DUkVNRU5ULCBvcmlnaW4gVEVYVCwgbmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3Rp
bWF0ZWRTaXplIElOVEVHRVIsIHBhdGggVEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IGFuZCBoZXJlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0
YWJhc2VzIHRhYmxlIik7CiAgICAgICAgIH0KQEAgLTEyNjcsMTUgKzEyNjcsMTUgQEAgYm9vbCBE
YXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIEVYQ0xVU0lWRSBUUkFOU0FDVElPTjsiKSkKKyAgICBp
ZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBFWENMVVNJVkUgVFJBTlNBQ1RJT047
Il9zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2Ug
aG9sZCB0aGUgZXhjbHVzaXZlIGxvY2sgdG8gdGhpcyBmaWxlLgogICAgIC8vIENoZWNrIHRoYXQg
dGhlIGRhdGFiYXNlIGRvZXNuJ3QgY29udGFpbiBhbnkgdGFibGVzLgotICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0
eXBlPSd0YWJsZSc7IikpCisgICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiU0VMRUNU
IG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJzsiX3MpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIFRS
QU5TQUNUSU9OOyIpOworICAgIGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDT01NSVQgVFJBTlNB
Q1RJT047Il9zKTsKIAogICAgIGRhdGFiYXNlLmNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCA5YjE5MGNh
YTk2M2U1YTFhNzUyYWQ5ZWYyNDYwNTFjODQ2MmVhMzE0Li4xNDc5OGQ5NzU0ZDJiOGY5NjNhZjAx
YjU2MzZiMDhmZDI3YTM1NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBTUUxT
dGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRiKQogCiAgICAgU1FMaXRlRGF0YWJhc2UmIGRh
dGFiYXNlID0gZGIuc3FsaXRlRGF0YWJhc2UoKTsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudChtX3N0YXRlbWVudCk7CisgICAgYXV0byBzdGF0ZW1lbnQg
PSBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtX3N0YXRlbWVudCk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJVbmFibGUgdG8gdmVyaWZ5IGNv
cnJlY3RuZXNzIG9mIHN0YXRlbWVudCAlcyAtIGVycm9yICVpICglcykiLCBtX3N0YXRlbWVudC5h
c2NpaSgpLmRhdGEoKSwgc3RhdGVtZW50LmVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgaWYgKHN0YXRlbWVudC5lcnJvcigpID09IFNRTElURV9JTlRFUlJVUFQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAppbmRleCAwOTc0ODg5MmQ2YWQ3YjA4M2M2YTk0YTQyZjYyNjkzZWNi
YjFiMTc1Li4yYjBhNjUzNmY5NGUzNDEzZTM1MzYyYmQzNGZmYjE1MmU3NjU4MTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMyLDE1ICs1MzMsMTQgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIG8KICAgICByZXR1cm4gZXhlY3V0ZVN0YXRlbWVudCh1cGRhdGVTdGF0ZW1l
bnQudmFsdWUoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmV4ZWN1dGVT
UUxDb21tYW5kKGNvbnN0IFN0cmluZyYgc3FsKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6ZXhlY3V0ZVNRTENvbW1hbmQoQVNDSUlMaXRlcmFsIHNxbCkKIHsKICAgICBBU1NFUlQoU1FM
aXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgQVNT
RVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwogICAgIAogICAgIGJvb2wgcmVzdWx0ID0gbV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZChzcWwpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBMT0df
RVJST1IoIkFwcGxpY2F0aW9uIENhY2hlIFN0b3JhZ2U6IGZhaWxlZCB0byBleGVjdXRlIHN0YXRl
bWVudCBcIiVzXCIgZXJyb3IgXCIlc1wiIiwgCi0gICAgICAgICAgICAgICAgICBzcWwudXRmOCgp
LmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19FUlJPUigi
QXBwbGljYXRpb24gQ2FjaGUgU3RvcmFnZTogZmFpbGVkIHRvIGV4ZWN1dGUgc3RhdGVtZW50IFwi
JXNcIiBlcnJvciBcIiVzXCIiLCBzcWwuY2hhcmFjdGVycygpLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01NjcsMTEgKzU2Nyw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHNldERhdGFiYXNlVmVyc2lvbihtX2RhdGFiYXNlKTsKICAgICBzZXRE
YXRhYmFzZVZlcnNpb24uYmVnaW4oKTsKIAotICAgIGNoYXIgdXNlclZlcnNpb25TUUxbMzJdOwot
ICAgIGludCB1bnVzZWROdW1CeXRlcyA9IHNucHJpbnRmKHVzZXJWZXJzaW9uU1FMLCBzaXplb2Yo
dXNlclZlcnNpb25TUUwpLCAiUFJBR01BIHVzZXJfdmVyc2lvbj0lZCIsIHNjaGVtYVZlcnNpb24p
OwotICAgIEFTU0VSVF9VTlVTRUQodW51c2VkTnVtQnl0ZXMsIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKHVzZXJWZXJzaW9uU1FMKSkgPj0gdW51c2VkTnVtQnl0ZXMpOwotCi0gICAgYXV0byBzdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQodXNlclZlcnNpb25TUUwpOworICAg
IGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3Ry
aW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSUiLCBzY2hlbWFWZXJzaW9uKSk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTYwNCwxOCArNjAwLDE4IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9l
c05vdEV4aXN0KQogICAgIAogICAgIC8vIENyZWF0ZSB0YWJsZXMKICAgICBleGVjdXRlU1FMQ29t
bWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVHcm91cHMgKGlkIElOVEVHRVIg
UFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgIgotICAgICAgICAgICAgICAgICAgICAgICJtYW5p
ZmVzdEhvc3RIYXNoIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbWFuaWZlc3RV
UkwgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbmV3ZXN0Q2FjaGUgSU5URUdFUiwgb3Jp
Z2luIFRFWFQpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNo
ZUdyb3VwIElOVEVHRVIsIHNpemUgSU5URUdFUikiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzICh3aWxkY2FyZCBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3RIb3N0SGFzaCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG1hbmlmZXN0VVJMIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIEZBSUwsIG5ld2VzdENhY2hlIElOVEVHRVIsIG9yaWdpbiBURVhUKSJfcyk7Cisg
ICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlcyAo
aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNoZUdyb3VwIElOVEVHRVIs
IHNpemUgSU5URUdFUikiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUg
SUYgTk9UIEVYSVNUUyBDYWNoZVdoaXRlbGlzdFVSTHMgKHVybCBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3Mp
OworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNo
ZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNhcmQgSU5URUdFUiBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9z
KTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgRmFs
bGJhY2tVUkxzIChuYW1lc3BhY2UgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBmYWxs
YmFja1VSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKLSAgICAgICAgICAgICAg
ICAgICAgICAiY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOwotICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZUVudHJp
ZXMgKGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdHlwZSBJTlRFR0VS
LCByZXNvdXJjZSBJTlRFR0VSIE5PVCBOVUxMKSIpOworICAgICAgICAgICAgICAgICAgICAgICJj
YWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zKTsKKyAgICBleGVjdXRl
U1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRyaWVzIChjYWNo
ZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHR5cGUgSU5URUdFUiwgcmVzb3Vy
Y2UgSU5URUdFUiBOT1QgTlVMTCkiX3MpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZVJlc291cmNlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtF
WSBBVVRPSU5DUkVNRU5ULCB1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgInN0YXR1c0NvZGUgSU5URUdFUiBOT1QgTlVMTCwgcmVzcG9u
c2VVUkwgVEVYVCBOT1QgTlVMTCwgbWltZVR5cGUgVEVYVCwgdGV4dEVuY29kaW5nTmFtZSBURVhU
LCBoZWFkZXJzIFRFWFQsIGRhdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIp
OwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNo
ZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBkYXRh
IEJMT0IsIHBhdGggVEVYVCkiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IElGIE5PVCBFWElTVFMgRGVsZXRlZENhY2hlUmVzb3VyY2VzIChpZCBJTlRFR0VSIFBSSU1BUlkg
S0VZIEFVVE9JTkNSRU1FTlQsIHBhdGggVEVYVCkiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIElHTk9SRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
KSIpOworICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXNDb2RlIElOVEVHRVIgTk9UIE5VTEws
IHJlc3BvbnNlVVJMIFRFWFQgTk9UIE5VTEwsIG1pbWVUeXBlIFRFWFQsIHRleHRFbmNvZGluZ05h
bWUgVEVYVCwgaGVhZGVycyBURVhULCBkYXRhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVY
SVNUUyBDYWNoZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVN
RU5ULCBkYXRhIEJMT0IsIHBhdGggVEVYVCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJD
UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBEZWxldGVkQ2FjaGVSZXNvdXJjZXMgKGlkIElOVEVH
RVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgcGF0aCBURVhUKSJfcyk7CisgICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIE9yaWdpbnMgKG9yaWdpbiBU
RVhUIFVOSVFVRSBPTiBDT05GTElDVCBJR05PUkUsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCkiX3MpOwogCiAgICAgLy8gV2hlbiBhIGNhY2hlIGlzIGRlbGV0ZWQsIGFs
bCBpdHMgZW50cmllcyBhbmQgaXRzIGFsbG93bGlzdCBzaG91bGQgYmUgZGVsZXRlZC4KICAgICBl
eGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRSSUdHRVIgSUYgTk9UIEVYSVNUUyBDYWNoZURlbGV0
ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlcyIKQEAgLTYyNCwxOSArNjIwLDE5IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIENhY2hlV2hpdGVsaXN0
VVJMcyBXSEVSRSBjYWNoZSA9IE9MRC5pZDsiCiAgICAgICAgICAgICAgICAgICAgICAgIiAgREVM
RVRFIEZST00gQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgV0hFUkUgY2FjaGUgPSBPTEQu
aWQ7IgogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIEZhbGxiYWNrVVJMcyBX
SEVSRSBjYWNoZSA9IE9MRC5pZDsiCi0gICAgICAgICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAiIEVORCJfcyk7CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgZW50
cnkgaXMgZGVsZXRlZCwgaXRzIHJlc291cmNlIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQuCiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUUklHR0VSIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRy
eURlbGV0ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlRW50cmllcyIKICAgICAgICAgICAgICAgICAg
ICAgICAiIEZPUiBFQUNIIFJPVyBCRUdJTiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxF
VEUgRlJPTSBDYWNoZVJlc291cmNlcyBXSEVSRSBpZCA9IE9MRC5yZXNvdXJjZTsiCi0gICAgICAg
ICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAiIEVORCJfcyk7
CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgcmVzb3VyY2UgaXMgZGVsZXRlZCwgaXRzIGRhdGEgYmxv
YiBzaG91bGQgYWxzbyBiZSBkZWxldGVkLgogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VFJJR0dFUiBJRiBOT1QgRVhJU1RTIENhY2hlUmVzb3VyY2VEZWxldGVkIEFGVEVSIERFTEVURSBP
TiBDYWNoZVJlc291cmNlcyIKICAgICAgICAgICAgICAgICAgICAgICAiIEZPUiBFQUNIIFJPVyBC
RUdJTiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBDYWNoZVJlc291cmNl
RGF0YSBXSEVSRSBpZCA9IE9MRC5kYXRhOyIKLSAgICAgICAgICAgICAgICAgICAgICAiIEVORCIp
OworICAgICAgICAgICAgICAgICAgICAgICIgRU5EIl9zKTsKICAgICAKICAgICAvLyBXaGVuIGEg
Y2FjaGUgcmVzb3VyY2UgaXMgZGVsZXRlZCwgaWYgaXQgY29udGFpbnMgYSBub24tZW1wdHkgcGF0
aCwgdGhhdCBwYXRoIHNob3VsZAogICAgIC8vIGJlIGFkZGVkIHRvIHRoZSBEZWxldGVkQ2FjaGVS
ZXNvdXJjZXMgdGFibGUgc28gdGhlIGZsYXQgZmlsZSBhdCB0aGF0IHBhdGggY2FuCkBAIC02NDUs
NyArNjQxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKGJv
b2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgIiBGT1IgRUFD
SCBST1ciCiAgICAgICAgICAgICAgICAgICAgICAgIiBXSEVOIE9MRC5wYXRoIE5PVCBOVUxMIEJF
R0lOIgogICAgICAgICAgICAgICAgICAgICAgICIgIElOU0VSVCBJTlRPIERlbGV0ZWRDYWNoZVJl
c291cmNlcyAocGF0aCkgdmFsdWVzIChPTEQucGF0aCk7IgotICAgICAgICAgICAgICAgICAgICAg
ICIgRU5EIik7CisgICAgICAgICAgICAgICAgICAgICAgIiBFTkQiX3MpOwogfQogCiBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYg
c3RhdGVtZW50KQpAQCAtMTI1Niw5ICsxMjUyLDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZW1wdHkoKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gQ2xlYXIgY2FjaGUg
Z3JvdXBzLCBjYWNoZXMsIGNhY2hlIHJlc291cmNlcywgYW5kIG9yaWdpbnMuCi0gICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENhY2hlR3JvdXBzIik7Ci0gICAgZXhlY3V0ZVNRTENv
bW1hbmQoIkRFTEVURSBGUk9NIENhY2hlcyIpOwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJERUxF
VEUgRlJPTSBPcmlnaW5zIik7CisgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENh
Y2hlR3JvdXBzIl9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gQ2FjaGVz
Il9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gT3JpZ2lucyJfcyk7CiAg
ICAgCiAgICAgLy8gQ2xlYXIgdGhlIHN0b3JhZ2UgSURzIGZvciB0aGUgY2FjaGVzIGluIG1lbW9y
eS4KICAgICAvLyBUaGUgY2FjaGVzIHdpbGwgc3RpbGwgd29yaywgYnV0IGNhY2hlZCByZXNvdXJj
ZXMgd2lsbCBub3QgYmUgc2F2ZWQgdG8gZGlzayAKQEAgLTE0MzksNyArMTQzNSw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNoZWNrRm9yRGVsZXRlZFJlc291cmNlcygpCiAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgIH0gd2hpbGUgKHNlbGVj
dFBhdGhzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVyk7CiAgICAgCi0gICAgZXhlY3V0ZVNRTENvbW1h
bmQoIkRFTEVURSBGUk9NIERlbGV0ZWRDYWNoZVJlc291cmNlcyIpOworICAgIGV4ZWN1dGVTUUxD
b21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiX3MpOwogfQogICAgIAog
bG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFTaXplKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgKaW5kZXggMDMzMDJlN2IwODRhMjAyYmFmMWUzYmNiNTBjZWM5ZDJkMDVlNzEz
ZC4uNmJhMGE5OTdiZWIyYTdiNDM1M2FlNTViNDI0YzQ4ODJkZjQ3ZWFlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbkRhdGFiYXNl
KGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIAogICAgIGJvb2wgZXhlY3V0ZVN0YXRl
bWVudChTUUxpdGVTdGF0ZW1lbnQmKTsKLSAgICBib29sIGV4ZWN1dGVTUUxDb21tYW5kKGNvbnN0
IFN0cmluZyYpOworICAgIGJvb2wgZXhlY3V0ZVNRTENvbW1hbmQoQVNDSUlMaXRlcmFsKTsKIAog
ICAgIHZvaWQgY2hlY2tGb3JNYXhTaXplUmVhY2hlZCgpOwogICAgIHZvaWQgY2hlY2tGb3JEZWxl
dGVkUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCAyYmYzOTEyYmQ0YjcxNzIyM2I0MGNjNDljMTY2
YzFjOTkwNTUyNTMxLi5hNDhkNDE2YzU5MGNiYzg2ZjA4NjU4MDE1NDhiOGZiMzg3ZDNmMDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgIiAg
aHR0cG9ubHkgSU5URUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIlwKICAgICAiICBzZWN1cmUgSU5U
RUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIlwKICAgICAiICBsYXN0dXBkYXRlZCBJTlRFR0VSIE5P
VCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsICJcCi0gICAgIiAgVU5JUVVFKG5hbWUs
IGRvbWFpbiwgcGF0aCkpOyIKKyAgICAiICBVTklRVUUobmFtZSwgZG9tYWluLCBwYXRoKSk7Il9z
CiAjZGVmaW5lIENSRUFURV9ET01BSU5fSU5ERVhfU1FMIFwKLSAgICAiQ1JFQVRFIElOREVYIElG
IE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyIKKyAgICAiQ1JFQVRF
IElOREVYIElGIE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyJfcwog
I2RlZmluZSBDUkVBVEVfUEFUSF9JTkRFWF9TUUwgXAotICAgICJDUkVBVEUgSU5ERVggSUYgTk9U
IEVYSVNUUyBwYXRoX2luZGV4IE9OIENvb2tpZShwYXRoKTsiCisgICAgIkNSRUFURSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIHBhdGhfaW5kZXggT04gQ29va2llKHBhdGgpOyJfcwogI2RlZmluZSBTRUxF
Q1RfQUxMX0RPTUFJTlNfU1FMIFwKLSAgICAiU0VMRUNUIERJU1RJTkNUIGRvbWFpbiBGUk9NIENv
b2tpZTsiCisgICAgIlNFTEVDVCBESVNUSU5DVCBkb21haW4gRlJPTSBDb29raWU7Il9zCiAjZGVm
aW5lIENIRUNLX0VYSVNUU19DT09LSUVfU1FMIFwKLSAgICAiU0VMRUNUIGRvbWFpbiBGUk9NIENv
b2tpZSBXSEVSRSAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSk7IgorICAgICJTRUxF
Q1QgZG9tYWluIEZST00gQ29va2llIFdIRVJFICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9C
ID8pKTsiX3MKICNkZWZpbmUgQ0hFQ0tfRVhJU1RTX0hUVFBPTkxZX0NPT0tJRV9TUUwgXAotICAg
ICJTRUxFQ1QgbmFtZSBGUk9NIENvb2tpZSBXSEVSRSAobmFtZSA9ID8pIEFORCAoZG9tYWluID0g
PykgQU5EIChwYXRoID0gPykgQU5EIChodHRwb25seSA9IDEpOyIKKyAgICAiU0VMRUNUIG5hbWUg
RlJPTSBDb29raWUgV0hFUkUgKG5hbWUgPSA/KSBBTkQgKGRvbWFpbiA9ID8pIEFORCAocGF0aCA9
ID8pIEFORCAoaHR0cG9ubHkgPSAxKTsiX3MKICNkZWZpbmUgU0VUX0NPT0tJRV9TUUwgXAogICAg
ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIENvb2tpZSAobmFtZSwgdmFsdWUsIGRvbWFpbiwgcGF0
aCwgZXhwaXJlcywgc2l6ZSwgc2Vzc2lvbiwgaHR0cG9ubHksIHNlY3VyZSkgIlwKLSAgICAiVkFM
VUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KTsiCisgICAgIlZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPywgPywgPyk7Il9zCiAjZGVmaW5lIERFTEVURV9DT09LSUVfQllfTkFNRV9ET01B
SU5fUEFUSF9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgbmFtZSA9ID8gQU5E
IGRvbWFpbiA9ID8gQU5EIHBhdGggPSA/OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJF
IG5hbWUgPSA/IEFORCBkb21haW4gPSA/IEFORCBwYXRoID0gPzsiX3MKICNkZWZpbmUgREVMRVRF
X0NPT0tJRV9CWV9OQU1FX0RPTUFJTl9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hF
UkUgbmFtZSA9ID8gQU5EIGRvbWFpbiA9ID87IgorICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hF
UkUgbmFtZSA9ID8gQU5EIGRvbWFpbiA9ID87Il9zCiAjZGVmaW5lIERFTEVURV9BTExfU0VTU0lP
Tl9DT09LSUVfU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAx
OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAxOyJfcwogI2RlZmlu
ZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2ll
IFdIRVJFIGRvbWFpbiA9ID8gOyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIGRvbWFp
biA9ID8gOyJfcwogI2RlZmluZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBf
T05MWV9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgKGRvbWFpbiA9ID8pIEFO
RCAoaHR0cG9ubHkgPSAwKTsiCisgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSAoZG9tYWlu
ID0gPykgQU5EIChodHRwb25seSA9IDApOyJfcwogI2RlZmluZSBERUxFVEVfQUxMX0NPT0tJRV9T
UUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWU7IgorICAgICJERUxFVEUgRlJPTSBDb29raWU7
Il9zCiAKIAogLy8gSWYgdGhlIGRhdGFiYXNlIHNjaGVtYSBpcyB1cGRhdGVkOgpAQCAtMjExLDcg
KzIxMSw3IEBAIHZvaWQgQ29va2llSmFyREI6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAgIH0K
IAogICAgIC8vIFVwZGF0ZSB2ZXJzaW9uCi0gICAgZXhlY3V0ZVNxbChtYWtlU3RyaW5nKCJQUkFH
TUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKTsKKyAgICBleGVjdXRlU3FsU2xvdyht
YWtlU3RyaW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKTsKIH0KIAog
dm9pZCBDb29raWVKYXJEQjo6ZGVsZXRlQWxsVGFibGVzKCkKQEAgLTYyNCw3ICs2MjQsNyBAQCBi
b29sIENvb2tpZUphckRCOjpkZWxldGVBbGxDb29raWVzKCkKICAgICByZXR1cm4gZXhlY3V0ZVNx
bChERUxFVEVfQUxMX0NPT0tJRV9TUUwpOwogfQogCi12b2lkIENvb2tpZUphckRCOjpjcmVhdGVQ
cmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQordm9pZCBDb29raWVKYXJEQjo6Y3Jl
YXRlUHJlcGFyZVN0YXRlbWVudChBU0NJSUxpdGVyYWwgc3FsKQogewogICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlSGVhcFN0YXRlbWVudChzcWwpOwogICAgIEFTU0VSVChz
dGF0ZW1lbnQpOwpAQCAtNjM5LDkgKzYzOSw4IEBAIFNRTGl0ZVN0YXRlbWVudCYgQ29va2llSmFy
REI6OnByZXBhcmVkU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogICAgIHJldHVybiAqc3Rh
dGVtZW50OwogfQogCi1ib29sIENvb2tpZUphckRCOjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYg
c3FsKQorc3RhdGljIGJvb2wgZXhlY3V0ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxTUUxpdGVTdGF0
ZW1lbnQsIGludD4mJiBzdGF0ZW1lbnQpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQoc3FsKTsKICAgICBpZiAoIXN0YXRlbWVudCAmJiAhY2hlY2tT
UUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVudC5lcnJvcigpKSkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBwcmVwYXJlICVzIGVycm9yOiAlcyIsIHNxbC5hc2NpaSgpLmRhdGEoKSwgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Niw0
ICs2NTUsMTQgQEAgYm9vbCBDb29raWVKYXJEQjo6ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNx
bCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBDb29raWVKYXJEQjo6ZXhlY3V0ZVNxbFNs
b3coY29uc3QgU3RyaW5nJiBzcWwpCit7CisgICAgZXhlY3V0ZVNRTFN0YXRlbWVudChtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KHNxbCkpOworfQorCitib29sIENvb2tpZUphckRCOjpl
eGVjdXRlU3FsKEFTQ0lJTGl0ZXJhbCBzcWwpCit7CisgICAgZXhlY3V0ZVNRTFN0YXRlbWVudCht
X2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoc3FsKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmgKaW5kZXggN2MwZWE0N2VjZTRmZjBkNDcyY2U1OTVjOTFlYTFjZmE5MGIyNWNhNy4u
Zjc2MTk1YTZjZjczNWZiMWI5NWM2NDUzMTMzZDUzYTY3MjliNzAxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTkzLDkg
KzkzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB2ZXJpZnlTY2hlbWFWZXJzaW9uKCk7CiAgICAg
dm9pZCBkZWxldGVBbGxUYWJsZXMoKTsKIAotICAgIHZvaWQgY3JlYXRlUHJlcGFyZVN0YXRlbWVu
dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoQVNDSUlM
aXRlcmFsKTsKICAgICBTUUxpdGVTdGF0ZW1lbnQmIHByZXBhcmVkU3RhdGVtZW50KGNvbnN0IFN0
cmluZyYpOwotICAgIGJvb2wgZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGV4
ZWN1dGVTcWxTbG93KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgZXhlY3V0ZVNxbChBU0NJSUxp
dGVyYWwpOwogCiAgICAgYm9vbCBkZWxldGVDb29raWVJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIGJvb2wg
aGFzSHR0cE9ubHlDb29raWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFp
biwgY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDk5YzJlNTJhZjQyY2YxMGI3ZTFjNTAyNjZjN2U2ZWYw
NTU1YThhNzcuLjIwMjZmYTIzMTFhN2UxYWM3MGZlNzYzYzk4MjM0OGE2ODY2ZDM1MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMjkz
LDcgKzI5Myw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldE1heGltdW1TaXplKGludDY0X3Qg
c2l6ZSkKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICBlbmFi
bGVBdXRob3JpemVyKGZhbHNlKTsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRl
bWVudChtYWtlU3RyaW5nKCJQUkFHTUEgbWF4X3BhZ2VfY291bnQgPSAiLCBuZXdNYXhQYWdlQ291
bnQpKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJp
bmcoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCA9ICIsIG5ld01heFBhZ2VDb3VudCkpOwogICAgIGlm
ICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpCiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIHNldCBtYXhpbXVtIHNpemUgb2YgZGF0YWJhc2UgdG8gJWxs
aSBieXRlcyIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc2l6ZSkpOwogCkBAIC0zNTEsNyArMzUx
LDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKCkKIAogdm9pZCBTUUxpdGVE
YXRhYmFzZTo6c2V0U3luY2hyb25vdXMoU3luY2hyb25vdXNQcmFnbWEgc3luYykKIHsKLSAgICBl
eGVjdXRlQ29tbWFuZChtYWtlU3RyaW5nKCJQUkFHTUEgc3luY2hyb25vdXMgPSAiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3luYykpKTsKKyAgICBleGVjdXRlQ29tbWFuZFNsb3cobWFrZVN0cmlu
ZygiUFJBR01BIHN5bmNocm9ub3VzID0gIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN5bmMpKSk7
CiB9CiAKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEJ1c3lUaW1lb3V0KGludCBtcykKQEAgLTM3
MCw5ICszNzAsOSBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRCdXN5SGFuZGxlcihpbnQoKmhh
bmRsZXIpKHZvaWQqLCBpbnQpKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJCdXN5IGhhbmRs
ZXIgc2V0IG9uIG5vbi1vcGVuIGRhdGFiYXNlIik7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6
OmV4ZWN1dGVDb21tYW5kKGNvbnN0IFN0cmluZyYgcXVlcnkpCitib29sIFNRTGl0ZURhdGFiYXNl
OjpleGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeSkKIHsKLSAgICBhdXRvIHN0
YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnkpOworICAgIGF1dG8gc3RhdGVtZW50ID0g
cHJlcGFyZVN0YXRlbWVudFNsb3cocXVlcnkpOwogICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3Rh
dGVtZW50LT5leGVjdXRlQ29tbWFuZCgpOwogfQogCkBAIC0zODIsMTkgKzM4MiwxNyBAQCBib29s
IFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwgcXVlcnkpCiAgICAg
cmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCk7CiB9CiAKLWJv
b2wgU1FMaXRlRGF0YWJhc2U6OnJldHVybnNBdExlYXN0T25lUmVzdWx0KGNvbnN0IFN0cmluZyYg
c3FsKQotewotICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudChzcWwpOwotICAg
IHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5yZXR1cm5zQXRMZWFzdE9uZVJlc3VsdCgp
OwotfQotCi1ib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHRh
YmxlbmFtZSkKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKQogewogICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIG5hbWUgRlJP
TSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndGFibGUnIEFORCBuYW1lID0gJyIgKyB0YWJs
ZW5hbWUgKyAiJzsiX3MpOwotICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5zdGVw
KCkgPT0gU1FMSVRFX1JPVzsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQo
IlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ3RhYmxlJyBBTkQg
bmFtZSA9ID87Il9zKTsKKyAgICBpZiAoIXN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09L
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0YXRlbWVudC0+c3RlcCgpID09
IFNRTElURV9ST1c7CiB9CiAKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKCkK
QEAgLTQwOSw3ICs0MDcsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcygp
CiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgdGFibGUgPSB0YWJsZXMuYmVnaW4o
KTsgdGFibGUgIT0gdGFibGVzLmVuZCgpOyArK3RhYmxlICkgewogICAgICAgICBpZiAoKnRhYmxl
ID09ICJzcWxpdGVfc2VxdWVuY2UiKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
ICghZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgIiArICp0YWJsZSkpCisgICAgICAgIGlmICgh
ZXhlY3V0ZUNvbW1hbmRTbG93KCJEUk9QIFRBQkxFICIgKyAqdGFibGUpKQogICAgICAgICAgICAg
TE9HKFNRTERhdGFiYXNlLCAiVW5hYmxlIHRvIGRyb3AgdGFibGUgJXMiLCAoKnRhYmxlKS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgfQogfQpAQCAtNjc3LDcgKzY3NSw3IEBAIHN0YXRpYyBFeHBlY3Rl
ZDxzcWxpdGUzX3N0bXQqLCBpbnQ+IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoU1FMaXRl
RGF0YWJhc2UmCiAgICAgcmV0dXJuIHN0YXRlbWVudDsKIH0KIAotRXhwZWN0ZWQ8U1FMaXRlU3Rh
dGVtZW50LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmlu
ZyYgcXVlcnlTdHJpbmcpCitFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0
YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCiB7
CiAgICAgQ1N0cmluZyBxdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLnV0Zjgo
KTsKICAgICBhdXRvIHNxbFN0YXRlbWVudCA9IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQo
KnRoaXMsIHF1ZXJ5LmRhdGEoKSwgcXVlcnkubGVuZ3RoKCkpOwpAQCAtNjk4LDcgKzY5Niw3IEBA
IEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0
YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlCiAgICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudCB7ICp0
aGlzLCBzcWxTdGF0ZW1lbnQudmFsdWUoKSB9OwogfQogCi1FeHBlY3RlZDxVbmlxdWVSZWY8U1FM
aXRlU3RhdGVtZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQo
Y29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZykKK0V4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0
ZW1lbnQ+LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coY29u
c3QgU3RyaW5nJiBxdWVyeVN0cmluZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlTdHJp
bmcuc3RyaXBXaGl0ZVNwYWNlKCkudXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0gY29u
c3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5sZW5n
dGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmlu
ZGV4IGMwNDVmZTU5M2Q3OTlkNTIwODBkZGI5Mzk2YzQ5MzQyMTNlN2NkODAuLjA5ZjU5MWUxYWU0
NDU1ZTdlZDkzZDUwZDk1ODdjZTU5NDRjNGJlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC02MiwxMCArNjIsOCBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUxhc3RDaGFuZ2VzQ291bnQoKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwpOwotCi0gICAg
Ym9vbCByZXR1cm5zQXRMZWFzdE9uZVJlc3VsdChjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxUYWJsZXMoKTsKQEAgLTc0LDkgKzcyLDkgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4g
bV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVk
PFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgcXVl
cnkpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBw
cmVwYXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KTsKICAgICBXRUJDT1JFX0VY
UE9SVCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudChBU0NJ
SUxpdGVyYWwgcXVlcnkpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxT
UUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
cXVlcnkpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0
ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50
PiwgaW50PiBwcmVwYXJlSGVhcFN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwogCiAgICAg
Ly8gQWJvcnRzIHRoZSBjdXJyZW50IGRhdGFiYXNlIG9wZXJhdGlvbi4gVGhpcyBpcyB0aHJlYWQg
c2FmZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDk3MWJiYTU2NzQ3NGViNjg5NmNlNTYxYzdlNjk5NzY2MDRkZGU3OGMuLjA4
ZTllYjczZGIyNGEwOTBhN2EwODBjMWE4MTU2OTMxOGU1YTI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApAQCAtNjIsOSArNjIs
OSBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiAgICAgICAgIFNRTGl0ZURhdGFi
YXNlVHJhY2tlcjo6aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRp
ZgogICAgICAgICBpZiAobV9yZWFkT25seSkKLSAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1f
ZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIik7CisgICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBt
X2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiJfcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSIpOwor
ICAgICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4gSU1N
RURJQVRFIl9zKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1faW5Q
cm9ncmVzczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1faW5Qcm9n
cmVzcykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkK
IHsKICAgICBpZiAobV9pblByb2dyZXNzKSB7CiAgICAgICAgIEFTU0VSVChtX2RiLm1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzKTsKLSAgICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNv
bW1hbmQoIkNPTU1JVCIpOworICAgICAgICBtX2luUHJvZ3Jlc3MgPSAhbV9kYi5leGVjdXRlQ29t
bWFuZCgiQ09NTUlUIl9zKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IG1faW5Qcm9ncmVzczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1f
aW5Qcm9ncmVzcykKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9s
bGJhY2soKQogICAgIC8vIGEgbm9uLXplcm8vdHJ1ZSByZXN1bHQgKGh0dHA6Ly93d3cuc3FsaXRl
Lm9yZy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgogICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKICAg
ICAgICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2Ri
LmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpOworICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5k
KCJST0xMQkFDSyJfcyk7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICBt
X2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
REIuY3BwCmluZGV4IGExOTM5YWFkMWIwYzg2ZjAzNWRhMDA5MjVmZmVjZjE3OWQ5NjdkYmEuLjNk
YzM4NzI3ZTVjMzAwNDM2MmFhYTc2ZDc3ZGRlMjU5MjA3YWI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIGJvb2wgU2VhcmNoUG9wdXBNZW51REI6Om9wZW5EYXRhYmFzZSgpCiAKICAgICBib29s
IGRhdGFiYXNlVmFsaWRpdHkgPSB0cnVlOwogICAgIGlmICghZXhpc3RzRGF0YWJhc2VGaWxlIHx8
ICFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJTZWFyY2giKSkKLSAgICAgICAgZGF0YWJhc2VWYWxp
ZGl0eSA9IGRhdGFiYXNlVmFsaWRpdHkgJiYgKGV4ZWN1dGVTaW1wbGVTcWwoY3JlYXRlU2VhcmNo
VGFibGVTUUwpID09IFNRTElURV9ET05FKTsKKyAgICAgICAgZGF0YWJhc2VWYWxpZGl0eSA9IGRh
dGFiYXNlVmFsaWRpdHkgJiYgKGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50KGNyZWF0ZVNlYXJjaFRhYmxlU1FMKSkgPT0gU1FMSVRFX0RPTkUpOwogCiAgICAg
aWYgKCFkYXRhYmFzZVZhbGlkaXR5KSB7CiAgICAgICAgIC8vIGdpdmUgdXAgY3JlYXRlIGRhdGFi
YXNlIGF0IHRoaXMgdGltZSAoc2VhcmNoIHRlcm1zIHdpbGwgbm90IGJlIHNhdmVkKQpAQCAtMjU0
LDcgKzI1NCw4IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51REI6OnZlcmlmeVNjaGVtYVZlcnNpb24o
KQogICAgIH0KIAogICAgIC8vIFVwZGF0ZSB2ZXJzaW9uCi0gICAgZXhlY3V0ZVNpbXBsZVNxbCht
YWtlU3RyaW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKTsKKworICAg
IGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtl
U3RyaW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKSk7CiB9CiAKIHZv
aWQgU2VhcmNoUG9wdXBNZW51REI6OmNoZWNrU1FMaXRlUmV0dXJuQ29kZShpbnQgYWN0dWFsKQpA
QCAtMjcxLDE2ICsyNzIsMTUgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6Y2hlY2tTUUxpdGVS
ZXR1cm5Db2RlKGludCBhY3R1YWwpCiAgICAgfQogfQogCi1pbnQgU2VhcmNoUG9wdXBNZW51REI6
OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3JlRXJyb3IpCitp
bnQgU2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTUUxTdGF0ZW1lbnQoRXhwZWN0ZWQ8U1FMaXRl
U3RhdGVtZW50LCBpbnQ+JiYgc3RhdGVtZW50KQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KHNxbCk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAg
ICAgICAgY2hlY2tTUUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVudC5lcnJvcigpKTsKICAgICAgICAg
cmV0dXJuIHN0YXRlbWVudC5lcnJvcigpOwogICAgIH0KIAogICAgIGludCByZXQgPSBzdGF0ZW1l
bnQtPnN0ZXAoKTsKLSAgICBpZiAocmV0ICE9IFNRTElURV9PSyAmJiByZXQgIT0gU1FMSVRFX0RP
TkUgJiYgcmV0ICE9IFNRTElURV9ST1cgJiYgIWlnbm9yZUVycm9yKQorICAgIGlmIChyZXQgIT0g
U1FMSVRFX09LICYmIHJldCAhPSBTUUxJVEVfRE9ORSAmJiByZXQgIT0gU1FMSVRFX1JPVykKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZXhlY3V0ZSAlcyBlcnJvcjogJXMiLCBzcWwuYXNj
aWkoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgIHJldHVybiByZXQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51REIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5o
CmluZGV4IGY5MTNmNDNlYTVkMGE0Zjc0MzFhNzkyYjE2ODM4MGQ3OWQ3MmE2MTcuLjA5M2RhODMw
Nzg0ZjRlYjI2M2FiZjMxYzY1YzRmMzE4M2E4ZGMxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBjaGVja0RhdGFiYXNlVmFsaWRpdHkoKTsKICAgICB2b2lkIGRlbGV0ZUFs
bERhdGFiYXNlRmlsZXMoKTsKICAgICB2b2lkIHZlcmlmeVNjaGVtYVZlcnNpb24oKTsKLSAgICBp
bnQgZXhlY3V0ZVNpbXBsZVNxbChjb25zdCBTdHJpbmcmIHNxbCwgYm9vbCBpZ25vcmVFcnJvciA9
IGZhbHNlKTsKKyAgICBpbnQgZXhlY3V0ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxTUUxpdGVTdGF0
ZW1lbnQsIGludD4mJik7CiAgICAgdm9pZCBjaGVja1NRTGl0ZVJldHVybkNvZGUoaW50IGFjdHVh
bCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gY3JlYXRlUHJlcGFyZWRT
dGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHNxbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAK
aW5kZXggYjBjNzE2MWE4MDZhODY4ZWM0ZmY0NDc2NTNiYjg1M2ZjMDk2ODQ1Yi4uZWYxMWE3M2Ni
MGViY2E2OTI0MWY2MDIzNDE0MjM5MDU2NmFjZGIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29u
c3QgdWludDY0X3Qgc2NoZW1hVmVyc2lvbiA9IDY7CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcgcmVj
b3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQorc3RhdGljIEFTQ0lJTGl0
ZXJhbCByZWNvcmRzVGFibGVTY2hlbWEoKQogewotICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVB
VEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiICgiCisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgUmVj
b3JkcyAoIgogICAgICAgICAia2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklR
VUUgT04gQ09ORkxJQ1QgUkVQTEFDRSIKICAgICAgICAgIiwgb3JpZ2luIFRFWFQgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgc2NvcGVVUkwgVEVYVCBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMIgpAQCAtNjcsMjEgKzY3LDI1IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVj
b3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogICAgICAgICAiLCByZWZl
cnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHNj
cmlwdFJlc291cmNlTWFwIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAg
IiwgY2VydGlmaWNhdGVJbmZvIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAg
ICAgIikiKTsKLX0KLQotc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoKQot
ewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHNjaGVtYShyZWNvcmRzVGFibGVTY2hlbWEoIlJlY29yZHMiKSk7Ci0gICAgcmV0
dXJuIHNjaGVtYTsKKyAgICAgICAgIikiX3M7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVj
b3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzY2hlbWEocmVjb3Jkc1RhYmxl
U2NoZW1hKCJcIlJlY29yZHNcIiIpKTsKLSAgICByZXR1cm4gc2NoZW1hOworICAgIHJldHVybiAi
Q1JFQVRFIFRBQkxFIFwiUmVjb3Jkc1wiICgiCisgICAgICAgICJrZXkgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFIgorICAgICAgICAiLCBv
cmlnaW4gVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCBzY29wZVVS
TCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIHRvcE9yaWdpbiBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIGxhc3RVcGRhdGVDaGVj
a1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIHVwZGF0
ZVZpYUNhY2hlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgc2Ny
aXB0VVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgd29ya2Vy
VHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIs
IHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAg
Iiwgc2NyaXB0UmVzb3VyY2VNYXAgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAg
ICAgICAiLCBjZXJ0aWZpY2F0ZUluZm8gQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgor
ICAgICAgICAiKSJfczsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgZGF0YWJhc2VGaWxlbmFt
ZUZyb21WZXJzaW9uKHVpbnQ2NF90IHZlcnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCBhOGFlZDczMTY1MTU1ZTBj
ZjFmMmJkMzYyYjExZTg5ZjliMmRlMjljLi44Mjg3MWNlNDhjODNiZjU2ZjIzYzIwYTRmNGMyMDhj
ZTBmNTcxZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKQEAgLTQzNiwxMyArNDM2LDE5IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuYWJsZUZvcmVpZ25LZXlzKCkKIAogVGFibGVBbmRJ
bmRleFBhaXIgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJs
ZUFuZEluZGV4UXVlcmllcyhjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKLSAgICBhdXRvIGdl
dFRhYmxlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmco
IlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPSciLCB0YWJsZU5h
bWUsICInIEFORCB0eXBlID0gJ3RhYmxlJyIpKTsKKyAgICBhdXRvIGdldFRhYmxlU3RhdGVtZW50
ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21h
c3RlciBXSEVSRSB0YmxfbmFtZT0/IEFORCB0eXBlID0gJ3RhYmxlJyJfcyk7CiAgICAgaWYgKCFn
ZXRUYWJsZVN0YXRlbWVudCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5k
SW5kZXhRdWVyaWVzIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEg
Zm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCisgICAgaWYgKGdldFRhYmxlU3RhdGVt
ZW50LT5iaW5kVGV4dCgxLCB0YWJsZU5hbWUpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBiaW5kIHN0YXRl
bWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRoZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCiAg
ICAgaWYgKGdldFRhYmxlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzIGVycm9yIGV4ZWN1dGlu
ZyBzdGF0ZW1lbnQgdG8gZmV0Y2ggdGFibGUgc2NoZW1hLCBlcnJvciBtZXNzYWdlOiAlIiBQUklW
QVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ1MSwxMyArNDU3LDE5IEBAIFRhYmxlQW5kSW5k
ZXhQYWlyIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVB
bmRJbmRleFF1ZXJpCiAKICAgICBTdHJpbmcgY3JlYXRlVGFibGVRdWVyeSA9IGdldFRhYmxlU3Rh
dGVtZW50LT5nZXRDb2x1bW5UZXh0KDApOwogCi0gICAgYXV0byBnZXRJbmRleFN0YXRlbWVudCA9
IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJTRUxFQ1Qgc3FsIEZST00g
c3FsaXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0nIiwgdGFibGVOYW1lLCAiJyBBTkQgdHlwZSA9
ICdpbmRleCciKSk7CisgICAgYXV0byBnZXRJbmRleFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudCgiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25h
bWU9PyBBTkQgdHlwZSA9ICdpbmRleCciX3MpOwogICAgIGlmICghZ2V0SW5kZXhTdGF0ZW1lbnQp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBVbmFi
bGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggaW5kZXggZm9yIHRoZSB0YWJsZSwgZXJy
b3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCisgICAgaWYgKGdldEluZGV4U3RhdGVtZW50LT5iaW5kVGV4dCgxLCB0
YWJsZU5hbWUpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3
b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRh
YmxlQW5kSW5kZXhRdWVyaWVzIFVuYWJsZSB0byBiaW5kIHN0YXRlbWVudCB0byBmZXRjaCBpbmRl
eCBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRo
aXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKICAgICBPcHRpb25hbDxTdHJpbmc+
IGluZGV4OwogICAgIGlmIChnZXRJbmRleFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKICAgICAgICAgYXV0byByYXdJbmRleCA9IFN0cmluZyhnZXRJbmRleFN0YXRlbWVudC0+Z2V0
Q29sdW1uVGV4dCgwKSk7CkBAIC01MjEsMjcgKzUzMywyNyBAQCBib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpuZWVkc1VwZGF0ZWRTY2hlbWEoKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotc3RhdGljIFN0cmluZyBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVRdWVy
eShjb25zdCBTdHJpbmcmIHRhYmxlKQorc3RhdGljIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwg
aW50PiBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQoU1FMaXRlRGF0YWJhc2Um
IGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHRhYmxlKQogewogICAgIGlmICh0YWJsZSA9PSAiU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyIpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJJ
TlNFUlQgSU5UTyBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJGcmFtZURv
bWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3ViRnJhbWVEb21haW5JRCwgdG9wRnJhbWVE
b21haW5JRCIpOworICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3ViRnJhbWVEb21h
aW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YkZyYW1lRG9tYWluSUQsIHRvcEZyYW1lRG9t
YWluSUQiX3MpOwogCiAgICAgaWYgKHRhYmxlID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zIikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPIFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIE1BWChs
YXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0b3BGcmFtZURvbWFpbklE
Iik7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5U
TyBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFp
bklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCwgdG9wRnJh
bWVEb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8iKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSU5TRVJUIElOVE8gU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxh
c3RVcGRhdGVkKSwgdG9Eb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
IEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQiKTsKKyAgICAgICAgcmV0
dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8gU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIE1BWChsYXN0VXBkYXRl
ZCksIHRvRG9tYWluSUQgRlJPTSBfU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBHUk9VUCBC
WSBzdWJyZXNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEIl9zKTsKIAogICAgIGlmICh0YWJsZSA9
PSAiVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIklOU0VSVCBJTlRPIFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBTRUxFQ1QgdG9Eb21h
aW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwgZnJvbURvbWFpbklEIEZST00gX1RvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbSBHUk9VUCBCWSB0b0RvbWFpbklELCBmcm9tRG9tYWluSUQiKTsKKyAgICAg
ICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIFRvcEZyYW1l
TGlua0RlY29yYXRpb25zRnJvbSBTRUxFQ1QgdG9Eb21haW5JRCwgTUFYKGxhc3RVcGRhdGVkKSwg
ZnJvbURvbWFpbklEIEZST00gX1RvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBHUk9VUCBCWSB0
b0RvbWFpbklELCBmcm9tRG9tYWluSUQiX3MpOwogCiAgICAgaWYgKHRhYmxlID09ICJVbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCJJTlNFUlQgSU5UTyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qg
c291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIE1B
WCh0aW1lT2ZBZENsaWNrKSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgRlJPTSBfVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBk
ZXN0aW5hdGlvblNpdGVEb21haW5JRCIpOworICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgU0VMRUNUIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNv
dXJjZUlELCBNQVgodGltZU9mQWRDbGljayksIHRva2VuLCBzaWduYXR1cmUsIGtleUlEIEZST00g
X1VuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IEdST1VQIEJZIHNvdXJjZVNpdGVE
b21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQiX3MpOwogCiAgICAgaWYgKHRhYmxlID09
ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiKQotICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygiSU5TRVJUIElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNF
TEVDVCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJ
RCwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgcHJpb3JpdHksIE1BWCh0aW1lT2ZBZENsaWNrKSwg
ZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlELCBlYXJs
aWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uIEZST00gX0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBHUk9VUCBCWSBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklEIik7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNF
UlQgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VMRUNUIHNvdXJjZVNp
dGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNvdXJjZUlELCBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLCBwcmlvcml0eSwgTUFYKHRpbWVPZkFkQ2xpY2spLCBlYXJsaWVzdFRpbWVU
b1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvRGVzdGluYXRpb24gRlJPTSBfQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IEdS
T1VQIEJZIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQiX3MpOwog
Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPICIsIHRhYmxlLCAiIFNFTEVDVCBE
SVNUSU5DVCAqIEZST00gXyIsIHRhYmxlKTsKKyAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0
YXRlbWVudFNsb3cobWFrZVN0cmluZygiSU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VMRUNUIERJ
U1RJTkNUICogRlJPTSBfIiwgdGFibGUpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKQEAg
LTU1Myw4ICs1NjUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKQogICAgIHRyYW5zYWN0aW9uLmJl
Z2luKCk7CiAKICAgICBmb3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVl
cmllcygpLmtleXMoKSkgewotICAgICAgICBhdXRvIHF1ZXJ5ID0gbWFrZVN0cmluZygiQUxURVIg
VEFCTEUgIiwgdGFibGUsICIgUkVOQU1FIFRPIF8iLCB0YWJsZSk7Ci0gICAgICAgIGF1dG8gYWx0
ZXJUYWJsZSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChxdWVyeSk7CisgICAgICAgIGF1
dG8gYWx0ZXJUYWJsZSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmlu
ZygiQUxURVIgVEFCTEUgIiwgdGFibGUsICIgUkVOQU1FIFRPIF8iLCB0YWJsZSkpOwogICAgICAg
ICBpZiAoIWFsdGVyVGFibGUgfHwgYWx0ZXJUYWJsZS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNz
YXJ5IGZhaWxlZCB0byByZW5hbWUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTU2OSwxNiArNTgwLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpCiAgICAgfQogCiAg
ICAgZm9yIChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5rZXlz
KCkpIHsKLSAgICAgICAgYXV0byBxdWVyeSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVF1
ZXJ5KHRhYmxlKTsKLSAgICAgICAgYXV0byBtaWdyYXRlVGFibGVEYXRhID0gbV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KHF1ZXJ5KTsKKyAgICAgICAgYXV0byBtaWdyYXRlVGFibGVEYXRhID0g
aW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KG1fZGF0YWJhc2UsIHRhYmxlKTsK
ICAgICAgICAgaWYgKCFtaWdyYXRlVGFibGVEYXRhIHx8IG1pZ3JhdGVUYWJsZURhdGEtPnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRh
VG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gbWlncmF0ZSBzY2hlbWEsIGVycm9yIG1l
c3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGF1dG8gZHJvcFF1ZXJ5ID0gbWFrZVN0cmluZygiRFJPUCBUQUJMRSBfIiwgdGFi
bGUpOwotICAgICAgICBhdXRvIGRyb3BUYWJsZVF1ZXJ5ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KGRyb3BRdWVyeSk7CisgICAgICAgIGF1dG8gZHJvcFRhYmxlUXVlcnkgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkRST1AgVEFCTEUgXyIsIHRhYmxl
KSk7CiAgICAgICAgIGlmICghZHJvcFRhYmxlUXVlcnkgfHwgZHJvcFRhYmxlUXVlcnktPnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRh
VG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCB0ZW1wb3JhcnkgdGFibGVzLCBl
cnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01OTcsNyArNjA2LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxl
c0lmTmVjZXNzYXJ5KCkKIAogVmVjdG9yPFN0cmluZz4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmNvbHVtbnNGb3JUYWJsZShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsK
LSAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3Ry
aW5nKCJQUkFHTUEgdGFibGVfaW5mbygiLCB0YWJsZU5hbWUsICIpIikpOworICAgIGF1dG8gc3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJQUkFH
TUEgdGFibGVfaW5mbygiLCB0YWJsZU5hbWUsICIpIikpOwogCiAgICAgaWYgKCFzdGF0ZW1lbnQp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldENvbHVtbnNGcm9tVGFibGVJbmZvU3RhdGVtZW50
IFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEgZm9yIHRhYmxlLCBl
cnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwpAQCAtNjIyLDcgKzYzMSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZShTdHJpbmcmJiB0YWJs
CiAgICAgICAgIGlmIChleGlzdGluZ0NvbHVtbnMuY29udGFpbnMoY29sdW1uKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVOYW1l
LCAiIEFERCBDT0xVTU4gIiwgY29sdW1uKSk7CisgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0
YWJsZU5hbWUsICIgQUREIENPTFVNTiAiLCBjb2x1bW4pKTsKICAgICAgICAgaWYgKCFzdGF0ZW1l
bnQpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUg
VW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGFkZCBtaXNzaW5nIGNvbHVtbnMgdG8gdGFi
bGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTY0OCw3ICs2NTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjphZGRNaXNzaW5nQ29sdW1uc0lmTmVjZXNzYXJ5KCkKIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVuYW1lQ29sdW1uSW5UYWJsZShTdHJpbmcmJiB0YWJsZU5h
bWUsIEV4aXN0aW5nQ29sdW1uTmFtZSYmIGV4aXN0aW5nQ29sdW1uTmFtZSwgRXhwZWN0ZWRDb2x1
bW5OYW1lJiYgZXhwZWN0ZWRDb2x1bW5OYW1lKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxl
TmFtZSwgIiBSRU5BTUUgQ09MVU1OICIsIGV4aXN0aW5nQ29sdW1uTmFtZSwgIiBUTyAiLCBleHBl
Y3RlZENvbHVtbk5hbWUpKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVOYW1lLCAiIFJF
TkFNRSBDT0xVTU4gIiwgZXhpc3RpbmdDb2x1bW5OYW1lLCAiIFRPICIsIGV4cGVjdGVkQ29sdW1u
TmFtZSkpOwogICAgIGlmICghc3RhdGVtZW50KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRN
aXNzaW5nQ29sdW1uc1RvVGFibGUgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHJlbmFt
ZSBjb2x1bW4gaW4gdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtNjkzLDcgKzcwMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdUYWJsZXNJZk5lY2Vzc2FyeSgpCiAKICAgICBmb3IgKGF1
dG8mIHRhYmxlIDogKm1pc3NpbmdUYWJsZXMpIHsKICAgICAgICAgYXV0byBjcmVhdGVUYWJsZVF1
ZXJ5ID0gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmdldCh0YWJsZSkuZmlyc3Q7Ci0g
ICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVUYWJsZVF1ZXJ5KSkK
KyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhjcmVhdGVUYWJsZVF1
ZXJ5KSkKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZGRNaXNzaW5nVGFibGVzIGZhaWxlZCB0
byBleGVjdXRlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgfQogCkBAIC0xMDQwLDcgKzEwNDksNyBAQCBT
dHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZUFuZE1ha2VE
b21haW5MaXN0KGNvbnN0IEhhc2hTZQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjppbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KGNvbnN0IFN0cmluZyYgc3Rh
dGVtZW50LCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluTGlzdCwgdW5z
aWduZWQgZG9tYWluSUQpCiB7Ci0gICAgYXV0byBpbnNlcnRSZWxhdGlvbnNoaXBTdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZyhzdGF0ZW1lbnQsIGVuc3Vy
ZUFuZE1ha2VEb21haW5MaXN0KGRvbWFpbkxpc3QpLCAiICk7IikpOworICAgIGF1dG8gaW5zZXJ0
UmVsYXRpb25zaGlwU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyht
YWtlU3RyaW5nKHN0YXRlbWVudCwgZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoZG9tYWluTGlzdCks
ICIgKTsiKSk7CiAgICAgCiAgICAgaWYgKCFpbnNlcnRSZWxhdGlvbnNoaXBTdGF0ZW1lbnQKICAg
ICAgICAgfHwgaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50LT5iaW5kSW50KDEsIGRvbWFpbklE
KSAhPSBTUUxJVEVfT0spIHsKQEAgLTExODEsOSArMTE5MCw5IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1lcmdlU3RhdGlzdGljcyhWZWN0b3I8UmVzb3VyY2VM
b2FkU3RhCiAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoc3RhdGlzdGljKTsKIH0K
IAotc3RhdGljIGNvbnN0IFN0cmluZ1ZpZXcgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCkK
K3N0YXRpYyBBU0NJSUxpdGVyYWwgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCkKIHsKLSAg
ICByZXR1cm4gImRvbWFpbklELCIKKyAgICByZXR1cm4gIlNFTEVDVCBkb21haW5JRCwiCiAgICAg
ICAgICIoY291bnRTdWJGcmFtZVVuZGVyVG9wRnJhbWUgKyBjb3VudFN1YlJlc291cmNlVW5kZXJU
b3BGcmFtZSArIGNvdW50VW5pcXVlUmVkaXJlY3RUbykgYXMgc3VtICAiCiAgICAgICAgICJGUk9N
ICggIgogICAgICAgICAiU0VMRUNUICIKQEAgLTExOTgsNyArMTIwNyw3IEBAIHN0YXRpYyBjb25z
dCBTdHJpbmdWaWV3IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpCiAgICAgICAgICJMRUZU
IEpPSU4gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyB1IE9OIG8uZG9tYWluSUQgPSB1LnN1
YnJlc291cmNlRG9tYWluSUQgIgogICAgICAgICAiV0hFUkUgaXNQcmV2YWxlbnQgTElLRSA/ICIK
ICAgICAgICAgImFuZCBoYWRVc2VySW50ZXJhY3Rpb24gTElLRSA/ICIKLSAgICAgICAgIkdST1VQ
IEJZIGRvbWFpbklEKSBPUkRFUiBCWSBzdW0gREVTQyAiOworICAgICAgICAiR1JPVVAgQlkgZG9t
YWluSUQpIE9SREVSIEJZIHN1bSBERVNDOyJfczsKIH0KIAogVmVjdG9yPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQgdGhpcmRQYXJ0eURvbWFpbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdGhpcmRQYXJ0eURvbWFpbikgY29uc3QKQEAgLTEyMzAsNyAr
MTIzOSw3IEBAIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0CiAKICAgICBWZWN0b3I8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGFMaXN0
OwogICAgIGNvbnN0IGF1dG8gcHJldmFsZW50RG9tYWluc0JpbmRQYXJhbWV0ZXIgPSB0aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKCkgPT0gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6
QWxsID8gIiUiIDogIjEiOwotICAgIGF1dG8gc29ydGVkU3RhdGlzdGljcyA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJTRUxFQ1QgIiwgam9pblN1YlN0YXRpc3RpY3NG
b3JTb3J0aW5nKCkpKTsKKyAgICBhdXRvIHNvcnRlZFN0YXRpc3RpY3MgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCkpOwogICAgIGlmICgh
c29ydGVkU3RhdGlzdGljcwogICAgICAgICB8fCBzb3J0ZWRTdGF0aXN0aWNzLT5iaW5kVGV4dCgx
LCBwcmV2YWxlbnREb21haW5zQmluZFBhcmFtZXRlcikKICAgICAgICAgfHwgc29ydGVkU3RhdGlz
dGljcy0+YmluZFRleHQoMiwgIiUiKSAhPSBTUUxJVEVfT0spIHsKQEAgLTEyNjYsNyArMTI3NSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY3JlbWVudFJl
Y29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBhdXRvIGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBk
YXRhUmVjb3Jkc1JlbW92ZWQgPSBkYXRhUmVjb3Jkc1JlbW92ZWQgKyAxIFdIRVJFIHJlZ2lzdHJh
YmxlRG9tYWluIElOICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikpOworICAgIGF1
dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
U2xvdyhtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBkYXRhUmVjb3Jkc1Jl
bW92ZWQgPSBkYXRhUmVjb3Jkc1JlbW92ZWQgKyAxIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIElO
ICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikpOwogICAgIGlmICghZG9tYWluc1Rv
VXBkYXRlU3RhdGVtZW50IHx8IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1l
bnRTdGF0aXN0aWNzRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTM1Miw3ICsxMzYxLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVk
VG9QcmV2YWwKICAgICAgICAgICAgIHByZXZhbGVudER1ZVRvUmVkaXJlY3QuaW5zZXJ0KHRvcEZy
YW1lUmVkaXJlY3RTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSk7CiAgICAgfQogCi0gICAgYXV0
byBtYXJrUHJldmFsZW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1h
a2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gMSBXSEVS
RSBkb21haW5JRCBJTiAoIiwgYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxTdGRTZXQ8dW5z
aWduZWQ+OjppdGVyYXRvcj4ocHJldmFsZW50RHVlVG9SZWRpcmVjdC5iZWdpbigpLCBwcmV2YWxl
bnREdWVUb1JlZGlyZWN0LmVuZCgpKSksICIpIikpOworICAgIGF1dG8gbWFya1ByZXZhbGVudFN0
YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiVVBE
QVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAxIFdIRVJFIGRvbWFpbklEIElO
ICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0ZFNldDx1bnNpZ25lZD46Oml0ZXJh
dG9yPihwcmV2YWxlbnREdWVUb1JlZGlyZWN0LmJlZ2luKCksIHByZXZhbGVudER1ZVRvUmVkaXJl
Y3QuZW5kKCkpKSwgIikiKSk7CiAgICAgaWYgKCFtYXJrUHJldmFsZW50U3RhdGVtZW50IHx8IG1h
cmtQcmV2YWxlbnRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVk
VG9QcmV2YWxlbnQgZmFpbGVkIHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTM4NCw3ICsxMzkzLDcgQEAgSGFzaE1hcDx1bnNpZ25l
ZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Ok5vdFZlcnlQcmV2YWxlbnRS
ZXNvdXJjZXMKIAogICAgIGF1dG8gZG9tYWluSURzT2ZJbnRlcmVzdCA9IGJ1aWxkZXIudG9TdHJp
bmcoKTsKIAotICAgIGF1dG8gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJTRUxFQ1Qgc3VicmVz
b3VyY2VEb21haW5JRCwgQ09VTlQodG9wRnJhbWVEb21haW5JRCkgRlJPTSBTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFp
bklEc09mSW50ZXJlc3QsICIpIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQiKSk7CisgICAg
YXV0byBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50ID0gbV9kYXRhYmFz
ZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJTRUxFQ1Qgc3VicmVzb3VyY2VEb21h
aW5JRCwgQ09VTlQodG9wRnJhbWVEb21haW5JRCkgRlJPTSBTdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50
ZXJlc3QsICIpIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQiKSk7CiAgICAgaWYgKHN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKHN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LT5nZXRDb2x1bW5J
bnQoMCkpOwpAQCAtMTM5NCw3ICsxNDAzLDcgQEAgSGFzaE1hcDx1bnNpZ25lZCwgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Ok5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0Nv
dW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNF
TEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBDT1VOVCh0b0RvbWFpbklEKSBGUk9NIFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9t
YWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsKKyAg
ICBhdXRvIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHN1YnJlc291cmNl
RG9tYWluSUQsIENPVU5UKHRvRG9tYWluSUQpIEZST00gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVyZXN0
LCAiKSBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklEIikpOwogICAgIGlmIChzdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9S
T1cpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+Z2V0Q29sdW1u
SW50KDApKTsKQEAgLTE0MDQsNyArMTQxMyw3IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpOb3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnND
b3VudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJT
RUxFQ1Qgc3ViZnJhbWVEb21haW5JRCwgQ09VTlQodG9wRnJhbWVEb21haW5JRCkgRlJPTSBTdWJm
cmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YmZyYW1lRG9tYWluSUQgSU4gKCIsIGRv
bWFpbklEc09mSW50ZXJlc3QsICIpIEdST1VQIEJZIHN1YmZyYW1lRG9tYWluSUQiKSk7CisgICAg
YXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRTdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlNFTEVDVCBzdWJmcmFtZURvbWFp
bklELCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9NIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURv
bWFpbnMgV0hFUkUgc3ViZnJhbWVEb21haW5JRCBJTiAoIiwgZG9tYWluSURzT2ZJbnRlcmVzdCwg
IikgR1JPVVAgQlkgc3ViZnJhbWVEb21haW5JRCIpKTsKICAgICBpZiAoc3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50KSB7CiAgICAgICAgIHdoaWxlIChzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zQ291bnRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgw
KSk7CkBAIC0xNDE0LDcgKzE0MjMsNyBAQCBIYXNoTWFwPHVuc2lnbmVkLCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZhbGVudFJlc291cmNlcwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgYXV0byB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiU0VMRUNUIHNv
dXJjZURvbWFpbklELCBDT1VOVCh0b0RvbWFpbklEKSBGUk9NIFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzVG8gV0hFUkUgc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50ZXJlc3QsICIp
IEdST1VQIEJZIHNvdXJjZURvbWFpbklEIikpOworICAgIGF1dG8gdG9wRnJhbWVVbmlxdWVSZWRp
cmVjdHNUb0NvdW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyht
YWtlU3RyaW5nKCJTRUxFQ1Qgc291cmNlRG9tYWluSUQsIENPVU5UKHRvRG9tYWluSUQpIEZST00g
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9t
YWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc291cmNlRG9tYWluSUQiKSk7CiAgICAgaWYg
KHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudCkgewogICAgICAgICB3aGls
ZSAodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykgewogICAgICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5nZXRDb2x1
bW5JbnQoMCkpOwpAQCAtMTY0NCw3ICsxNjUzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBIYXNoU2UK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFG
b3JEb21haW5zIHdhcyBub3QgY29tcGxldGVkIGR1ZSB0byBmYWlsZWQgaW5zZXJ0IGF0dGVtcHQi
LCB0aGlzKTsKICAgICB9CiAKLSAgICBhdXRvIGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21h
aW5zIFNFVCBncmFuZGZhdGhlcmVkID0gMSBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwg
ZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsKKyAgICBhdXRvIGRvbWFpbnNUb1VwZGF0
ZVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygi
VVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZ3JhbmRmYXRoZXJlZCA9IDEgV0hFUkUgcmVnaXN0
cmFibGVEb21haW4gSU4gKCIsIGRvbWFpbnNUb1N0cmluZyhkb21haW5zKSwgIikiKSk7CiAgICAg
aWYgKCFkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50
LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5MTUsNyArMTkyNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZhbGVu
dChTdGRTZXQ8dW5zaWduZWQ+CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBhdXRvIGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0
YXRlbWVudChtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVu
dCA9IDEgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8
U3RkU2V0PHVuc2lnbmVkPjo6aXRlcmF0b3I+KGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQo
KSkpLCAiKSIpKTsKKyAgICBhdXRvIGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudCA9IG1fZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlu
cyBTRVQgaXNQcmV2YWxlbnQgPSAxIFdIRVJFIGRvbWFpbklEIElOICgiLCBidWlsZExpc3QoV1RG
OjpJdGVyYXRvclJhbmdlPFN0ZFNldDx1bnNpZ25lZD46Oml0ZXJhdG9yPihkb21haW5zLmJlZ2lu
KCksIGRvbWFpbnMuZW5kKCkpKSwgIikiKSk7CiAgICAgaWYgKCFkb21haW5zVG9VcGRhdGVTdGF0
ZW1lbnQgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNldERvbWFpbnNBc1ByZXZh
bGVudCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjQ2Niw3ICsyNDc1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Y2xlYXJHcmFuZGZhdGhlcmluZyhWZWN0b3I8dW5zaWduZWQ+JiYKIAogICAgIGF1
dG8gbGlzdFRvQ2xlYXIgPSBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFZlY3Rvcjx1bnNp
Z25lZD46Oml0ZXJhdG9yPihkb21haW5JRHNUb0NsZWFyLmJlZ2luKCksIGRvbWFpbklEc1RvQ2xl
YXIuZW5kKCkpKTsKIAotICAgIGF1dG8gY2xlYXJHcmFuZGZhdGhlcmluZ1N0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWREb21h
aW5zIFNFVCBncmFuZGZhdGhlcmVkID0gMCBXSEVSRSBkb21haW5JRCBJTiAoIiwgbGlzdFRvQ2xl
YXIsICIpIikpOworICAgIGF1dG8gY2xlYXJHcmFuZGZhdGhlcmluZ1N0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9t
YWlucyBTRVQgZ3JhbmRmYXRoZXJlZCA9IDAgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGxpc3RUb0Ns
ZWFyLCAiKSIpKTsKICAgICBpZiAoIWNsZWFyR3JhbmRmYXRoZXJpbmdTdGF0ZW1lbnQpCiAgICAg
ICAgIHJldHVybjsKICAgICAKQEAgLTI2MjMsNyArMjYzMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkKIAogICAg
IGF1dG8gbGlzdFRvUHJ1bmUgPSBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFZlY3Rvcjx1
bnNpZ25lZD46Oml0ZXJhdG9yPihlbnRyaWVzVG9QcnVuZS5iZWdpbigpLCBlbnRyaWVzVG9QcnVu
ZS5lbmQoKSkpOwogCi0gICAgYXV0byBwcnVuZUNvbW1hbmQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQobWFrZVN0cmluZygiREVMRVRFIGZyb20gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRv
bWFpbklEIElOICgiLCBsaXN0VG9QcnVuZSwgIikiKSk7CisgICAgYXV0byBwcnVuZUNvbW1hbmQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkRFTEVURSBmcm9t
IE9ic2VydmVkRG9tYWlucyBXSEVSRSBkb21haW5JRCBJTiAoIiwgbGlzdFRvUHJ1bmUsICIpIikp
OwogICAgIGlmICghcHJ1bmVDb21tYW5kIHx8IHBydW5lQ29tbWFuZC0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRp
c3RpY3NJZk5lZWRlZCBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMjc3MCwzNSArMjc3OSwzNSBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25l
ZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgdGFi
bGVOYW1lKSBjb25zdAorQVNDSUlMaXRlcmFsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUp
IGNvbnN0CiB7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJh
bWVEb21haW5zIikKLSAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wTGV2ZWxEb21haW5JRCBmcm9t
IFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8iOwor
ICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BMZXZlbERvbWFpbklEIGZyb20gU3RvcmFnZUFjY2Vz
c1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKICAgICBpZiAodGFi
bGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIikKLSAgICAgICAgcmV0dXJuICJT
RUxFQ1QgdG9Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc291
cmNlRG9tYWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9Eb21haW5JRCBmcm9t
IFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc291cmNlRG9tYWluSUQgPSA/Il9zOwog
ICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSIpCi0gICAg
ICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbSBXSEVSRSB0YXJnZXREb21haW5JRCA9ID8iOworICAgICAgICByZXR1cm4gIlNFTEVD
VCBmcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20gV0hFUkUgdGFy
Z2V0RG9tYWluSUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lTGlua0Rl
Y29yYXRpb25zRnJvbSIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9t
IFRvcEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBXSEVSRSB0b0RvbWFpbklEID0gPyI7CisgICAg
ICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lTGlua0RlY29yYXRp
b25zRnJvbSBXSEVSRSB0b0RvbWFpbklEID0gPyJfczsKICAgICBpZiAodGFibGVOYW1lID09ICJU
b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIikKLSAgICAgICAgcmV0dXJuICJTRUxFQ1Qg
c3VicmVzb3VyY2VEb21haW5JRCBmcm9tIFRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMg
V0hFUkUgdG9wRnJhbWVEb21haW5JRCA9ID8iOworICAgICAgICByZXR1cm4gIlNFTEVDVCBzdWJy
ZXNvdXJjZURvbWFpbklEIGZyb20gVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyBXSEVS
RSB0b3BGcmFtZURvbWFpbklEID0gPyJfczsKICAgICBpZiAodGFibGVOYW1lID09ICJTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVEb21haW5zIikKLSAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wRnJhbWVE
b21haW5JRCBmcm9tIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViRnJhbWVE
b21haW5JRCA9ID8iOworICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZy
b20gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0g
PyJfczsKICAgICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5zIikKLSAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBmcm9tIFN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8i
OworICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20gU3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsK
ICAgICBpZiAodGFibGVOYW1lID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIikKLSAg
ICAgICAgcmV0dXJuICJTRUxFQ1QgdG9Eb21haW5JRCBmcm9tIFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8gV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iOworICAgICAgICByZXR1cm4g
IlNFTEVDVCB0b0RvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVS
RSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyJfczsKICAgICBpZiAodGFibGVOYW1lID09ICJTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKQotICAgICAgICByZXR1cm4gIlNFTEVDVCBmcm9t
RG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gV0hFUkUgc3VicmVz
b3VyY2VEb21haW5JRCA9ID8iOworICAgICAgICByZXR1cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQg
ZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gV0hFUkUgc3VicmVzb3VyY2VEb21h
aW5JRCA9ID8iX3M7CiAgICAgCi0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJu
ICIiX3M7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFw
cGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5n
JiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25zdAogewogICAgIGF1dG8gcXVl
cnkgPSBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQodGFibGVOYW1lKTsKICAgICAKLSAgICBpZiAo
cXVlcnkuaXNFbXB0eSgpKQorICAgIGlmICghcXVlcnkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBhdXRvIGRhdGEgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQocXVl
cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaAppbmRleCBhMWUzNTE1MzQ0NmM1N2ZkMzg4NTlhNmRjZjg2MjRiMDE2MDMwOTdlLi5mZDcx
Y2M1ZTdiOTYwNGM3ODE4ZjFiNmFlOWJhNWQzMTZlMjgxODNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMTgxLDcgKzE4MSw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IGdldFRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKSBjb25zdDsKICAgICB2b2lkIG9wZW5BbmRVcGRhdGVTY2hlbWFJZk5lY2Vzc2FyeSgpOwog
ICAgIFN0cmluZyBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQpIGNvbnN0Owot
ICAgIFN0cmluZyBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7
CisgICAgQVNDSUlMaXRlcmFsIGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICB2b2lkIGFwcGVuZFN1YlN0YXRpc3RpY0xpc3QoU3RyaW5nQnVpbGRlciYs
IGNvbnN0IFN0cmluZyYgdGFibGVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3Q7CiAg
ICAgdm9pZCBtZXJnZVN0YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAg
ICAgdm9pZCBtZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBjb25zdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCA0Yzc4
ZmNlOTQ3ODkyODcyZTVkYTE2NWRlM2Y1YWM5N2RjMmUwZDhhLi4zNjgzNjVmZjFiMDg4NDNkMzZh
ZTAyOTczNjA4ZDdiYWE0Y2JmYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAK
QEAgLTgxLDExICs4MSwxMSBAQCBib29sIExvY2FsU3RvcmFnZURhdGFiYXNlOjpvcGVuRGF0YWJh
c2UoU2hvdWxkQ3JlYXRlRGF0YWJhc2Ugc2hvdWxkQ3JlYXRlRGF0YWJhcwogICAgIGlmICghbWln
cmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkpIHsKICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIG1pZ3Jh
dGUgdGhlIGl0ZW0gdGFibGUuIEluIG9yZGVyIHRvIGF2b2lkIHRyeWluZyB0byBtaWdyYXRlIHRo
ZSB0YWJsZSBvdmVyIGFuZCBvdmVyLAogICAgICAgICAvLyBqdXN0IGRlbGV0ZSBpdCBhbmQgc3Rh
cnQgZnJvbSBzY3JhdGNoLgotICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
IkRST1AgVEFCTEUgSXRlbVRhYmxlIikpCisgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRl
Q29tbWFuZCgiRFJPUCBUQUJMRSBJdGVtVGFibGUiX3MpKQogICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gZGVsZXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOwog
ICAgIH0KIAotICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IElGIE5PVCBFWElTVFMgSXRlbVRhYmxlIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpKSB7CisgICAgaWYg
KCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBJ
dGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9C
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBjcmVhdGUgdGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMDYsMTMgKzEwNiwxMyBAQCBib29sIExvY2Fs
U3RvcmFnZURhdGFiYXNlOjptaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyB0YWJsZSB3aXRoIHRoZSByaWdodCB0eXBl
LCBjb3B5IGFsbCB0aGUgZGF0YSBvdmVyIHRvIGl0IGFuZCB0aGVuIHJlcGxhY2UgdGhlIG5ldyB0
YWJsZSB3aXRoIHRoZSBvbGQgdGFibGUuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbW1hbmRz
W10gPSB7Ci0gICAgICAgICJEUk9QIFRBQkxFIElGIEVYSVNUUyBJdGVtVGFibGUyIiwKLSAgICAg
ICAgIkNSRUFURSBUQUJMRSBJdGVtVGFibGUyIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIsCi0gICAgICAg
ICJJTlNFUlQgSU5UTyBJdGVtVGFibGUyIFNFTEVDVCAqIGZyb20gSXRlbVRhYmxlIiwKLSAgICAg
ICAgIkRST1AgVEFCTEUgSXRlbVRhYmxlIiwKLSAgICAgICAgIkFMVEVSIFRBQkxFIEl0ZW1UYWJs
ZTIgUkVOQU1FIFRPIEl0ZW1UYWJsZSIsCi0gICAgICAgIDAsCisgICAgc3RhdGljIGNvbnN0IEFT
Q0lJTGl0ZXJhbCBjb21tYW5kc1tdID0geworICAgICAgICAiRFJPUCBUQUJMRSBJRiBFWElTVFMg
SXRlbVRhYmxlMiJfcywKKyAgICAgICAgIkNSRUFURSBUQUJMRSBJdGVtVGFibGUyIChrZXkgVEVY
VCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMKSJfcywKKyAgICAgICAgIklOU0VSVCBJTlRPIEl0ZW1UYWJsZTIgU0VMRUNUICog
ZnJvbSBJdGVtVGFibGUiX3MsCisgICAgICAgICJEUk9QIFRBQkxFIEl0ZW1UYWJsZSJfcywKKyAg
ICAgICAgIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZTIgUkVOQU1FIFRPIEl0ZW1UYWJsZSJfcywKKyAg
ICAgICAgQVNDSUlMaXRlcmFsOjpudWxsKCksCiAgICAgfTsKIAogICAgIFNRTGl0ZVRyYW5zYWN0
aW9uIHRyYW5zYWN0aW9uKG1fZGF0YWJhc2UpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgTG9j
YWxTdG9yYWdlRGF0YWJhc2U6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpCiAgICAgICAgIGlm
IChtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmRzW2ldKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1pZ3JhdGUgdGFibGUgSXRl
bVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIHdoZW4gZXhlY3V0aW5nOiAlcyIsIGNvbW1hbmRzW2ld
KTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWlncmF0ZSB0YWJsZSBJdGVtVGFibGUg
Zm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVzIiwgY29tbWFuZHNbaV0uY2hhcmFj
dGVycygpKTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggNjUwODg2ZWU1
NjYxNjIwYjg4MzBhNjM1MDZiOTdmMzQ0MGQ3Zjc4NS4uOTQ3NzAyNTE0NTlkMjIzM2JiMDEyOGVi
ZmY4MmM0YjQ0ZmVmZmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0xMjQsNDIgKzEyNCw0MyBAQCBib29sIEljb25EYXRh
YmFzZTo6Y3JlYXRlVGFibGVzSWZOZWVkZWQoKQogCiAgICAgbV9kYi5jbGVhckFsbFRhYmxlcygp
OwogCi0gICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgUGFnZVVSTCAo
dXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSxpY29uSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAg
IGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIFBhZ2VVUkwgKHVybCBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsaWNv
bklEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7Il9zKSkgewogICAgICAgICBM
T0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgUGFnZVVSTCB0YWJsZSBpbiBkYXRhYmFzZSAoJWkp
IC0gJXMiLCBtX2RiLmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
bV9kYi5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICghbV9k
Yi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIElOREVYIFBhZ2VVUkxJbmRleCBPTiBQYWdlVVJMICh1
cmwpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggUGFn
ZVVSTEluZGV4IE9OIFBhZ2VVUkwgKHVybCk7Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCBjcmVhdGUgUGFnZVVSTCBpbmRleCBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2Ri
Lmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgbV9kYi5jbG9zZSgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICghbV9kYi5leGVjdXRlQ29t
bWFuZCgiQ1JFQVRFIFRBQkxFIEljb25JbmZvIChpY29uSUQgSU5URUdFUiBQUklNQVJZIEtFWSBB
VVRPSU5DUkVNRU5UIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB1cmwgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBzdGFtcCBJTlRFR0VS
KTsiKSkgeworICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEljb25J
bmZvIChpY29uSUQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIFVOSVFVRSBPTiBD
T05GTElDVCBSRVBMQUNFLCB1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFV
RSBPTiBDT05GTElDVCBGQUlMLCBzdGFtcCBJTlRFR0VSKTsiX3MpKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBJY29uSW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0g
JXMiLCBtX2RiLmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgbV9k
Yi5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICghbV9kYi5l
eGVjdXRlQ29tbWFuZCgiQ1JFQVRFIElOREVYIEljb25JbmZvSW5kZXggT04gSWNvbkluZm8gKHVy
bCwgaWNvbklEKTsiKSkgeworICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIElO
REVYIEljb25JbmZvSW5kZXggT04gSWNvbkluZm8gKHVybCwgaWNvbklEKTsiX3MpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBQYWdlVVJMIGluZGV4IGluIGRhdGFiYXNl
ICglaSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSWNvbkRhdGEgKGljb25JRCBJTlRF
R0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0Us
IGRhdGEgQkxPQik7IikpIHsKKyAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBU
QUJMRSBJY29uRGF0YSAoaWNvbklEIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBV
TklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgZGF0YSBCTE9CKTsiX3MpKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBJY29uRGF0YSB0YWJsZSBpbiBkYXRhYmFzZSAoJWkp
IC0gJXMiLCBtX2RiLmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
bV9kYi5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICghbV9k
Yi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIElOREVYIEljb25EYXRhSW5kZXggT04gSWNvbkRhdGEg
KGljb25JRCk7IikpIHsKKyAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRF
WCBJY29uRGF0YUluZGV4IE9OIEljb25EYXRhIChpY29uSUQpOyJfcykpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFBhZ2VVUkwgaW5kZXggaW4gZGF0YWJhc2UgKCVpKSAt
ICVzIiwgbV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1f
ZGIuY2xvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIu
ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJY29uRGF0YWJhc2VJbmZvIChrZXkgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVl
IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1fZGIuZXhl
Y3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJY29uRGF0YWJhc2VJbmZvIChrZXkgVEVYVCBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7Il9zKSkgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBjcmVhdGUgSWNvbkRhdGFiYXNlSW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkp
IC0gJXMiLCBtX2RiLmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
bV9kYi5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICghbV9k
Yi5leGVjdXRlQ29tbWFuZChTdHJpbmcoIklOU0VSVCBJTlRPIEljb25EYXRhYmFzZUluZm8gVkFM
VUVTICgnVmVyc2lvbicsICIpICsgU3RyaW5nOjpudW1iZXIoY3VycmVudERhdGFiYXNlVmVyc2lv
bikgKyAiKTsiKSkgeworICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBJY29uRGF0YWJhc2VJbmZvIFZBTFVFUyAoJ1ZlcnNpb24nLCA/KTsiX3Mp
OworICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+YmluZEludChjdXJyZW50RGF0YWJh
c2VWZXJzaW9uKSAhPSBTUUxJVEVfT0sgfHwgIXN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBpbnNlcnQgaWNvbiBkYXRhYmFzZSB2ZXJz
aW9uIGludG8gSWNvbkRhdGFiYXNlSW5mbyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RiLmxhc3RFcnJv
cigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgbV9kYi5jbG9zZSgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNzUsMTMgKzE3NiwxNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6
cG9wdWxhdGVQYWdlVVJMVG9JY29uVVJMTWFwKCkKICAgICBpZiAoIW1fZGIuaXNPcGVuKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbXBvcnRRdWVyeSA9IG1ha2VTdHJpbmcoIlNF
TEVDVCBQYWdlVVJMLnVybCwgSWNvbkluZm8udXJsLCBJY29uSW5mby5zdGFtcCBGUk9NIFBhZ2VV
UkwgSU5ORVIgSk9JTiBJY29uSW5mbyBPTiBQYWdlVVJMLmljb25JRD1JY29uSW5mby5pY29uSUQg
V0hFUkUgSWNvbkluZm8uc3RhbXAgPiAiLCBmbG9vcigoV2FsbFRpbWU6Om5vdygpIC0gbm90VXNl
ZEljb25FeHBpcmF0aW9uVGltZSkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpLCAnOycp
OwotICAgIGF1dG8gcXVlcnkgPSBtX2RiLnByZXBhcmVTdGF0ZW1lbnQoaW1wb3J0UXVlcnkpOwor
ICAgIGF1dG8gcXVlcnkgPSBtX2RiLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBQYWdlVVJMLnVy
bCwgSWNvbkluZm8udXJsLCBJY29uSW5mby5zdGFtcCBGUk9NIFBhZ2VVUkwgSU5ORVIgSk9JTiBJ
Y29uSW5mbyBPTiBQYWdlVVJMLmljb25JRD1JY29uSW5mby5pY29uSUQgV0hFUkUgSWNvbkluZm8u
c3RhbXAgPiAoPyk7Il9zKTsKICAgICBpZiAoIXF1ZXJ5KSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHByZXBhcmUgaWNvbiB1cmwgaW1wb3J0IHF1ZXJ5Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBpZiAocXVlcnktPmJpbmRJbnQ2NCgxLCBmbG9vcigoV2FsbFRpbWU6
Om5vdygpIC0gbm90VXNlZEljb25FeHBpcmF0aW9uVGltZSkuc2Vjb25kc1NpbmNlRXBvY2goKS5z
ZWNvbmRzKCkpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgTE9HX0VSUk9SKCJJY29uRGF0YWJh
c2U6OnBvcHVsYXRlUGFnZVVSTFRvSWNvblVSTE1hcDogZmFpbGVkIHRvIGJpbmQgc3RhdGVtZW50
OiAlcyIsIG1fZGIubGFzdEVycm9yTXNnKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgYXV0byByZXN1bHQgPSBxdWVyeS0+c3RlcCgpOwogICAgIExvY2tIb2xkZXIgbG9ja0hvbGRl
cihtX3BhZ2VVUkxUb0ljb25VUkxNYXBMb2NrKTsKICAgICB3aGlsZSAocmVzdWx0ID09IFNRTElU
RV9ST1cpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
QXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3lu
Yy5jcHAKaW5kZXggY2FlMDgyZjEzZGNkMzY4YzQ4MTk1YmUzMTFmMjBhNWI2NjQ0OGZhYi4uNWRj
MjBiY2YwZGY1YzkwMWI3ODU3NTc3ODFlNWI3MGYzMDc3M2QxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKQEAgLTI2Miw3ICsyNjIsNyBA
QCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlw
ZSBvcGVuaW5nU3RyYXRlZ3kpCiAKICAgICBtaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKTsKIAot
ICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBF
WElTVFMgSXRlbVRhYmxlIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFs
dWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpKSB7CisgICAgaWYgKCFtX2RhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBJdGVtVGFibGUg
KGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwpIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBj
cmVhdGUgdGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIik7CiAgICAgICAgIG1hcmtJ
bXBvcnRlZCgpOwogICAgICAgICBtX2RhdGFiYXNlT3BlbkZhaWxlZCA9IHRydWU7CkBAIC0yODUs
MjAgKzI4NSwyMCBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVl
ZGVkKCkKICAgICB9CiAKICAgICAvLyBhbHRlciB0YWJsZSBmb3IgYmFja3dhcmQgY29tcGxpYW5j
ZSwgY2hhbmdlIHRoZSB2YWx1ZSB0eXBlIGZyb20gVEVYVCB0byBCTE9CLgotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb21tYW5kc1tdID0gewotICAgICAgICAiRFJPUCBUQUJMRSBJRiBFWElTVFMg
SXRlbVRhYmxlMiIsCi0gICAgICAgICJDUkVBVEUgVEFCTEUgSXRlbVRhYmxlMiAoa2V5IFRFWFQg
VU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCkiLAotICAgICAgICAiSU5TRVJUIElOVE8gSXRlbVRhYmxlMiBTRUxFQ1QgKiBmcm9t
IEl0ZW1UYWJsZSIsCi0gICAgICAgICJEUk9QIFRBQkxFIEl0ZW1UYWJsZSIsCi0gICAgICAgICJB
TFRFUiBUQUJMRSBJdGVtVGFibGUyIFJFTkFNRSBUTyBJdGVtVGFibGUiLAotICAgICAgICAwLAor
ICAgIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgY29tbWFuZHNbXSA9IHsKKyAgICAgICAgIkRS
T1AgVEFCTEUgSUYgRVhJU1RTIEl0ZW1UYWJsZTIiX3MsCisgICAgICAgICJDUkVBVEUgVEFCTEUg
SXRlbVRhYmxlMiAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIEJM
T0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3MsCisgICAgICAgICJJTlNFUlQgSU5UTyBJ
dGVtVGFibGUyIFNFTEVDVCAqIGZyb20gSXRlbVRhYmxlIl9zLAorICAgICAgICAiRFJPUCBUQUJM
RSBJdGVtVGFibGUiX3MsCisgICAgICAgICJBTFRFUiBUQUJMRSBJdGVtVGFibGUyIFJFTkFNRSBU
TyBJdGVtVGFibGUiX3MsCisgICAgICAgIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpLAogICAgIH07CiAK
ICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihtX2RhdGFiYXNlLCBmYWxzZSk7CiAg
ICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgY29tbWFuZHNb
aV07ICsraSkgewogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY29tbWFu
ZHNbaV0pKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtaWdyYXRlIHRhYmxl
IEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSB3aGVuIGV4ZWN1dGluZzogJXMiLCBjb21tYW5k
c1tpXSk7CisgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtaWdyYXRlIHRhYmxlIEl0
ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSB3aGVuIGV4ZWN1dGluZzogJXMiLCBjb21tYW5kc1tp
XS5jaGFyYWN0ZXJzKCkpOwogICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKIAog
ICAgICAgICAgICAgLy8gZmluYWxseSBpdCB3aWxsIHRyeSB0byBrZWVwIGEgYmFja3VwIG9mIEl0
ZW1UYWJsZSBmb3IgdGhlIGZ1dHVyZSByZXN0b3JhdGlvbi4KQEAgLTMwNiw3ICszMDYsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhU3luYzo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkKICAgICAgICAg
ICAgIC8vIHRoYW4gY29udGludWFsbHkgaGl0dGluZyB0aGlzIGNhc2UgYW5kIG5ldmVyIGJlaW5n
IGFibGUgdG8gdXNlIHRoZSBsb2NhbCBzdG9yYWdlLgogICAgICAgICAgICAgLy8gaWYgdGhpcyBp
cyBldmVyIGhpdCwgaXQncyBkZWZpbml0ZWx5IGEgYnVnLgogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
IkFMVEVSIFRBQkxFIEl0ZW1UYWJsZSBSRU5BTUUgVE8gQmFja3VwX0l0ZW1UYWJsZSIpKQorICAg
ICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBJdGVt
VGFibGUgUkVOQU1FIFRPIEJhY2t1cF9JdGVtVGFibGUiX3MpKQogICAgICAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHNhdmUgSXRlbVRhYmxlIGFmdGVyIG1pZ3JhdGlvbiBqb2IgZmFp
bGVkLiIpOwogCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCAzZWNjZmE3NWQyMDI2ZTVkMzBkOTdiMDAz
NmUzZmUyMzdkNGI3NzBkLi44YjFlMTBiMjRiOGE0MjdlZDZiMmIxN2I0NzRhMTQyYjFjYzI5NzY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFi
YXNlKGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhy
ZWFkaW5nQ2hlY2tzKCk7CiAgICAgCiAgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJP
cmlnaW5zIikpIHsKLSAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVB
VEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0Us
IHBhdGggVEVYVCk7IikpCisgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBM
QUNFLCBwYXRoIFRFWFQpOyJfcykpCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBj
cmVhdGUgT3JpZ2lucyB0YWJsZS4iKTsKICAgICB9CiB9Cg==
</data>
<flag name="commit-queue"
          id="449831"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428801</attachid>
            <date>2021-05-16 12:28:23 -0700</date>
            <delta_ts>2021-05-16 12:40:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225855-20210516122822.patch</filename>
            <type>text/plain</type>
            <size>97338</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhMDgyY2JkODllODYw
NTgzZWIxZTI0MDY2MDMzOTA1ZDgzMWE0NC4uZmEwMzQzZjRkNTFlODRiY2JlZmYwMWJlY2JmY2E1
MjVjOGMyZTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTA1LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9yZSBTdHJpbmcg
Y3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBtb3JlIFN0cmluZyBjcmVh
dGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVudHMgYnkgdXNpbmcgQVNDSUlMaXRl
cmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0
ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZCgpIG92ZXJsb2FkcyB0aGF0
IHRha2UgaW4gYQorICAgICAgICBTdHJpbmcgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIG5vdCBjYWxs
ZWQgYnkgbWlzdGFrZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2M1Jl
Y29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYzUmVjb3Jk
c1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djNJ
bmRleFJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYz
SW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpibG9iUmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6YmxvYlJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OmJsb2JGaWxlc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6YmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpjcmVhdGVPck1pZ3JhdGVSZWNvcmRzVGFibGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRSZWNvcmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRPYmplY3RTdG9yZUluZm9UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5k
ZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpleGVjdXRlU1FMQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6dmVyaWZ5U2NoZW1hVmVyc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2hlY2tGb3JEZWxldGVkUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llSmFyREI6OnZlcmlmeVNjaGVtYVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZVNRTFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
ZXhlY3V0ZVNxbFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmV4ZWN1dGVT
cWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6c2V0TWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U6OnNldFN5bmNocm9ub3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OnRhYmxlRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpj
bGVhckFsbFRhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFy
ZVN0YXRlbWVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnByZXBh
cmVIZWFwU3RhdGVtZW50U2xvdyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZVRyYW5zYWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjp2ZXJp
ZnlTY2hlbWFWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTUUxTdGF0ZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oOgorCiAyMDIxLTA1
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXpl
IC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNyZWF0aW9uIGFuZCBwcmVwYXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5MDAzY2QwNjUwMDcyNGViZjFjYmQ4YzNiMWFmYjFkNWQ3NWZjNDVhLi43M2Q0OWQ5
YzVhOGNlNzY3MTQzOTYwZTNkYzFmMjcyYmZmNTRkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXZvaWQgbW9yZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
dm9pZCBtb3JlIFN0cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVu
dHMgYnkgdXNpbmcgQVNDSUlMaXRlcmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRl
RGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29t
bWFuZCgpIG92ZXJsb2FkcyB0aGF0IHRha2UgaW4gYSAKKyAgICAgICAgU3RyaW5nIHRvIG1ha2Ug
c3VyZSB0aGV5IGFyZSBub3QgY2FsbGVkIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6Omluc2VydERp
c3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y29sdW1uc0ZvclRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1
bW5JblRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QpOgorICAgICAgICAoV2ViS2l0
Ojpqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVu
dElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmROb3RWZXJ5UHJldmFsZW50UmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3Jh
bmRmYXRoZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGljU3RhdGVt
ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjptaWdyYXRlSXRl
bVRhYmxlSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNyZWF0ZVRhYmxlc0lmTmVl
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0lj
b25VUkxNYXApOgorCiAyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgTW9kZXJuaXplIC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNyZWF0aW9u
IGFuZCBwcmVwYXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBhOTRiYTI5NDdmMDM3MDRl
ZjY3NmNmZjEzYjIxNWEzOWJjMjg3NTM2Li42MWMwZjhlZGQ0MTJmYWFmOTg1M2I4MTUyYWEyMmZi
Mzc4MmY0MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9y
ZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBtb3JlIFN0
cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVudHMgYnkgdXNpbmcg
QVNDSUlMaXRlcmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRlRGF0YWJhc2U6OnBy
ZXBhcmVTdGF0ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZCgpIG92ZXJs
b2FkcyB0aGF0IHRha2UgaW4gYSAKKyAgICAgICAgU3RyaW5nIHRvIG1ha2Ugc3VyZSB0aGV5IGFy
ZSBub3QgY2FsbGVkIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxlSWZO
ZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisKIDIwMjEtMDUt
MTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb2Rlcm5pemUg
LyBPcHRpbWl6ZSBTUUxpdGVTdGF0ZW1lbnQgY3JlYXRpb24gYW5kIHByZXBhcmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDlhYWEwZmQ1M2RlY2QxYWQ2Zjg1NTAw
NmRjNzNhNTc1NGY3NzIzZjkuLmExYWE5MmMyOTYyMWM3Y2U2MTc3ZjZhNTdiNTM1NThkZDQ4OGQ5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMzEsMTYgKzEzMSwx
NCBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHYzUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lKQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVBVEUgVEFCTEUgIiwgdGFi
bGVOYW1lLCAiIChvYmplY3RTdG9yZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdmFs
dWUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgcmVjb3JkSUQgSU5URUdFUiBQUklNQVJZIEtF
WSkiKTsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgdjNSZWNvcmRzVGFibGVTY2hlbWEoKQor
c3RhdGljIEFTQ0lJTGl0ZXJhbCB2M1JlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2M1JlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2
M1JlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKLSAgICByZXR1cm4gdjNSZWNvcmRzVGFi
bGVTY2hlbWFTdHJpbmc7CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgUmVjb3JkcyAob2JqZWN0
U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExB
VEUgSURCS0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIHJlY29yZElEIElOVEVHRVIgUFJJTUFSWSBLRVkpIl9zOwogfQogCi1zdGF0
aWMgY29uc3QgU3RyaW5nJiB2M1JlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIHYzUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYzUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5n
KHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29yZHNcIiIpKTsKLSAgICByZXR1cm4gdjNSZWNv
cmRzVGFibGVTY2hlbWFTdHJpbmc7CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJSZWNvcmRz
XCIgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBrZXkg
VEVYVCBDT0xMQVRFIElEQktFWSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB2YWx1ZSBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMLCByZWNvcmRJRCBJTlRFR0VSIFBSSU1BUlkgS0VZKSJfczsK
IH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyB2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0
IFN0cmluZyYgdGFibGVOYW1lKQpAQCAtMTgyLDUwICsxODAsMzQgQEAgc3RhdGljIGNvbnN0IFN0
cmluZyB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQog
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChpbmRl
eElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwpIik7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcgdjNJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHYzSW5kZXhSZWNvcmRzVGFi
bGVTY2hlbWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gaW5k
ZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcgPSB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJ
bmRleFJlY29yZHMiKTsKLSAgICByZXR1cm4gaW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgSW5kZXhSZWNvcmRzIChpbmRleElEIElOVEVHRVIg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIHYzSW5kZXhSZWNvcmRzVGFibGVT
Y2hlbWFBbHRlcm5hdGUoKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCB2M0luZGV4UmVjb3Jkc1RhYmxl
U2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJp
bmc+IGluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nID0gdjNJbmRleFJlY29yZHNUYWJsZVNj
aGVtYSgiXCJJbmRleFJlY29yZHNcIiIpOwotICAgIHJldHVybiBpbmRleFJlY29yZHNUYWJsZVNj
aGVtYVN0cmluZzsKKyAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIkluZGV4UmVjb3Jkc1wiIChp
bmRleElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJ
TlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZ
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIGJsb2JS
ZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCitzdGF0aWMgQVNDSUlM
aXRlcmFsIGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKQogewotICAgIHJldHVybiBtYWtlU3RyaW5n
KCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChvYmplY3RTdG9yZVJvdyBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKSIpOworICAgIHJldHVybiAiQ1JFQVRFIFRBQkxFIEJsb2JSZWNvcmRzIChvYmplY3RT
dG9yZVJvdyBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYg
YmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JSZWNvcmRz
VGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcoYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgi
QmxvYlJlY29yZHMiKSk7Ci0gICAgcmV0dXJuIGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJCbG9iUmVjb3Jkc1wiIChvYmplY3RTdG9yZVJv
dyBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgYmxvYlJl
Y29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JGaWxl
c1RhYmxlU2NoZW1hKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBibG9i
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoIlwiQmxvYlJl
Y29yZHNcIiIpKTsKLSAgICByZXR1cm4gYmxvYlJlY29yZHNUYWJsZVNjaGVtYVN0cmluZzsKKyAg
ICByZXR1cm4gIkNSRUFURSBUQUJMRSBCbG9iRmlsZXMgKGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBmaWxlTmFtZSBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogfQog
Ci1zdGF0aWMgY29uc3QgU3RyaW5nIGJsb2JGaWxlc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBibG9iRmlsZXNUYWJsZVNjaGVtYUFsdGVy
bmF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNSRUFURSBUQUJMRSAiLCB0YWJsZU5h
bWUsICIgKGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBD
T05GTElDVCBGQUlMLCBmaWxlTmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5J
UVVFIE9OIENPTkZMSUNUIEZBSUwpIik7Ci19Ci0KLXN0YXRpYyBjb25zdCBTdHJpbmcmIGJsb2JG
aWxlc1RhYmxlU2NoZW1hKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBi
bG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZyhibG9iRmlsZXNUYWJsZVNjaGVtYSgiQmxvYkZpbGVz
IikpOwotICAgIHJldHVybiBibG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZzsKLX0KLQotc3RhdGlj
IGNvbnN0IFN0cmluZyYgYmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJsb2JGaWxlc1RhYmxlU2NoZW1hU3RyaW5nKGJs
b2JGaWxlc1RhYmxlU2NoZW1hKCJcIkJsb2JGaWxlc1wiIikpOwotICAgIHJldHVybiBibG9iRmls
ZXNUYWJsZVNjaGVtYVN0cmluZzsKKyAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIkJsb2JGaWxl
c1wiIChibG9iVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09O
RkxJQ1QgRkFJTCwgZmlsZU5hbWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFV
RSBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAogc3RhdGljIFN0cmluZyBjcmVhdGVWMU9iamVj
dFN0b3JlSW5mb1NjaGVtYShBU0NJSUxpdGVyYWwgdGFibGVOYW1lKQpAQCAtMzA1LDIyICsyODcs
MjIgQEAgc3RhdGljIGJvb2wgY3JlYXRlT3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3Nhcnko
U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKICAg
ICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgdGFibGUgd2l0aCB0aGUgY29ycmVjdCBzY2hlbWEgYW5k
IG1pZ3JhdGUgYWxsIGV4aXN0aW5nIGNvbnRlbnQgb3Zlci4KLSAgICBpZiAoIWRhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCJfVGVtcF9SZWNvcmRzIikpKSB7Cisg
ICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZFNsb3codjNSZWNvcmRzVGFibGVTY2hlbWEo
Il9UZW1wX1JlY29yZHMiKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IHRlbXBvcmFyeSByZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRhdGFiYXNl
Lmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQg
SU5UTyBfVGVtcF9SZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXksIHZhbHVlKSBTRUxFQ1Qgb2Jq
ZWN0U3RvcmVJRCwgQ0FTVChrZXkgQVMgVEVYVCksIHZhbHVlIEZST00gUmVjb3JkcyIpKSB7Cisg
ICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfUmVjb3Jk
cyAob2JqZWN0U3RvcmVJRCwga2V5LCB2YWx1ZSkgU0VMRUNUIG9iamVjdFN0b3JlSUQsIENBU1Qo
a2V5IEFTIFRFWFQpLCB2YWx1ZSBGUk9NIFJlY29yZHMiX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3RpbmcgUmVjb3JkcyBjb250ZW50ICglaSkgLSAlcyIs
IGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KCJEUk9QIFRBQkxFIFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkRST1AgVEFCTEUgUmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgZHJvcCBleGlzdGluZyBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RF
cnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBf
VGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRzIikpIHsKKyAgICBpZiAoIWRhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRz
Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IFJl
Y29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQxMiw3ICsz
OTQsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFi
bGUoKQogCiAgICAgLy8gV2hldGhlciB0aGUgdXBkYXRlZCByZWNvcmRzIHRhYmxlIGFscmVhZHkg
ZXhpc3RlZCBvciBpZiBpdCB3YXMganVzdCBjcmVhdGVkIGFuZCB0aGUgZGF0YSBtaWdyYXRlZCBv
dmVyLAogICAgIC8vIG1ha2Ugc3VyZSB0aGUgdW5pcXVlbmVzcyBpbmRleCBleGlzdHMuCi0gICAg
aWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBO
T1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXkpOyIp
KSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVOSVFVRSBJ
TkRFWCBJRiBOT1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RTdG9yZUlE
LCBrZXkpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFJlY29y
ZHNJbmRleCBvbiBSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRl
REItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC00NzAsMjIgKzQ1MiwyMiBAQCBib29sIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSgpCiAgICAgdHJhbnNhY3Rp
b24uYmVnaW4oKTsKIAogICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSB0YWJsZSB3aXRoIHRoZSBj
b3JyZWN0IHNjaGVtYSBhbmQgbWlncmF0ZSBhbGwgZXhpc3RpbmcgY29udGVudCBvdmVyLgotICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNUYWJsZVNjaGVt
YSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRl
Q29tbWFuZFNsb3codjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRz
IikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgaW5k
ZXggcmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0
RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJU
IElOVE8gX1RlbXBfSW5kZXhSZWNvcmRzIFNFTEVDVCBJbmRleFJlY29yZHMuaW5kZXhJRCwgSW5k
ZXhSZWNvcmRzLm9iamVjdFN0b3JlSUQsIEluZGV4UmVjb3Jkcy5rZXksIEluZGV4UmVjb3Jkcy52
YWx1ZSwgUmVjb3Jkcy5yb3dpZCBGUk9NIEluZGV4UmVjb3JkcyBJTk5FUiBKT0lOIFJlY29yZHMg
T04gUmVjb3Jkcy5rZXkgPSBJbmRleFJlY29yZHMudmFsdWUgQU5EIFJlY29yZHMub2JqZWN0U3Rv
cmVJRCA9IEluZGV4UmVjb3Jkcy5vYmplY3RTdG9yZUlEIikpIHsKKyAgICBpZiAoIW1fc3FsaXRl
REItPmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9JbmRleFJlY29yZHMgU0VMRUNU
IEluZGV4UmVjb3Jkcy5pbmRleElELCBJbmRleFJlY29yZHMub2JqZWN0U3RvcmVJRCwgSW5kZXhS
ZWNvcmRzLmtleSwgSW5kZXhSZWNvcmRzLnZhbHVlLCBSZWNvcmRzLnJvd2lkIEZST00gSW5kZXhS
ZWNvcmRzIElOTkVSIEpPSU4gUmVjb3JkcyBPTiBSZWNvcmRzLmtleSA9IEluZGV4UmVjb3Jkcy52
YWx1ZSBBTkQgUmVjb3Jkcy5vYmplY3RTdG9yZUlEID0gSW5kZXhSZWNvcmRzLm9iamVjdFN0b3Jl
SUQiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3Rpbmcg
SW5kZXhSZWNvcmRzIGNvbnRlbnQgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCks
IG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgSW5k
ZXhSZWNvcmRzIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJEUk9Q
IFRBQkxFIEluZGV4UmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
ZHJvcCBleGlzdGluZyBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+
bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFM
VEVSIFRBQkxFIF9UZW1wX0luZGV4UmVjb3JkcyBSRU5BTUUgVE8gSW5kZXhSZWNvcmRzIikpIHsK
KyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9J
bmRleFJlY29yZHMgUkVOQU1FIFRPIEluZGV4UmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgcmVuYW1lIHRlbXBvcmFyeSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAt
ICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTUzOSw3ICs1MjEsNyBAQCBib29s
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJE
Uk9QIElOREVYIEluZGV4UmVjb3Jkc0luZGV4IikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4
ZWN1dGVDb21tYW5kKCJEUk9QIElOREVYIEluZGV4UmVjb3Jkc0luZGV4Il9zKSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBkcm9wIGluZGV4IEluZGV4UmVjb3Jkc0luZGV4IGluIGRh
dGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC01OTksNyAr
NTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAgICBBU1NFUlQobV9zcWxpdGVEQik7
CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJREJEYXRhYmFzZUluZm8gKGtleSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZh
bHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1fc3Fs
aXRlREItPmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSURCRGF0YWJhc2VJbmZvIChrZXkg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCB2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyJfcykpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIElEQkRhdGFiYXNlSW5mbyB0YWJsZSBpbiBkYXRh
YmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNjExLDEzICs1OTMsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNl
SW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVj
dXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgiSW5kZXhJbmZvIl9zKSkpIHsKKyAgICBp
ZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kU2xvdyhpbmRleEluZm9UYWJsZVNjaGVtYSgi
SW5kZXhJbmZvIl9zKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIElu
ZGV4SW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURC
KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBLZXlHZW5lcmF0b3JzIChvYmplY3RTdG9y
ZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSwgY3VycmVudEtleSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIp
KSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEtl
eUdlbmVyYXRvcnMgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBjdXJyZW50S2V5IElOVEVHRVIgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCk7Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBjcmVhdGUgS2V5R2VuZXJhdG9ycyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzAyLDIyICs2
ODQsMjIgQEAgT3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmwKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVjJPYmplY3RTdG9yZUluZm9T
Y2hlbWEoIl9UZW1wX09iamVjdFN0b3JlSW5mbyJfcykpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURC
LT5leGVjdXRlQ29tbWFuZFNsb3coY3JlYXRlVjJPYmplY3RTdG9yZUluZm9TY2hlbWEoIl9UZW1w
X09iamVjdFN0b3JlSW5mbyJfcykpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSB0ZW1wb3JhcnkgT2JqZWN0U3RvcmVJbmZvIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAl
cyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfT2JqZWN0U3RvcmVJbmZvIChp
ZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYykgU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jIEZST00gT2JqZWN0U3RvcmVJbmZvIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1
dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9PYmplY3RTdG9yZUluZm8gKGlkLCBuYW1lLCBr
ZXlQYXRoLCBhdXRvSW5jKSBTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMgRlJPTSBP
YmplY3RTdG9yZUluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3Jh
dGUgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZvIGNvbnRlbnQgKCVpKSAtICVzIiwgbV9zcWxpdGVE
Qi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVD
b21tYW5kKCJEUk9QIFRBQkxFIE9iamVjdFN0b3JlSW5mbyIpKSB7CisgICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBPYmplY3RTdG9yZUluZm8iX3MpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRyb3AgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZv
IHRhYmxlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfT2Jq
ZWN0U3RvcmVJbmZvIFJFTkFNRSBUTyBPYmplY3RTdG9yZUluZm8iKSkgeworICAgIGlmICghbV9z
cWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX09iamVjdFN0b3JlSW5m
byBSRU5BTUUgVE8gT2JqZWN0U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IE9iamVjdFN0b3JlSW5mbyB0YWJsZSAoJWkpIC0gJXMi
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KQEAgLTczMyw3ICs3MTUsNyBAQCBi
b29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRh
dGUoY29uc3QgSGFzaE1hcDxzdGQ6OgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KGRhdGFiYXNlKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgaWYgKCFkYXRhYmFz
ZS5leGVjdXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhJbmZvIl9z
KSkpIHsKKyAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhpbmRleEluZm9UYWJs
ZVNjaGVtYSgiX1RlbXBfSW5kZXhJbmZvIl9zKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJFcnJv
ciBjcmVhdGluZyBfVGVtcF9JbmRleEluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
ZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTc3OCwxMiArNzYwLDEyIEBAIGJvb2wgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXhJbmZvVGFibGVGb3JJRFVwZGF0ZShjb25zdCBIYXNo
TWFwPHN0ZDo6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKCJEUk9QIFRBQkxFIEluZGV4SW5mbyIpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5leGVj
dXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBJbmRleEluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiRXJyb3IgZHJvcHBpbmcgZXhpc3RpbmcgSW5kZXhJbmZvIHRhYmxlICglaSkgLSAlcyIsIGRh
dGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJB
TFRFUiBUQUJMRSBfVGVtcF9JbmRleEluZm8gUkVOQU1FIFRPIEluZGV4SW5mbyIpKSB7CisgICAg
aWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfSW5kZXhJbmZv
IFJFTkFNRSBUTyBJbmRleEluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgcmVu
YW1pbmcgX1RlbXBfSW5kZXhJbmZvIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC03OTgsNyArNzgwLDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKGNvbnN0IEhhc2hNYXA8c3QKICAgICBTUUxp
dGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihkYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVn
aW4oKTsKIAotICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNU
YWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZFNsb3codjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhS
ZWNvcmRzIikpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgY3JlYXRpbmcgX1RlbXBfSW5k
ZXhSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC04NDIsMTIgKzgyNCwxMiBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWln
cmF0ZUluZGV4UmVjb3Jkc1RhYmxlRm9ySURVcGRhdGUoY29uc3QgSGFzaE1hcDxzdAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJM
RSBJbmRleFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkRS
T1AgVEFCTEUgSW5kZXhSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGRy
b3BwaW5nIGV4aXN0aW5nIEluZGV4UmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBkYXRhYmFzZS5s
YXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFC
TEUgX1RlbXBfSW5kZXhSZWNvcmRzIFJFTkFNRSBUTyBJbmRleFJlY29yZHMiKSkgeworICAgIGlm
ICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX0luZGV4UmVjb3Jk
cyBSRU5BTUUgVE8gSW5kZXhSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkVycm9y
IHJlbmFtaW5nIHRlbXBvcmFyeSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJh
c2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggZjI4OTA4Y2E1MTVlN2I5
YjJmZmY4NDg4YzAwNmQyYjBlODFiYmY1Ny4uMDU2N2VhOWIzNmMyYzY0MTg0MmY3Mzc2OWNkNmMy
MzA4YjdmOGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
c3FsKQogICAgIEFTU0VSVCghbV9jdXJyZW50VXBwZXJLZXkuaXNOdWxsKCkpOwogICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpKTsKIAotICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5wcmVw
YXJlSGVhcFN0YXRlbWVudChzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5wcmVwYXJlSGVhcFN0YXRlbWVudFNs
b3coc3FsKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAocHJlcGFyZS9pZCkgLSAnJXMnIiwgbV90cmFu
c2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIFNRTGl0ZUlE
QkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKIAog
ICAgIGF1dG8mIGRhdGFiYXNlID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+
ZGF0YWJhc2UoKTsKICAgICBpZiAoIW1fcHJlSW5kZXhTdGF0ZW1lbnQpIHsKLSAgICAgICAgYXV0
byBwcmVJbmRleFN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50KGJ1aWxk
UHJlSW5kZXhTdGF0ZW1lbnQoaXNEaXJlY3Rpb25OZXh0KCkpKTsKKyAgICAgICAgYXV0byBwcmVJ
bmRleFN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhidWlsZFBy
ZUluZGV4U3RhdGVtZW50KGlzRGlyZWN0aW9uTmV4dCgpKSk7CiAgICAgICAgIGlmICghcHJlSW5k
ZXhTdGF0ZW1lbnQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHByZXBhcmUg
cHJlIHN0YXRlbWVudCAtICclcyciLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCmluZGV4IGU3NGUyOGY1YjllNWY3OWZjNWQ1Y2QwY2U3NjZjYTBkZGYx
YmY0NzguLjY2NjQzM2I5ODczZWU4MjUzM2U3MmY0NjNlZmI2NTU5NTBmZGNiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRFcnJvck1lc3NhZ2UoY29uc3QgY2hhciog
bWVzc2FnZSwgaW50IHNxbGl0ZUVycm9yQ29kZSwgY29uc3QKIAogc3RhdGljIGJvb2wgc2V0VGV4
dFZhbHVlSW5EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVwYXJl
U3RhdGVtZW50KHF1ZXJ5KTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBhcmVTdGF0ZW1l
bnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVz
KSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0YXRpYyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0
YWJhc2UmIGRiLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zCiAKIHN0YXRpYyBib29sIHJldHJp
ZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0g
ZGIucHJlcGFyZVN0YXRlbWVudChxdWVyeSk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVw
YXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmluZyBzdGF0ZW1lbnQgdG8gcmVhZCB0ZXh0IHJl
c3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCBzdGF0ZW1lbnQuZXJyb3IoKSwgcXVlcnkuYXNjaWko
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzAsNyArMzcwLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxk
U2V0VmVyc2lvbkluTmV3RGF0YWIKICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50
YWJsZUV4aXN0cyh0YWJsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgbV9uZXcgPSB0cnVlOwog
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJD
UkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRh
YmFzZS5leGVjdXRlQ29tbWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAo
a2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUg
dG8gb3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0
ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDc1OTVm
OTA2YjA4ZWQ1ZDQ5NDM2M2M1MTlmZDc2MjA4ZGFmZjdhZGYuLmY2ODRmM2ExYTEyNTJmYzQ1M2Qz
YTY4NjU5MGU0NWVmNWE5MWM2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEyNywxNCArMTI3LDE0IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlv
bkFjdGlvbiBjcmVhdGVBY3Rpb24pCiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hl
Y2tzKCk7CiAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiKSkgewot
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmln
aW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdF
UiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklR
VUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKTsiX3MpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUKICAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNlcyIp
KSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IERhdGFiYXNlcyAoZ3VpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9yaWdp
biBURVhULCBuYW1lIFRFWFQsIGRpc3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5URUdF
UiwgcGF0aCBURVhUKTsiKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkNSRUFURSBUQUJMRSBEYXRhYmFzZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRP
SU5DUkVNRU5ULCBvcmlnaW4gVEVYVCwgbmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3Rp
bWF0ZWRTaXplIElOVEVHRVIsIHBhdGggVEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IGFuZCBoZXJlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0
YWJhc2VzIHRhYmxlIik7CiAgICAgICAgIH0KQEAgLTEyNjcsMTUgKzEyNjcsMTUgQEAgYm9vbCBE
YXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIEVYQ0xVU0lWRSBUUkFOU0FDVElPTjsiKSkKKyAgICBp
ZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBFWENMVVNJVkUgVFJBTlNBQ1RJT047
Il9zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2Ug
aG9sZCB0aGUgZXhjbHVzaXZlIGxvY2sgdG8gdGhpcyBmaWxlLgogICAgIC8vIENoZWNrIHRoYXQg
dGhlIGRhdGFiYXNlIGRvZXNuJ3QgY29udGFpbiBhbnkgdGFibGVzLgotICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0
eXBlPSd0YWJsZSc7IikpCisgICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiU0VMRUNU
IG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJzsiX3MpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIFRS
QU5TQUNUSU9OOyIpOworICAgIGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDT01NSVQgVFJBTlNB
Q1RJT047Il9zKTsKIAogICAgIGRhdGFiYXNlLmNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCA5YjE5MGNh
YTk2M2U1YTFhNzUyYWQ5ZWYyNDYwNTFjODQ2MmVhMzE0Li4xNDc5OGQ5NzU0ZDJiOGY5NjNhZjAx
YjU2MzZiMDhmZDI3YTM1NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBTUUxT
dGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRiKQogCiAgICAgU1FMaXRlRGF0YWJhc2UmIGRh
dGFiYXNlID0gZGIuc3FsaXRlRGF0YWJhc2UoKTsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudChtX3N0YXRlbWVudCk7CisgICAgYXV0byBzdGF0ZW1lbnQg
PSBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtX3N0YXRlbWVudCk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJVbmFibGUgdG8gdmVyaWZ5IGNv
cnJlY3RuZXNzIG9mIHN0YXRlbWVudCAlcyAtIGVycm9yICVpICglcykiLCBtX3N0YXRlbWVudC5h
c2NpaSgpLmRhdGEoKSwgc3RhdGVtZW50LmVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgaWYgKHN0YXRlbWVudC5lcnJvcigpID09IFNRTElURV9JTlRFUlJVUFQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAppbmRleCAwOTc0ODg5MmQ2YWQ3YjA4M2M2YTk0YTQyZjYyNjkzZWNi
YjFiMTc1Li4yYjBhNjUzNmY5NGUzNDEzZTM1MzYyYmQzNGZmYjE1MmU3NjU4MTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMyLDE1ICs1MzMsMTQgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIG8KICAgICByZXR1cm4gZXhlY3V0ZVN0YXRlbWVudCh1cGRhdGVTdGF0ZW1l
bnQudmFsdWUoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmV4ZWN1dGVT
UUxDb21tYW5kKGNvbnN0IFN0cmluZyYgc3FsKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6ZXhlY3V0ZVNRTENvbW1hbmQoQVNDSUlMaXRlcmFsIHNxbCkKIHsKICAgICBBU1NFUlQoU1FM
aXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgQVNT
RVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwogICAgIAogICAgIGJvb2wgcmVzdWx0ID0gbV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZChzcWwpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBMT0df
RVJST1IoIkFwcGxpY2F0aW9uIENhY2hlIFN0b3JhZ2U6IGZhaWxlZCB0byBleGVjdXRlIHN0YXRl
bWVudCBcIiVzXCIgZXJyb3IgXCIlc1wiIiwgCi0gICAgICAgICAgICAgICAgICBzcWwudXRmOCgp
LmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19FUlJPUigi
QXBwbGljYXRpb24gQ2FjaGUgU3RvcmFnZTogZmFpbGVkIHRvIGV4ZWN1dGUgc3RhdGVtZW50IFwi
JXNcIiBlcnJvciBcIiVzXCIiLCBzcWwuY2hhcmFjdGVycygpLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01NjcsMTEgKzU2Nyw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHNldERhdGFiYXNlVmVyc2lvbihtX2RhdGFiYXNlKTsKICAgICBzZXRE
YXRhYmFzZVZlcnNpb24uYmVnaW4oKTsKIAotICAgIGNoYXIgdXNlclZlcnNpb25TUUxbMzJdOwot
ICAgIGludCB1bnVzZWROdW1CeXRlcyA9IHNucHJpbnRmKHVzZXJWZXJzaW9uU1FMLCBzaXplb2Yo
dXNlclZlcnNpb25TUUwpLCAiUFJBR01BIHVzZXJfdmVyc2lvbj0lZCIsIHNjaGVtYVZlcnNpb24p
OwotICAgIEFTU0VSVF9VTlVTRUQodW51c2VkTnVtQnl0ZXMsIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKHVzZXJWZXJzaW9uU1FMKSkgPj0gdW51c2VkTnVtQnl0ZXMpOwotCi0gICAgYXV0byBzdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQodXNlclZlcnNpb25TUUwpOworICAg
IGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3Ry
aW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSUiLCBzY2hlbWFWZXJzaW9uKSk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTYwNCwxOCArNjAwLDE4IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9l
c05vdEV4aXN0KQogICAgIAogICAgIC8vIENyZWF0ZSB0YWJsZXMKICAgICBleGVjdXRlU1FMQ29t
bWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVHcm91cHMgKGlkIElOVEVHRVIg
UFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgIgotICAgICAgICAgICAgICAgICAgICAgICJtYW5p
ZmVzdEhvc3RIYXNoIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbWFuaWZlc3RV
UkwgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbmV3ZXN0Q2FjaGUgSU5URUdFUiwgb3Jp
Z2luIFRFWFQpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNo
ZUdyb3VwIElOVEVHRVIsIHNpemUgSU5URUdFUikiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzICh3aWxkY2FyZCBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3RIb3N0SGFzaCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG1hbmlmZXN0VVJMIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIEZBSUwsIG5ld2VzdENhY2hlIElOVEVHRVIsIG9yaWdpbiBURVhUKSJfcyk7Cisg
ICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlcyAo
aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNoZUdyb3VwIElOVEVHRVIs
IHNpemUgSU5URUdFUikiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUg
SUYgTk9UIEVYSVNUUyBDYWNoZVdoaXRlbGlzdFVSTHMgKHVybCBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3Mp
OworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNo
ZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNhcmQgSU5URUdFUiBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9z
KTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgRmFs
bGJhY2tVUkxzIChuYW1lc3BhY2UgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBmYWxs
YmFja1VSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKLSAgICAgICAgICAgICAg
ICAgICAgICAiY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOwotICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZUVudHJp
ZXMgKGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdHlwZSBJTlRFR0VS
LCByZXNvdXJjZSBJTlRFR0VSIE5PVCBOVUxMKSIpOworICAgICAgICAgICAgICAgICAgICAgICJj
YWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zKTsKKyAgICBleGVjdXRl
U1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRyaWVzIChjYWNo
ZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHR5cGUgSU5URUdFUiwgcmVzb3Vy
Y2UgSU5URUdFUiBOT1QgTlVMTCkiX3MpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZVJlc291cmNlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtF
WSBBVVRPSU5DUkVNRU5ULCB1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgInN0YXR1c0NvZGUgSU5URUdFUiBOT1QgTlVMTCwgcmVzcG9u
c2VVUkwgVEVYVCBOT1QgTlVMTCwgbWltZVR5cGUgVEVYVCwgdGV4dEVuY29kaW5nTmFtZSBURVhU
LCBoZWFkZXJzIFRFWFQsIGRhdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIp
OwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNo
ZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBkYXRh
IEJMT0IsIHBhdGggVEVYVCkiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IElGIE5PVCBFWElTVFMgRGVsZXRlZENhY2hlUmVzb3VyY2VzIChpZCBJTlRFR0VSIFBSSU1BUlkg
S0VZIEFVVE9JTkNSRU1FTlQsIHBhdGggVEVYVCkiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIElHTk9SRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
KSIpOworICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXNDb2RlIElOVEVHRVIgTk9UIE5VTEws
IHJlc3BvbnNlVVJMIFRFWFQgTk9UIE5VTEwsIG1pbWVUeXBlIFRFWFQsIHRleHRFbmNvZGluZ05h
bWUgVEVYVCwgaGVhZGVycyBURVhULCBkYXRhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVY
SVNUUyBDYWNoZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVN
RU5ULCBkYXRhIEJMT0IsIHBhdGggVEVYVCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJD
UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBEZWxldGVkQ2FjaGVSZXNvdXJjZXMgKGlkIElOVEVH
RVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgcGF0aCBURVhUKSJfcyk7CisgICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIE9yaWdpbnMgKG9yaWdpbiBU
RVhUIFVOSVFVRSBPTiBDT05GTElDVCBJR05PUkUsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCkiX3MpOwogCiAgICAgLy8gV2hlbiBhIGNhY2hlIGlzIGRlbGV0ZWQsIGFs
bCBpdHMgZW50cmllcyBhbmQgaXRzIGFsbG93bGlzdCBzaG91bGQgYmUgZGVsZXRlZC4KICAgICBl
eGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRSSUdHRVIgSUYgTk9UIEVYSVNUUyBDYWNoZURlbGV0
ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlcyIKQEAgLTYyNCwxOSArNjIwLDE5IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIENhY2hlV2hpdGVsaXN0
VVJMcyBXSEVSRSBjYWNoZSA9IE9MRC5pZDsiCiAgICAgICAgICAgICAgICAgICAgICAgIiAgREVM
RVRFIEZST00gQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgV0hFUkUgY2FjaGUgPSBPTEQu
aWQ7IgogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIEZhbGxiYWNrVVJMcyBX
SEVSRSBjYWNoZSA9IE9MRC5pZDsiCi0gICAgICAgICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAiIEVORCJfcyk7CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgZW50
cnkgaXMgZGVsZXRlZCwgaXRzIHJlc291cmNlIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQuCiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUUklHR0VSIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRy
eURlbGV0ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlRW50cmllcyIKICAgICAgICAgICAgICAgICAg
ICAgICAiIEZPUiBFQUNIIFJPVyBCRUdJTiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxF
VEUgRlJPTSBDYWNoZVJlc291cmNlcyBXSEVSRSBpZCA9IE9MRC5yZXNvdXJjZTsiCi0gICAgICAg
ICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAiIEVORCJfcyk7
CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgcmVzb3VyY2UgaXMgZGVsZXRlZCwgaXRzIGRhdGEgYmxv
YiBzaG91bGQgYWxzbyBiZSBkZWxldGVkLgogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VFJJR0dFUiBJRiBOT1QgRVhJU1RTIENhY2hlUmVzb3VyY2VEZWxldGVkIEFGVEVSIERFTEVURSBP
TiBDYWNoZVJlc291cmNlcyIKICAgICAgICAgICAgICAgICAgICAgICAiIEZPUiBFQUNIIFJPVyBC
RUdJTiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBDYWNoZVJlc291cmNl
RGF0YSBXSEVSRSBpZCA9IE9MRC5kYXRhOyIKLSAgICAgICAgICAgICAgICAgICAgICAiIEVORCIp
OworICAgICAgICAgICAgICAgICAgICAgICIgRU5EIl9zKTsKICAgICAKICAgICAvLyBXaGVuIGEg
Y2FjaGUgcmVzb3VyY2UgaXMgZGVsZXRlZCwgaWYgaXQgY29udGFpbnMgYSBub24tZW1wdHkgcGF0
aCwgdGhhdCBwYXRoIHNob3VsZAogICAgIC8vIGJlIGFkZGVkIHRvIHRoZSBEZWxldGVkQ2FjaGVS
ZXNvdXJjZXMgdGFibGUgc28gdGhlIGZsYXQgZmlsZSBhdCB0aGF0IHBhdGggY2FuCkBAIC02NDUs
NyArNjQxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKGJv
b2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgIiBGT1IgRUFD
SCBST1ciCiAgICAgICAgICAgICAgICAgICAgICAgIiBXSEVOIE9MRC5wYXRoIE5PVCBOVUxMIEJF
R0lOIgogICAgICAgICAgICAgICAgICAgICAgICIgIElOU0VSVCBJTlRPIERlbGV0ZWRDYWNoZVJl
c291cmNlcyAocGF0aCkgdmFsdWVzIChPTEQucGF0aCk7IgotICAgICAgICAgICAgICAgICAgICAg
ICIgRU5EIik7CisgICAgICAgICAgICAgICAgICAgICAgIiBFTkQiX3MpOwogfQogCiBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYg
c3RhdGVtZW50KQpAQCAtMTI1Niw5ICsxMjUyLDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZW1wdHkoKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gQ2xlYXIgY2FjaGUg
Z3JvdXBzLCBjYWNoZXMsIGNhY2hlIHJlc291cmNlcywgYW5kIG9yaWdpbnMuCi0gICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENhY2hlR3JvdXBzIik7Ci0gICAgZXhlY3V0ZVNRTENv
bW1hbmQoIkRFTEVURSBGUk9NIENhY2hlcyIpOwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJERUxF
VEUgRlJPTSBPcmlnaW5zIik7CisgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENh
Y2hlR3JvdXBzIl9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gQ2FjaGVz
Il9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gT3JpZ2lucyJfcyk7CiAg
ICAgCiAgICAgLy8gQ2xlYXIgdGhlIHN0b3JhZ2UgSURzIGZvciB0aGUgY2FjaGVzIGluIG1lbW9y
eS4KICAgICAvLyBUaGUgY2FjaGVzIHdpbGwgc3RpbGwgd29yaywgYnV0IGNhY2hlZCByZXNvdXJj
ZXMgd2lsbCBub3QgYmUgc2F2ZWQgdG8gZGlzayAKQEAgLTE0MzksNyArMTQzNSw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNoZWNrRm9yRGVsZXRlZFJlc291cmNlcygpCiAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgIH0gd2hpbGUgKHNlbGVj
dFBhdGhzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVyk7CiAgICAgCi0gICAgZXhlY3V0ZVNRTENvbW1h
bmQoIkRFTEVURSBGUk9NIERlbGV0ZWRDYWNoZVJlc291cmNlcyIpOworICAgIGV4ZWN1dGVTUUxD
b21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiX3MpOwogfQogICAgIAog
bG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFTaXplKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgKaW5kZXggMDMzMDJlN2IwODRhMjAyYmFmMWUzYmNiNTBjZWM5ZDJkMDVlNzEz
ZC4uNmJhMGE5OTdiZWIyYTdiNDM1M2FlNTViNDI0YzQ4ODJkZjQ3ZWFlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbkRhdGFiYXNl
KGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIAogICAgIGJvb2wgZXhlY3V0ZVN0YXRl
bWVudChTUUxpdGVTdGF0ZW1lbnQmKTsKLSAgICBib29sIGV4ZWN1dGVTUUxDb21tYW5kKGNvbnN0
IFN0cmluZyYpOworICAgIGJvb2wgZXhlY3V0ZVNRTENvbW1hbmQoQVNDSUlMaXRlcmFsKTsKIAog
ICAgIHZvaWQgY2hlY2tGb3JNYXhTaXplUmVhY2hlZCgpOwogICAgIHZvaWQgY2hlY2tGb3JEZWxl
dGVkUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCAyYmYzOTEyYmQ0YjcxNzIyM2I0MGNjNDljMTY2
YzFjOTkwNTUyNTMxLi40MTY4MzJjZTU5MGNlNzZkMDMwOTA4YzJhNTA1Mjg5NzEzZjgxY2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgIiAg
aHR0cG9ubHkgSU5URUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIlwKICAgICAiICBzZWN1cmUgSU5U
RUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIlwKICAgICAiICBsYXN0dXBkYXRlZCBJTlRFR0VSIE5P
VCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsICJcCi0gICAgIiAgVU5JUVVFKG5hbWUs
IGRvbWFpbiwgcGF0aCkpOyIKKyAgICAiICBVTklRVUUobmFtZSwgZG9tYWluLCBwYXRoKSk7Il9z
CiAjZGVmaW5lIENSRUFURV9ET01BSU5fSU5ERVhfU1FMIFwKLSAgICAiQ1JFQVRFIElOREVYIElG
IE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyIKKyAgICAiQ1JFQVRF
IElOREVYIElGIE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyJfcwog
I2RlZmluZSBDUkVBVEVfUEFUSF9JTkRFWF9TUUwgXAotICAgICJDUkVBVEUgSU5ERVggSUYgTk9U
IEVYSVNUUyBwYXRoX2luZGV4IE9OIENvb2tpZShwYXRoKTsiCisgICAgIkNSRUFURSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIHBhdGhfaW5kZXggT04gQ29va2llKHBhdGgpOyJfcwogI2RlZmluZSBTRUxF
Q1RfQUxMX0RPTUFJTlNfU1FMIFwKLSAgICAiU0VMRUNUIERJU1RJTkNUIGRvbWFpbiBGUk9NIENv
b2tpZTsiCisgICAgIlNFTEVDVCBESVNUSU5DVCBkb21haW4gRlJPTSBDb29raWU7Il9zCiAjZGVm
aW5lIENIRUNLX0VYSVNUU19DT09LSUVfU1FMIFwKLSAgICAiU0VMRUNUIGRvbWFpbiBGUk9NIENv
b2tpZSBXSEVSRSAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSk7IgorICAgICJTRUxF
Q1QgZG9tYWluIEZST00gQ29va2llIFdIRVJFICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9C
ID8pKTsiX3MKICNkZWZpbmUgQ0hFQ0tfRVhJU1RTX0hUVFBPTkxZX0NPT0tJRV9TUUwgXAotICAg
ICJTRUxFQ1QgbmFtZSBGUk9NIENvb2tpZSBXSEVSRSAobmFtZSA9ID8pIEFORCAoZG9tYWluID0g
PykgQU5EIChwYXRoID0gPykgQU5EIChodHRwb25seSA9IDEpOyIKKyAgICAiU0VMRUNUIG5hbWUg
RlJPTSBDb29raWUgV0hFUkUgKG5hbWUgPSA/KSBBTkQgKGRvbWFpbiA9ID8pIEFORCAocGF0aCA9
ID8pIEFORCAoaHR0cG9ubHkgPSAxKTsiX3MKICNkZWZpbmUgU0VUX0NPT0tJRV9TUUwgXAogICAg
ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIENvb2tpZSAobmFtZSwgdmFsdWUsIGRvbWFpbiwgcGF0
aCwgZXhwaXJlcywgc2l6ZSwgc2Vzc2lvbiwgaHR0cG9ubHksIHNlY3VyZSkgIlwKLSAgICAiVkFM
VUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KTsiCisgICAgIlZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPywgPywgPyk7Il9zCiAjZGVmaW5lIERFTEVURV9DT09LSUVfQllfTkFNRV9ET01B
SU5fUEFUSF9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgbmFtZSA9ID8gQU5E
IGRvbWFpbiA9ID8gQU5EIHBhdGggPSA/OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJF
IG5hbWUgPSA/IEFORCBkb21haW4gPSA/IEFORCBwYXRoID0gPzsiX3MKICNkZWZpbmUgREVMRVRF
X0NPT0tJRV9CWV9OQU1FX0RPTUFJTl9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hF
UkUgbmFtZSA9ID8gQU5EIGRvbWFpbiA9ID87IgorICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hF
UkUgbmFtZSA9ID8gQU5EIGRvbWFpbiA9ID87Il9zCiAjZGVmaW5lIERFTEVURV9BTExfU0VTU0lP
Tl9DT09LSUVfU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAx
OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAxOyJfcwogI2RlZmlu
ZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2ll
IFdIRVJFIGRvbWFpbiA9ID8gOyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIGRvbWFp
biA9ID8gOyJfcwogI2RlZmluZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBf
T05MWV9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgKGRvbWFpbiA9ID8pIEFO
RCAoaHR0cG9ubHkgPSAwKTsiCisgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSAoZG9tYWlu
ID0gPykgQU5EIChodHRwb25seSA9IDApOyJfcwogI2RlZmluZSBERUxFVEVfQUxMX0NPT0tJRV9T
UUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWU7IgorICAgICJERUxFVEUgRlJPTSBDb29raWU7
Il9zCiAKIAogLy8gSWYgdGhlIGRhdGFiYXNlIHNjaGVtYSBpcyB1cGRhdGVkOgpAQCAtMTIzLDcg
KzEyMyw3IEBAIGJvb2wgQ29va2llSmFyREI6Om9wZW5EYXRhYmFzZSgpCiAgICAgaWYgKGV4aXN0
c0RhdGFiYXNlRmlsZSkgewogICAgICAgICBpZiAobV9kYXRhYmFzZS5vcGVuKG1fZGF0YWJhc2VQ
YXRoKSkgewogICAgICAgICAgICAgaWYgKGNoZWNrRGF0YWJhc2VWYWxpZGl0eSgpKQotICAgICAg
ICAgICAgICAgIGV4ZWN1dGVTcWwoREVMRVRFX0FMTF9TRVNTSU9OX0NPT0tJRV9TUUwpOworICAg
ICAgICAgICAgICAgIGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KERFTEVURV9BTExfU0VTU0lPTl9DT09LSUVfU1FMKSk7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLyBkZWxldGUgZGF0YWJhc2UgYW5kIHRyeSB0byByZS1jcmVhdGUg
YWdhaW4KICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvb2tpZSBkYXRhYmFzZSB2YWxpZGl0
eSBjaGVjayBmYWlsZWQsIGF0dGVtcHRpbmcgdG8gcmVjcmVhdGUgdGhlIGRhdGFiYXNlIik7CkBA
IC0xNTQsNyArMTU0LDkgQEAgYm9vbCBDb29raWVKYXJEQjo6b3BlbkRhdGFiYXNlKCkKICAgICB2
ZXJpZnlTY2hlbWFWZXJzaW9uKCk7CiAKICAgICBpZiAoIWV4aXN0c0RhdGFiYXNlRmlsZSB8fCAh
bV9kYXRhYmFzZS50YWJsZUV4aXN0cygiQ29va2llIikpIHsKLSAgICAgICAgYm9vbCBvayA9IGV4
ZWN1dGVTcWwoQ1JFQVRFX0NPT0tJRV9UQUJMRV9TUUwpICYmIGV4ZWN1dGVTcWwoQ1JFQVRFX0RP
TUFJTl9JTkRFWF9TUUwpICYmIGV4ZWN1dGVTcWwoQ1JFQVRFX1BBVEhfSU5ERVhfU1FMKTsKKyAg
ICAgICAgYm9vbCBvayA9IGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KENSRUFURV9DT09LSUVfVEFCTEVfU1FMKSkKKyAgICAgICAgICAgICYmIGV4ZWN1dGVT
UUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KENSRUFURV9ET01BSU5fSU5E
RVhfU1FMKSkKKyAgICAgICAgICAgICYmIGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KENSRUFURV9QQVRIX0lOREVYX1NRTCkpOwogCiAgICAgICAgIGlmICgh
b2spIHsKICAgICAgICAgICAgIC8vIGdpdmUgdXAgY3JlYXRlIGRhdGFiYXNlIGF0IHRoaXMgdGlt
ZSAoYWxsIGNvb2tpZXMgb24gcmVxdWVzdC9yZXNwb25zZSBhcmUgaWdub3JlZCkKQEAgLTIxMSw3
ICsyMTMsNyBAQCB2b2lkIENvb2tpZUphckRCOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKCkKICAgICB9
CiAKICAgICAvLyBVcGRhdGUgdmVyc2lvbgotICAgIGV4ZWN1dGVTcWwobWFrZVN0cmluZygiUFJB
R01BIHVzZXJfdmVyc2lvbj0iLCBzY2hlbWFWZXJzaW9uKSk7CisgICAgZXhlY3V0ZVNRTFN0YXRl
bWVudChtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlBSQUdNQSB1
c2VyX3ZlcnNpb249Iiwgc2NoZW1hVmVyc2lvbikpKTsKIH0KIAogdm9pZCBDb29raWVKYXJEQjo6
ZGVsZXRlQWxsVGFibGVzKCkKQEAgLTYyMSwxMCArNjIzLDEwIEBAIGJvb2wgQ29va2llSmFyREI6
OmRlbGV0ZUFsbENvb2tpZXMoKQogICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2Uu
aXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBleGVjdXRlU3Fs
KERFTEVURV9BTExfQ09PS0lFX1NRTCk7CisgICAgcmV0dXJuIGV4ZWN1dGVTUUxTdGF0ZW1lbnQo
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KERFTEVURV9BTExfQ09PS0lFX1NRTCkpOwogfQog
Ci12b2lkIENvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
c3FsKQordm9pZCBDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0YXRlbWVudChBU0NJSUxpdGVy
YWwgc3FsKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlSGVhcFN0
YXRlbWVudChzcWwpOwogICAgIEFTU0VSVChzdGF0ZW1lbnQpOwpAQCAtNjM5LDkgKzY0MSw4IEBA
IFNRTGl0ZVN0YXRlbWVudCYgQ29va2llSmFyREI6OnByZXBhcmVkU3RhdGVtZW50KGNvbnN0IFN0
cmluZyYgc3FsKQogICAgIHJldHVybiAqc3RhdGVtZW50OwogfQogCi1ib29sIENvb2tpZUphckRC
OjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsKQorYm9vbCBDb29raWVKYXJEQjo6ZXhlY3V0
ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4mJiBzdGF0ZW1lbnQp
CiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoc3Fs
KTsKICAgICBpZiAoIXN0YXRlbWVudCAmJiAhY2hlY2tTUUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVu
dC5lcnJvcigpKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlICVzIGVy
cm9yOiAlcyIsIHNxbC5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKaW5kZXggN2MwZWE0N2VjZTRmZjBkNDcyY2U1OTVj
OTFlYTFjZmE5MGIyNWNhNy4uNDg0OWM2NjdjMmExMjg4NDFmZmIwNTc2YTY2OTBjNGQ4ZmQ0NWUy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmgKQEAgLTkzLDkgKzkzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZlcmlmeVNjaGVt
YVZlcnNpb24oKTsKICAgICB2b2lkIGRlbGV0ZUFsbFRhYmxlcygpOwogCi0gICAgdm9pZCBjcmVh
dGVQcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY3JlYXRlUHJlcGFy
ZVN0YXRlbWVudChBU0NJSUxpdGVyYWwpOwogICAgIFNRTGl0ZVN0YXRlbWVudCYgcHJlcGFyZWRT
dGF0ZW1lbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBleGVjdXRlU3FsKGNvbnN0IFN0cmlu
ZyYpOworICAgIGJvb2wgZXhlY3V0ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxTUUxpdGVTdGF0ZW1l
bnQsIGludD4mJik7CiAKICAgICBib29sIGRlbGV0ZUNvb2tpZUludGVybmFsKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAg
Ym9vbCBoYXNIdHRwT25seUNvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggOTljMmU1MmFmNDJjZjEwYjdlMWM1MDI2NmM3
ZTZlZjA1NTVhOGE3Ny4uMjAyNmZhMjMxMWE3ZTFhYzcwZmU3NjNjOTgyMzQ4YTY4NjZkMzUxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBA
IC0yOTMsNyArMjkzLDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0TWF4aW11bVNpemUoaW50
NjRfdCBzaXplKQogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAg
IGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJl
U3RhdGVtZW50KG1ha2VTdHJpbmcoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCA9ICIsIG5ld01heFBh
Z2VDb3VudCkpOworICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudFNsb3cobWFr
ZVN0cmluZygiUFJBR01BIG1heF9wYWdlX2NvdW50ID0gIiwgbmV3TWF4UGFnZUNvdW50KSk7CiAg
ICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IG1heGltdW0gc2l6ZSBvZiBkYXRhYmFzZSB0
byAlbGxpIGJ5dGVzIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihzaXplKSk7CiAKQEAgLTM1MSw3
ICszNTEsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjp0b3RhbFNpemUoKQogCiB2b2lkIFNR
TGl0ZURhdGFiYXNlOjpzZXRTeW5jaHJvbm91cyhTeW5jaHJvbm91c1ByYWdtYSBzeW5jKQogewot
ICAgIGV4ZWN1dGVDb21tYW5kKG1ha2VTdHJpbmcoIlBSQUdNQSBzeW5jaHJvbm91cyA9ICIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzeW5jKSkpOworICAgIGV4ZWN1dGVDb21tYW5kU2xvdyhtYWtl
U3RyaW5nKCJQUkFHTUEgc3luY2hyb25vdXMgPSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3lu
YykpKTsKIH0KIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0QnVzeVRpbWVvdXQoaW50IG1zKQpA
QCAtMzcwLDkgKzM3MCw5IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEJ1c3lIYW5kbGVyKGlu
dCgqaGFuZGxlcikodm9pZCosIGludCkpCiAgICAgICAgIExPRyhTUUxEYXRhYmFzZSwgIkJ1c3kg
aGFuZGxlciBzZXQgb24gbm9uLW9wZW4gZGF0YWJhc2UiKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRh
YmFzZTo6ZXhlY3V0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBxdWVyeSkKK2Jvb2wgU1FMaXRlRGF0
YWJhc2U6OmV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KQogewotICAgIGF1
dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudChxdWVyeSk7CisgICAgYXV0byBzdGF0ZW1l
bnQgPSBwcmVwYXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgcmV0dXJuIHN0YXRlbWVudCAm
JiBzdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCk7CiB9CiAKQEAgLTM4MiwxOSArMzgyLDE3IEBA
IGJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCBxdWVyeSkK
ICAgICByZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKTsKIH0K
IAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6cmV0dXJuc0F0TGVhc3RPbmVSZXN1bHQoY29uc3QgU3Ry
aW5nJiBzcWwpCi17Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KHNxbCk7
Ci0gICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPnJldHVybnNBdExlYXN0T25lUmVz
dWx0KCk7Ci19Ci0KLWJvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3RzKGNvbnN0IFN0cmlu
ZyYgdGFibGVuYW1lKQorYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMoY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUpCiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgbmFt
ZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICd0YWJsZScgQU5EIG5hbWUgPSAnIiAr
IHRhYmxlbmFtZSArICInOyJfcyk7Ci0gICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQt
PnN0ZXAoKSA9PSBTUUxJVEVfUk9XOworICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRl
bWVudCgiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndGFibGUn
IEFORCBuYW1lID0gPzsiX3MpOworICAgIGlmICghc3RhdGVtZW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKHN0YXRlbWVudC0+YmluZFRleHQoMSwgdGFibGVOYW1lKSAhPSBTUUxJ
VEVfT0spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RhdGVtZW50LT5zdGVw
KCkgPT0gU1FMSVRFX1JPVzsKIH0KIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6Y2xlYXJBbGxUYWJs
ZXMoKQpAQCAtNDA5LDcgKzQwNyw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFi
bGVzKCkKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciB0YWJsZSA9IHRhYmxlcy5i
ZWdpbigpOyB0YWJsZSAhPSB0YWJsZXMuZW5kKCk7ICsrdGFibGUgKSB7CiAgICAgICAgIGlmICgq
dGFibGUgPT0gInNxbGl0ZV9zZXF1ZW5jZSIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKCFleGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSAiICsgKnRhYmxlKSkKKyAgICAgICAg
aWYgKCFleGVjdXRlQ29tbWFuZFNsb3coIkRST1AgVEFCTEUgIiArICp0YWJsZSkpCiAgICAgICAg
ICAgICBMT0coU1FMRGF0YWJhc2UsICJVbmFibGUgdG8gZHJvcCB0YWJsZSAlcyIsICgqdGFibGUp
LmFzY2lpKCkuZGF0YSgpKTsKICAgICB9CiB9CkBAIC02NzcsNyArNjc1LDcgQEAgc3RhdGljIEV4
cGVjdGVkPHNxbGl0ZTNfc3RtdCosIGludD4gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudChT
UUxpdGVEYXRhYmFzZSYKICAgICByZXR1cm4gc3RhdGVtZW50OwogfQogCi1FeHBlY3RlZDxTUUxp
dGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnQoY29uc3Qg
U3RyaW5nJiBxdWVyeVN0cmluZykKK0V4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxp
dGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeVN0cmlu
ZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCku
dXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRl
bWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5sZW5ndGgoKSk7CkBAIC02OTgsNyArNjk2
LDcgQEAgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVw
YXJlU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBxdWUKICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50
IHsgKnRoaXMsIHNxbFN0YXRlbWVudC52YWx1ZSgpIH07CiB9CiAKLUV4cGVjdGVkPFVuaXF1ZVJl
ZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRl
bWVudChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQorRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0
ZVN0YXRlbWVudD4sIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50U2xv
dyhjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQogewogICAgIENTdHJpbmcgcXVlcnkgPSBxdWVy
eVN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKS51dGY4KCk7CiAgICAgYXV0byBzcWxTdGF0ZW1lbnQg
PSBjb25zdHJ1Y3RBbmRQcmVwYXJlU3RhdGVtZW50KCp0aGlzLCBxdWVyeS5kYXRhKCksIHF1ZXJ5
Lmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmgKaW5kZXggYzA0NWZlNTkzZDc5OWQ1MjA4MGRkYjkzOTZjNDkzNDIxM2U3Y2Q4MC4uMDlmNTkx
ZTFhZTQ0NTVlN2VkOTNkNTBkOTU4N2NlNTk0NGM0YmUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTYyLDEwICs2Miw4IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGFzdENoYW5nZXNDb3VudCgpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZChjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7Ci0K
LSAgICBib29sIHJldHVybnNBdExlYXN0T25lUmVzdWx0KGNvbnN0IFN0cmluZyYpOwogICAgIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFibGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRhYmxlcygpOwpAQCAtNzQsOSArNzIsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgYm9vbCB0cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSBjb25zdCB7IHJl
dHVybiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzczsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhw
ZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IHByZXBhcmVTdGF0ZW1lbnQoY29uc3QgU3RyaW5n
JiBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBp
bnQ+IHByZXBhcmVTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkpOwogICAgIFdFQkNP
UkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50
KEFTQ0lJTGl0ZXJhbCBxdWVyeSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8VW5pcXVl
UmVmPFNRTGl0ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhlYXBTdGF0ZW1lbnQoY29uc3QgU3Ry
aW5nJiBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0
ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYg
cXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0
ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBxdWVyeSk7CiAK
ICAgICAvLyBBYm9ydHMgdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9uLiBUaGlzIGlzIHRo
cmVhZCBzYWZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5jcHAKaW5kZXggOTcxYmJhNTY3NDc0ZWI2ODk2Y2U1NjFjN2U2OTk3NjYwNGRkZTc4
Yy4uMDhlOWViNzNkYjI0YTA5MGE3YTA4MGMxYTgxNTY5MzE4ZTVhMjg1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCkBAIC02Miw5
ICs2Miw5IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKICAgICAgICAgU1FMaXRl
RGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwog
I2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWRPbmx5KQotICAgICAgICAgICAgbV9pblByb2dyZXNz
ID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4iKTsKKyAgICAgICAgICAgIG1faW5Qcm9ncmVz
cyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIl9zKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4gSU1NRURJQVRF
Iik7CisgICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJ
TiBJTU1FRElBVEUiX3MpOwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0g
bV9pblByb2dyZXNzOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmICghbV9p
blByb2dyZXNzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21t
aXQoKQogewogICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKICAgICAgICAgQVNTRVJUKG1fZGIubV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2luUHJvZ3Jlc3MgPSAhbV9kYi5leGVj
dXRlQ29tbWFuZCgiQ09NTUlUIik7CisgICAgICAgIG1faW5Qcm9ncmVzcyA9ICFtX2RiLmV4ZWN1
dGVDb21tYW5kKCJDT01NSVQiX3MpOwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzID0gbV9pblByb2dyZXNzOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlm
ICghbV9pblByb2dyZXNzKQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9u
Ojpyb2xsYmFjaygpCiAgICAgLy8gYSBub24temVyby90cnVlIHJlc3VsdCAoaHR0cDovL3d3dy5z
cWxpdGUub3JnL2xhbmdfdHJhbnNhY3Rpb24uaHRtbCkuCiAgICAgaWYgKG1faW5Qcm9ncmVzcykg
ewogICAgICAgICBBU1NFUlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAg
IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJPTExCQUNLIik7CisgICAgICAgIG1fZGIuZXhlY3V0ZUNv
bW1hbmQoIlJPTExCQUNLIl9zKTsKICAgICAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7CiAgICAg
ICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAKaW5kZXggYTE5MzlhYWQxYjBjODZmMDM1ZGEwMDkyNWZmZWNmMTc5ZDk2N2Ri
YS4uM2RjMzg3MjdlNWMzMDA0MzYyYWFhNzZkNzdkZGUyNTkyMDdhYjQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBAIC0yMDQs
NyArMjA0LDcgQEAgYm9vbCBTZWFyY2hQb3B1cE1lbnVEQjo6b3BlbkRhdGFiYXNlKCkKIAogICAg
IGJvb2wgZGF0YWJhc2VWYWxpZGl0eSA9IHRydWU7CiAgICAgaWYgKCFleGlzdHNEYXRhYmFzZUZp
bGUgfHwgIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIlNlYXJjaCIpKQotICAgICAgICBkYXRhYmFz
ZVZhbGlkaXR5ID0gZGF0YWJhc2VWYWxpZGl0eSAmJiAoZXhlY3V0ZVNpbXBsZVNxbChjcmVhdGVT
ZWFyY2hUYWJsZVNRTCkgPT0gU1FMSVRFX0RPTkUpOworICAgICAgICBkYXRhYmFzZVZhbGlkaXR5
ID0gZGF0YWJhc2VWYWxpZGl0eSAmJiAoZXhlY3V0ZVNRTFN0YXRlbWVudChtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoY3JlYXRlU2VhcmNoVGFibGVTUUwpKSA9PSBTUUxJVEVfRE9ORSk7CiAK
ICAgICBpZiAoIWRhdGFiYXNlVmFsaWRpdHkpIHsKICAgICAgICAgLy8gZ2l2ZSB1cCBjcmVhdGUg
ZGF0YWJhc2UgYXQgdGhpcyB0aW1lIChzZWFyY2ggdGVybXMgd2lsbCBub3QgYmUgc2F2ZWQpCkBA
IC0yNTQsNyArMjU0LDggQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6dmVyaWZ5U2NoZW1hVmVy
c2lvbigpCiAgICAgfQogCiAgICAgLy8gVXBkYXRlIHZlcnNpb24KLSAgICBleGVjdXRlU2ltcGxl
U3FsKG1ha2VTdHJpbmcoIlBSQUdNQSB1c2VyX3ZlcnNpb249Iiwgc2NoZW1hVmVyc2lvbikpOwor
CisgICAgZXhlY3V0ZVNRTFN0YXRlbWVudChtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93
KG1ha2VTdHJpbmcoIlBSQUdNQSB1c2VyX3ZlcnNpb249Iiwgc2NoZW1hVmVyc2lvbikpKTsKIH0K
IAogdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6Y2hlY2tTUUxpdGVSZXR1cm5Db2RlKGludCBhY3R1
YWwpCkBAIC0yNzEsMTYgKzI3MiwxNSBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudURCOjpjaGVja1NR
TGl0ZVJldHVybkNvZGUoaW50IGFjdHVhbCkKICAgICB9CiB9CiAKLWludCBTZWFyY2hQb3B1cE1l
bnVEQjo6ZXhlY3V0ZVNpbXBsZVNxbChjb25zdCBTdHJpbmcmIHNxbCwgYm9vbCBpZ25vcmVFcnJv
cikKK2ludCBTZWFyY2hQb3B1cE1lbnVEQjo6ZXhlY3V0ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxT
UUxpdGVTdGF0ZW1lbnQsIGludD4mJiBzdGF0ZW1lbnQpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoc3FsKTsKICAgICBpZiAoIXN0YXRlbWVudCkg
ewogICAgICAgICBjaGVja1NRTGl0ZVJldHVybkNvZGUoc3RhdGVtZW50LmVycm9yKCkpOwogICAg
ICAgICByZXR1cm4gc3RhdGVtZW50LmVycm9yKCk7CiAgICAgfQogCiAgICAgaW50IHJldCA9IHN0
YXRlbWVudC0+c3RlcCgpOwotICAgIGlmIChyZXQgIT0gU1FMSVRFX09LICYmIHJldCAhPSBTUUxJ
VEVfRE9ORSAmJiByZXQgIT0gU1FMSVRFX1JPVyAmJiAhaWdub3JlRXJyb3IpCisgICAgaWYgKHJl
dCAhPSBTUUxJVEVfT0sgJiYgcmV0ICE9IFNRTElURV9ET05FICYmIHJldCAhPSBTUUxJVEVfUk9X
KQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBleGVjdXRlICVzIGVycm9yOiAlcyIsIHNx
bC5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgcmV0dXJu
IHJldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dURCLmgKaW5kZXggZjkxM2Y0M2VhNWQwYTRmNzQzMWE3OTJiMTY4MzgwZDc5ZDcyYTYxNy4uMDkz
ZGE4MzA3ODRmNGViMjYzYWJmMzFjNjVjNGYzMTgzYThkYzEzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGNoZWNrRGF0YWJhc2VWYWxpZGl0eSgpOwogICAgIHZvaWQgZGVs
ZXRlQWxsRGF0YWJhc2VGaWxlcygpOwogICAgIHZvaWQgdmVyaWZ5U2NoZW1hVmVyc2lvbigpOwot
ICAgIGludCBleGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVy
cm9yID0gZmFsc2UpOworICAgIGludCBleGVjdXRlU1FMU3RhdGVtZW50KEV4cGVjdGVkPFNRTGl0
ZVN0YXRlbWVudCwgaW50PiYmKTsKICAgICB2b2lkIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShpbnQg
YWN0dWFsKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBjcmVhdGVQcmVw
YXJlZFN0YXRlbWVudChBU0NJSUxpdGVyYWwgc3FsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAppbmRleCBiMGM3MTYxYTgwNmE4NjhlYzRmZjQ0NzY1M2JiODUzZmMwOTY4NDViLi5lZjEx
YTczY2IwZWJjYTY5MjQxZjYwMjM0MTQyMzkwNTY2YWNkYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcApAQCAtNTIsOSArNTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNjsKIAotc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCitzdGF0aWMgQVND
SUlMaXRlcmFsIHJlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmco
IkNSRUFURSBUQUJMRSAiLCB0YWJsZU5hbWUsICIgKCIKKyAgICByZXR1cm4gIkNSRUFURSBUQUJM
RSBSZWNvcmRzICgiCiAgICAgICAgICJrZXkgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFIgogICAgICAgICAiLCBvcmlnaW4gVEVYVCBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCBzY29wZVVSTCBURVhUIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCkBAIC02NywyMSArNjcsMjUgQEAgc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgICAgICIs
IHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAg
Iiwgc2NyaXB0UmVzb3VyY2VNYXAgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAg
ICAgICAiLCBjZXJ0aWZpY2F0ZUluZm8gQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgot
ICAgICAgICAiKSIpOwotfQotCi1zdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJsZVNjaGVt
YSgpCi17Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2NoZW1hKHJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKLSAg
ICByZXR1cm4gc2NoZW1hOworICAgICAgICAiKSJfczsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNjaGVtYShyZWNvcmRz
VGFibGVTY2hlbWEoIlwiUmVjb3Jkc1wiIikpOwotICAgIHJldHVybiBzY2hlbWE7CisgICAgcmV0
dXJuICJDUkVBVEUgVEFCTEUgXCJSZWNvcmRzXCIgKCIKKyAgICAgICAgImtleSBURVhUIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UiCisgICAgICAg
ICIsIG9yaWdpbiBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIHNj
b3BlVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgdG9wT3Jp
Z2luIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgbGFzdFVwZGF0
ZUNoZWNrVGltZSBET1VCTEUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwg
dXBkYXRlVmlhQ2FjaGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAi
LCBzY3JpcHRVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCB3
b3JrZXJUeXBlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgY29u
dGVudFNlY3VyaXR5UG9saWN5IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAg
ICAgIiwgcmVmZXJyZXJQb2xpY3kgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAg
ICAgICAiLCBzY3JpcHRSZXNvdXJjZU1hcCBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwi
CisgICAgICAgICIsIGNlcnRpZmljYXRlSW5mbyBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCisgICAgICAgICIpIl9zOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBkYXRhYmFzZUZp
bGVuYW1lRnJvbVZlcnNpb24odWludDY0X3QgdmVyc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGE4YWVkNzMxNjUx
NTVlMGNmMWYyYmQzNjJiMTFlODlmOWIyZGUyOWMuLjgyODcxY2U0OGM4M2JmNTZmMjNjMjBhNGY0
YzIwOGNlMGY1NzFkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNDM2LDEzICs0MzYsMTkgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5hYmxlRm9yZWlnbktleXMoKQogCiBUYWJs
ZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVu
dFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogewotICAgIGF1
dG8gZ2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0
cmluZygiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25hbWU9JyIsIHRh
YmxlTmFtZSwgIicgQU5EIHR5cGUgPSAndGFibGUnIikpOworICAgIGF1dG8gZ2V0VGFibGVTdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxp
dGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAndGFibGUnIl9zKTsKICAgICBp
ZiAoIWdldFRhYmxlU3RhdGVtZW50KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNj
aGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBpZiAoZ2V0VGFibGVT
dGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQg
c3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKICAgICBpZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgZXJyb3IgZXhl
Y3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBzY2hlbWEsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDUxLDEzICs0NTcsMTkgQEAgVGFibGVB
bmRJbmRleFBhaXIgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRU
YWJsZUFuZEluZGV4UXVlcmkKIAogICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0gZ2V0VGFi
bGVTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCk7CiAKLSAgICBhdXRvIGdldEluZGV4U3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNFTEVDVCBzcWwg
RlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPSciLCB0YWJsZU5hbWUsICInIEFORCB0
eXBlID0gJ2luZGV4JyIpKTsKKyAgICBhdXRvIGdldEluZGV4U3RhdGVtZW50ID0gbV9kYXRhYmFz
ZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0
YmxfbmFtZT0/IEFORCB0eXBlID0gJ2luZGV4JyJfcyk7CiAgICAgaWYgKCFnZXRJbmRleFN0YXRl
bWVudCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVz
IFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhlIHRhYmxl
LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPmJpbmRUZXh0
KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJy
ZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQgc3RhdGVtZW50IHRvIGZldGNo
IGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIE9wdGlvbmFsPFN0
cmluZz4gaW5kZXg7CiAgICAgaWYgKGdldEluZGV4U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRF
X1JPVykgewogICAgICAgICBhdXRvIHJhd0luZGV4ID0gU3RyaW5nKGdldEluZGV4U3RhdGVtZW50
LT5nZXRDb2x1bW5UZXh0KDApKTsKQEAgLTUyMSwyNyArNTMzLDI3IEBAIGJvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBkYXRlZFNjaGVtYSgpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgU3RyaW5nIGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJs
ZVF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGUpCitzdGF0aWMgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVt
ZW50LCBpbnQ+IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChTUUxpdGVEYXRh
YmFzZSYgZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgdGFibGUpCiB7CiAgICAgaWYgKHRhYmxlID09
ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIklOU0VSVCBJTlRPIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YkZy
YW1lRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBHUk9VUCBCWSBzdWJGcmFtZURvbWFpbklELCB0b3BG
cmFtZURvbWFpbklEIik7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJGcmFt
ZURvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3ViRnJhbWVEb21haW5JRCwgdG9wRnJh
bWVEb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSU5TRVJUIElOVE8gU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwg
TUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvcEZyYW1lRG9t
YWluSUQiKTsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VS
VCBJTlRPIFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YnJlc291cmNl
RG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0
b3BGcmFtZURvbWFpbklEIl9zKTsKIAogICAgIGlmICh0YWJsZSA9PSAiU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyIpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyBT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBN
QVgobGFzdFVwZGF0ZWQpLCB0b0RvbWFpbklEIEZST00gX1N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8gR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCIpOworICAgICAg
ICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUbyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxhc3RV
cGRhdGVkKSwgdG9Eb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIEdS
T1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQiX3MpOwogCiAgICAgaWYgKHRh
YmxlID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQotICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVDVCB0
b0RvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCIpOwor
ICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVG9w
RnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVDVCB0b0RvbWFpbklELCBNQVgobGFzdFVwZGF0
ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQ
IEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFibGUgPT0gIlVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IikKLSAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoIklOU0VSVCBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNF
TEVDVCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJ
RCwgTUFYKHRpbWVPZkFkQ2xpY2spLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCBGUk9NIF9VbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBHUk9VUCBCWSBzb3VyY2VTaXRlRG9tYWlu
SUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIik7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBTRUxFQ1Qgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCwgc291cmNlSUQsIE1BWCh0aW1lT2ZBZENsaWNrKSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQg
RlJPTSBfVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgR1JPVVAgQlkgc291cmNl
U2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFi
bGUgPT0gIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpCi0gICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgU0VMRUNUIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNv
dXJjZUlELCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgTUFYKHRpbWVPZkFkQ2xp
Y2spLCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQs
IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gRlJPTSBfQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IEdST1VQIEJZIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25T
aXRlRG9tYWluSUQiKTsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQo
IklOU0VSVCBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qgc291
cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCBNQVgodGltZU9mQWRDbGljayksIGVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIF9BdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCJf
cyk7CiAKLSAgICByZXR1cm4gbWFrZVN0cmluZygiSU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VM
RUNUIERJU1RJTkNUICogRlJPTSBfIiwgdGFibGUpOworICAgIHJldHVybiBkYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyAiLCB0YWJsZSwgIiBTRUxF
Q1QgRElTVElOQ1QgKiBGUk9NIF8iLCB0YWJsZSkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3Nhcnko
KQpAQCAtNTUzLDggKzU2NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpCiAgICAgdHJhbnNhY3Rp
b24uYmVnaW4oKTsKIAogICAgIGZvciAoYXV0byYgdGFibGUgOiBleHBlY3RlZFRhYmxlQW5kSW5k
ZXhRdWVyaWVzKCkua2V5cygpKSB7Ci0gICAgICAgIGF1dG8gcXVlcnkgPSBtYWtlU3RyaW5nKCJB
TFRFUiBUQUJMRSAiLCB0YWJsZSwgIiBSRU5BTUUgVE8gXyIsIHRhYmxlKTsKLSAgICAgICAgYXV0
byBhbHRlclRhYmxlID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KHF1ZXJ5KTsKKyAgICAg
ICAgYXV0byBhbHRlclRhYmxlID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtl
U3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZSwgIiBSRU5BTUUgVE8gXyIsIHRhYmxlKSk7CiAg
ICAgICAgIGlmICghYWx0ZXJUYWJsZSB8fCBhbHRlclRhYmxlLT5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZO
ZWNlc3NhcnkgZmFpbGVkIHRvIHJlbmFtZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtNTY5LDE2ICs1ODAsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygp
LmtleXMoKSkgewotICAgICAgICBhdXRvIHF1ZXJ5ID0gaW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRh
YmxlUXVlcnkodGFibGUpOwotICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURhdGEgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQocXVlcnkpOworICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURh
dGEgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdGFi
bGUpOwogICAgICAgICBpZiAoIW1pZ3JhdGVUYWJsZURhdGEgfHwgbWlncmF0ZVRhYmxlRGF0YS0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0
ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBtaWdyYXRlIHNjaGVtYSwgZXJy
b3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byBkcm9wUXVlcnkgPSBtYWtlU3RyaW5nKCJEUk9QIFRBQkxFIF8i
LCB0YWJsZSk7Ci0gICAgICAgIGF1dG8gZHJvcFRhYmxlUXVlcnkgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoZHJvcFF1ZXJ5KTsKKyAgICAgICAgYXV0byBkcm9wVGFibGVRdWVyeSA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBUQUJMRSBfIiwg
dGFibGUpKTsKICAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFibGVRdWVyeS0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0
ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIHRlbXBvcmFyeSB0YWJs
ZXMsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU5Nyw3ICs2MDYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3
VGFibGVzSWZOZWNlc3NhcnkoKQogCiBWZWN0b3I8U3RyaW5nPiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
KQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1h
a2VTdHJpbmcoIlBSQUdNQSB0YWJsZV9pbmZvKCIsIHRhYmxlTmFtZSwgIikiKSk7CisgICAgYXV0
byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmco
IlBSQUdNQSB0YWJsZV9pbmZvKCIsIHRhYmxlTmFtZSwgIikiKSk7CiAKICAgICBpZiAoIXN0YXRl
bWVudCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0Q29sdW1uc0Zyb21UYWJsZUluZm9TdGF0
ZW1lbnQgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGFi
bGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CkBAIC02MjIsNyArNjMxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKFN0cmluZyYm
IHRhYmwKICAgICAgICAgaWYgKGV4aXN0aW5nQ29sdW1ucy5jb250YWlucyhjb2x1bW4pKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBhdXRvIHN0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJs
ZU5hbWUsICIgQUREIENPTFVNTiAiLCBjb2x1bW4pKTsKKyAgICAgICAgYXV0byBzdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxF
ICIsIHRhYmxlTmFtZSwgIiBBREQgQ09MVU1OICIsIGNvbHVtbikpOwogICAgICAgICBpZiAoIXN0
YXRlbWVudCkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9U
YWJsZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gYWRkIG1pc3NpbmcgY29sdW1ucyB0
byB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNjQ4LDcgKzY1Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkoKQogCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5JblRhYmxlKFN0cmluZyYmIHRh
YmxlTmFtZSwgRXhpc3RpbmdDb2x1bW5OYW1lJiYgZXhpc3RpbmdDb2x1bW5OYW1lLCBFeHBlY3Rl
ZENvbHVtbk5hbWUmJiBleHBlY3RlZENvbHVtbk5hbWUpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwg
dGFibGVOYW1lLCAiIFJFTkFNRSBDT0xVTU4gIiwgZXhpc3RpbmdDb2x1bW5OYW1lLCAiIFRPICIs
IGV4cGVjdGVkQ29sdW1uTmFtZSkpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5hbWUs
ICIgUkVOQU1FIENPTFVNTiAiLCBleGlzdGluZ0NvbHVtbk5hbWUsICIgVE8gIiwgZXhwZWN0ZWRD
b2x1bW5OYW1lKSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8g
cmVuYW1lIGNvbHVtbiBpbiB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC02OTMsNyArNzAyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ1RhYmxlc0lmTmVjZXNzYXJ5KCkKIAogICAgIGZv
ciAoYXV0byYgdGFibGUgOiAqbWlzc2luZ1RhYmxlcykgewogICAgICAgICBhdXRvIGNyZWF0ZVRh
YmxlUXVlcnkgPSBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkuZ2V0KHRhYmxlKS5maXJz
dDsKLSAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVRhYmxlUXVl
cnkpKQorICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmRTbG93KGNyZWF0ZVRh
YmxlUXVlcnkpKQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdUYWJsZXMgZmFp
bGVkIHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICB9CiAKQEAgLTEwNDAsNyArMTA0OSw3
IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlQW5k
TWFrZURvbWFpbkxpc3QoY29uc3QgSGFzaFNlCiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QoY29uc3QgU3RyaW5n
JiBzdGF0ZW1lbnQsIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5MaXN0
LCB1bnNpZ25lZCBkb21haW5JRCkKIHsKLSAgICBhdXRvIGluc2VydFJlbGF0aW9uc2hpcFN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKHN0YXRlbWVudCwg
ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoZG9tYWluTGlzdCksICIgKTsiKSk7CisgICAgYXV0byBp
bnNlcnRSZWxhdGlvbnNoaXBTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRT
bG93KG1ha2VTdHJpbmcoc3RhdGVtZW50LCBlbnN1cmVBbmRNYWtlRG9tYWluTGlzdChkb21haW5M
aXN0KSwgIiApOyIpKTsKICAgICAKICAgICBpZiAoIWluc2VydFJlbGF0aW9uc2hpcFN0YXRlbWVu
dAogICAgICAgICB8fCBpbnNlcnRSZWxhdGlvbnNoaXBTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9t
YWluSUQpICE9IFNRTElURV9PSykgewpAQCAtMTE4MSw5ICsxMTkwLDkgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNv
dXJjZUxvYWRTdGEKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhzdGF0aXN0aWMp
OwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nVmlldyBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRp
bmcoKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKQog
ewotICAgIHJldHVybiAiZG9tYWluSUQsIgorICAgIHJldHVybiAiU0VMRUNUIGRvbWFpbklELCIK
ICAgICAgICAgIihjb3VudFN1YkZyYW1lVW5kZXJUb3BGcmFtZSArIGNvdW50U3ViUmVzb3VyY2VV
bmRlclRvcEZyYW1lICsgY291bnRVbmlxdWVSZWRpcmVjdFRvKSBhcyBzdW0gICIKICAgICAgICAg
IkZST00gKCAiCiAgICAgICAgICJTRUxFQ1QgIgpAQCAtMTE5OCw3ICsxMjA3LDcgQEAgc3RhdGlj
IGNvbnN0IFN0cmluZ1ZpZXcgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCkKICAgICAgICAg
IkxFRlQgSk9JTiBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIHUgT04gby5kb21haW5JRCA9
IHUuc3VicmVzb3VyY2VEb21haW5JRCAiCiAgICAgICAgICJXSEVSRSBpc1ByZXZhbGVudCBMSUtF
ID8gIgogICAgICAgICAiYW5kIGhhZFVzZXJJbnRlcmFjdGlvbiBMSUtFID8gIgotICAgICAgICAi
R1JPVVAgQlkgZG9tYWluSUQpIE9SREVSIEJZIHN1bSBERVNDICI7CisgICAgICAgICJHUk9VUCBC
WSBkb21haW5JRCkgT1JERVIgQlkgc3VtIERFU0M7Il9zOwogfQogCiBWZWN0b3I8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGlyZFBhcnR5RG9tYWluSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluKSBjb25zdApAQCAtMTIz
MCw3ICsxMjM5LDcgQEAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXQKIAogICAgIFZlY3RvcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5RGF0
YUxpc3Q7CiAgICAgY29uc3QgYXV0byBwcmV2YWxlbnREb21haW5zQmluZFBhcmFtZXRlciA9IHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSA9PSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOjpBbGwgPyAiJSIgOiAiMSI7Ci0gICAgYXV0byBzb3J0ZWRTdGF0aXN0aWNzID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNFTEVDVCAiLCBqb2luU3ViU3RhdGlz
dGljc0ZvclNvcnRpbmcoKSkpOworICAgIGF1dG8gc29ydGVkU3RhdGlzdGljcyA9IG1fZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudChqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKSk7CiAgICAg
aWYgKCFzb3J0ZWRTdGF0aXN0aWNzCiAgICAgICAgIHx8IHNvcnRlZFN0YXRpc3RpY3MtPmJpbmRU
ZXh0KDEsIHByZXZhbGVudERvbWFpbnNCaW5kUGFyYW1ldGVyKQogICAgICAgICB8fCBzb3J0ZWRT
dGF0aXN0aWNzLT5iaW5kVGV4dCgyLCAiJSIpICE9IFNRTElURV9PSykgewpAQCAtMTI2Niw3ICsx
Mjc1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVt
ZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIGF1dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50ID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMg
U0VUIGRhdGFSZWNvcmRzUmVtb3ZlZCA9IGRhdGFSZWNvcmRzUmVtb3ZlZCArIDEgV0hFUkUgcmVn
aXN0cmFibGVEb21haW4gSU4gKCIsIGRvbWFpbnNUb1N0cmluZyhkb21haW5zKSwgIikiKSk7Cisg
ICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0
ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGRhdGFSZWNv
cmRzUmVtb3ZlZCA9IGRhdGFSZWNvcmRzUmVtb3ZlZCArIDEgV0hFUkUgcmVnaXN0cmFibGVEb21h
aW4gSU4gKCIsIGRvbWFpbnNUb1N0cmluZyhkb21haW5zKSwgIikiKSk7CiAgICAgaWYgKCFkb21h
aW5zVG9VcGRhdGVTdGF0ZW1lbnQgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LT5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omlu
Y3JlbWVudFN0YXRpc3RpY3NGb3JEb21haW5zIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzUyLDcgKzEzNjEsNyBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGly
ZWN0ZWRUb1ByZXZhbAogICAgICAgICAgICAgcHJldmFsZW50RHVlVG9SZWRpcmVjdC5pbnNlcnQo
dG9wRnJhbWVSZWRpcmVjdFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApKTsKICAgICB9CiAKLSAg
ICBhdXRvIG1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAx
IFdIRVJFIGRvbWFpbklEIElOICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0ZFNl
dDx1bnNpZ25lZD46Oml0ZXJhdG9yPihwcmV2YWxlbnREdWVUb1JlZGlyZWN0LmJlZ2luKCksIHBy
ZXZhbGVudER1ZVRvUmVkaXJlY3QuZW5kKCkpKSwgIikiKSk7CisgICAgYXV0byBtYXJrUHJldmFs
ZW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5n
KCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWlu
SUQgSU4gKCIsIGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6
aXRlcmF0b3I+KHByZXZhbGVudER1ZVRvUmVkaXJlY3QuYmVnaW4oKSwgcHJldmFsZW50RHVlVG9S
ZWRpcmVjdC5lbmQoKSkpLCAiKSIpKTsKICAgICBpZiAoIW1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQg
fHwgbWFya1ByZXZhbGVudFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGly
ZWN0ZWRUb1ByZXZhbGVudCBmYWlsZWQgdG8gZXhlY3V0ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzg0LDcgKzEzOTMsNyBAQCBIYXNoTWFwPHVu
c2lnbmVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZh
bGVudFJlc291cmNlcwogCiAgICAgYXV0byBkb21haW5JRHNPZkludGVyZXN0ID0gYnVpbGRlci50
b1N0cmluZygpOwogCi0gICAgYXV0byBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNFTEVDVCBz
dWJyZXNvdXJjZURvbWFpbklELCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9NIFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwg
ZG9tYWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsK
KyAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlNFTEVDVCBzdWJyZXNvdXJj
ZURvbWFpbklELCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9NIFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9tYWluSURz
T2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsKICAgICBpZiAo
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCkgewogICAgICAgICB3aGls
ZSAoc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudC0+c3RlcCgpID09IFNR
TElURV9ST1cpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQtPmdldENv
bHVtbkludCgwKSk7CkBAIC0xMzk0LDcgKzE0MDMsNyBAQCBIYXNoTWFwPHVuc2lnbmVkLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZhbGVudFJlc291cmNl
cwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvQ291bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmlu
ZygiU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIENPVU5UKHRvRG9tYWluSUQpIEZST00gU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEIElOICgi
LCBkb21haW5JRHNPZkludGVyZXN0LCAiKSBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklEIikp
OworICAgIGF1dG8gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJTRUxFQ1Qgc3VicmVz
b3VyY2VEb21haW5JRCwgQ09VTlQodG9Eb21haW5JRCkgRlJPTSBTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50
ZXJlc3QsICIpIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQiKSk7CiAgICAgaWYgKHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudCkgewogICAgICAgICB3aGlsZSAo
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykgewogICAgICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQoMCkpOwpAQCAtMTQwNCw3ICsxNDEzLDcgQEAgSGFzaE1hcDx1bnNpZ25lZCwgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Ok5vdFZlcnlQcmV2YWxlbnRSZXNvdXJj
ZXMKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWluc0NvdW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJp
bmcoIlNFTEVDVCBzdWJmcmFtZURvbWFpbklELCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9N
IFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViZnJhbWVEb21haW5JRCBJTiAo
IiwgZG9tYWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3ViZnJhbWVEb21haW5JRCIpKTsK
KyAgICBhdXRvIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHN1YmZyYW1l
RG9tYWluSUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyBXSEVSRSBzdWJmcmFtZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVy
ZXN0LCAiKSBHUk9VUCBCWSBzdWJmcmFtZURvbWFpbklEIikpOwogICAgIGlmIChzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zQ291bnRTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKHN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9S
T1cpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudC0+Z2V0Q29sdW1u
SW50KDApKTsKQEAgLTE0MTQsNyArMTQyMyw3IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpOb3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3Vu
dFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJTRUxF
Q1Qgc291cmNlRG9tYWluSUQsIENPVU5UKHRvRG9tYWluSUQpIEZST00gVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9tYWluSURzT2ZJbnRlcmVz
dCwgIikgR1JPVVAgQlkgc291cmNlRG9tYWluSUQiKSk7CisgICAgYXV0byB0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRT
bG93KG1ha2VTdHJpbmcoIlNFTEVDVCBzb3VyY2VEb21haW5JRCwgQ09VTlQodG9Eb21haW5JRCkg
RlJPTSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFpbklEIElOICgi
LCBkb21haW5JRHNPZkludGVyZXN0LCAiKSBHUk9VUCBCWSBzb3VyY2VEb21haW5JRCIpKTsKICAg
ICBpZiAodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50KSB7CiAgICAgICAg
IHdoaWxlICh0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPih0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPmdl
dENvbHVtbkludCgwKSk7CkBAIC0xNjQ0LDcgKzE2NTMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zKGNvbnN0IEhh
c2hTZQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVy
RGF0YUZvckRvbWFpbnMgd2FzIG5vdCBjb21wbGV0ZWQgZHVlIHRvIGZhaWxlZCBpbnNlcnQgYXR0
ZW1wdCIsIHRoaXMpOwogICAgIH0KIAotICAgIGF1dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50
ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZl
ZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAxIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIElO
ICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikpOworICAgIGF1dG8gZG9tYWluc1Rv
VXBkYXRlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3Ry
aW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBncmFuZGZhdGhlcmVkID0gMSBXSEVSRSBy
ZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsK
ICAgICBpZiAoIWRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudCB8fCBkb21haW5zVG9VcGRhdGVTdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTkxNSw3ICsxOTI0LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJl
dmFsZW50KFN0ZFNldDx1bnNpZ25lZD4KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIGF1dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJl
dmFsZW50ID0gMSBXSEVSRSBkb21haW5JRCBJTiAoIiwgYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JS
YW5nZTxTdGRTZXQ8dW5zaWduZWQ+OjppdGVyYXRvcj4oZG9tYWlucy5iZWdpbigpLCBkb21haW5z
LmVuZCgpKSksICIpIikpOworICAgIGF1dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWRE
b21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGJ1aWxkTGlz
dChXVEY6Okl0ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6aXRlcmF0b3I+KGRvbWFpbnMu
YmVnaW4oKSwgZG9tYWlucy5lbmQoKSkpLCAiKSIpKTsKICAgICBpZiAoIWRvbWFpbnNUb1VwZGF0
ZVN0YXRlbWVudCB8fCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0Fz
UHJldmFsZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yNDY2LDcgKzI0NzUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjbGVhckdyYW5kZmF0aGVyaW5nKFZlY3Rvcjx1bnNpZ25lZD4mJgogCiAg
ICAgYXV0byBsaXN0VG9DbGVhciA9IGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8VmVjdG9y
PHVuc2lnbmVkPjo6aXRlcmF0b3I+KGRvbWFpbklEc1RvQ2xlYXIuYmVnaW4oKSwgZG9tYWluSURz
VG9DbGVhci5lbmQoKSkpOwogCi0gICAgYXV0byBjbGVhckdyYW5kZmF0aGVyaW5nU3RhdGVtZW50
ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZl
ZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAwIFdIRVJFIGRvbWFpbklEIElOICgiLCBsaXN0
VG9DbGVhciwgIikiKSk7CisgICAgYXV0byBjbGVhckdyYW5kZmF0aGVyaW5nU3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2
ZWREb21haW5zIFNFVCBncmFuZGZhdGhlcmVkID0gMCBXSEVSRSBkb21haW5JRCBJTiAoIiwgbGlz
dFRvQ2xlYXIsICIpIikpOwogICAgIGlmICghY2xlYXJHcmFuZGZhdGhlcmluZ1N0YXRlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMjYyMyw3ICsyNjMyLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQog
CiAgICAgYXV0byBsaXN0VG9QcnVuZSA9IGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8VmVj
dG9yPHVuc2lnbmVkPjo6aXRlcmF0b3I+KGVudHJpZXNUb1BydW5lLmJlZ2luKCksIGVudHJpZXNU
b1BydW5lLmVuZCgpKSk7CiAKLSAgICBhdXRvIHBydW5lQ29tbWFuZCA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJERUxFVEUgZnJvbSBPYnNlcnZlZERvbWFpbnMgV0hF
UkUgZG9tYWluSUQgSU4gKCIsIGxpc3RUb1BydW5lLCAiKSIpKTsKKyAgICBhdXRvIHBydW5lQ29t
bWFuZCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiREVMRVRF
IGZyb20gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEIElOICgiLCBsaXN0VG9QcnVuZSwg
IikiKSk7CiAgICAgaWYgKCFwcnVuZUNvbW1hbmQgfHwgcHJ1bmVDb21tYW5kLT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5l
U3RhdGlzdGljc0lmTmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0yNzcwLDM1ICsyNzc5LDM1IEBAIFN0cmluZyBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVu
c2lnbmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5n
JiB0YWJsZU5hbWUpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmIHRhYmxl
TmFtZSkgY29uc3QKIHsKICAgICBpZiAodGFibGVOYW1lID09ICJTdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BMZXZlbERvbWFpbklE
IGZyb20gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklEID0g
PyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcExldmVsRG9tYWluSUQgZnJvbSBTdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOwogICAgIGlm
ICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iKQotICAgICAgICByZXR1
cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyBXSEVS
RSBzb3VyY2VEb21haW5JRCA9ID8iOworICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklE
IGZyb20gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCA9ID8i
X3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikK
LSAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tIFdIRVJFIHRhcmdldERvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAi
U0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSBXSEVS
RSB0YXJnZXREb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tIikKLSAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklE
IGZyb20gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFdIRVJFIHRvRG9tYWluSUQgPSA/IjsK
KyAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tIFdIRVJFIHRvRG9tYWluSUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUg
PT0gIlRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiKQotICAgICAgICByZXR1cm4gIlNF
TEVDVCBzdWJyZXNvdXJjZURvbWFpbklEIGZyb20gVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2Ny
aXB0cyBXSEVSRSB0b3BGcmFtZURvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNU
IHN1YnJlc291cmNlRG9tYWluSUQgZnJvbSBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRz
IFdIRVJFIHRvcEZyYW1lRG9tYWluSUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1
YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BG
cmFtZURvbWFpbklEIGZyb20gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJG
cmFtZURvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWlu
SUQgZnJvbSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWlu
SUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20g
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklE
ID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgZnJvbSBTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/
Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8i
KQotICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyI7CisgICAgICAgIHJl
dHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
IFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0g
IlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIpCi0gICAgICAgIHJldHVybiAiU0VMRUNU
IGZyb21Eb21haW5JRCBmcm9tIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSBXSEVSRSBz
dWJyZXNvdXJjZURvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21h
aW5JRCBmcm9tIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSBXSEVSRSBzdWJyZXNvdXJj
ZURvbWFpbklEID0gPyJfczsKICAgICAKLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gIiJfczsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBT
dHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0CiB7CiAgICAgYXV0
byBxdWVyeSA9IGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudCh0YWJsZU5hbWUpOwogICAgIAotICAg
IGlmIChxdWVyeS5pc0VtcHR5KCkpCisgICAgaWYgKCFxdWVyeS5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIGF1dG8gZGF0YSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dChxdWVyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oCmluZGV4IGExZTM1MTUzNDQ2YzU3ZmQzODg1OWE2ZGNmODYyNGIwMTYwMzA5N2Uu
LmZkNzFjYzVlN2I5NjA0Yzc4MThmMWI2YWU5YmE1ZDMxNmUyODE4M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0xODEsNyAr
MTgxLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVkLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgb3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5
KCk7CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZCkgY29u
c3Q7Ci0gICAgU3RyaW5nIGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBj
b25zdDsKKyAgICBBU0NJSUxpdGVyYWwgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWls
ZGVyJiwgY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25z
dDsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
KTsKICAgICB2b2lkIG1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4
IDRjNzhmY2U5NDc4OTI4NzJlNWRhMTY1ZGUzZjVhYzk3ZGMyZTBkOGEuLjM2ODM2NWZmMWIwODg0
M2QzNmFlMDI5NzM2MDhkN2JhYTRjYmZjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
LmNwcApAQCAtODEsMTEgKzgxLDExIEBAIGJvb2wgTG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZShTaG91bGRDcmVhdGVEYXRhYmFzZSBzaG91bGRDcmVhdGVEYXRhYmFzCiAgICAgaWYg
KCFtaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKSkgewogICAgICAgICAvLyBXZSBmYWlsZWQgdG8g
bWlncmF0ZSB0aGUgaXRlbSB0YWJsZS4gSW4gb3JkZXIgdG8gYXZvaWQgdHJ5aW5nIHRvIG1pZ3Jh
dGUgdGhlIHRhYmxlIG92ZXIgYW5kIG92ZXIsCiAgICAgICAgIC8vIGp1c3QgZGVsZXRlIGl0IGFu
ZCBzdGFydCBmcm9tIHNjcmF0Y2guCi0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29t
bWFuZCgiRFJPUCBUQUJMRSBJdGVtVGFibGUiKSkKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJEUk9QIFRBQkxFIEl0ZW1UYWJsZSJfcykpCiAgICAgICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBkZWxldGUgdGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdl
Iik7CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBJdGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElD
VCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIikpIHsKKyAg
ICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJ
U1RTIEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVl
IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGNyZWF0ZSB0YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEwNiwxMyArMTA2LDEzIEBAIGJvb2wg
TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IHRhYmxlIHdpdGggdGhlIHJpZ2h0
IHR5cGUsIGNvcHkgYWxsIHRoZSBkYXRhIG92ZXIgdG8gaXQgYW5kIHRoZW4gcmVwbGFjZSB0aGUg
bmV3IHRhYmxlIHdpdGggdGhlIG9sZCB0YWJsZS4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29t
bWFuZHNbXSA9IHsKLSAgICAgICAgIkRST1AgVEFCTEUgSUYgRVhJU1RTIEl0ZW1UYWJsZTIiLAot
ICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJsZTIgKGtleSBURVhUIFVOSVFVRSBPTiBDT05G
TElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIiwKLSAg
ICAgICAgIklOU0VSVCBJTlRPIEl0ZW1UYWJsZTIgU0VMRUNUICogZnJvbSBJdGVtVGFibGUiLAot
ICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUiLAotICAgICAgICAiQUxURVIgVEFCTEUgSXRl
bVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIiwKLSAgICAgICAgMCwKKyAgICBzdGF0aWMgY29u
c3QgQVNDSUlMaXRlcmFsIGNvbW1hbmRzW10gPSB7CisgICAgICAgICJEUk9QIFRBQkxFIElGIEVY
SVNUUyBJdGVtVGFibGUyIl9zLAorICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJsZTIgKGtl
eSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwpIl9zLAorICAgICAgICAiSU5TRVJUIElOVE8gSXRlbVRhYmxlMiBTRUxF
Q1QgKiBmcm9tIEl0ZW1UYWJsZSJfcywKKyAgICAgICAgIkRST1AgVEFCTEUgSXRlbVRhYmxlIl9z
LAorICAgICAgICAiQUxURVIgVEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIl9z
LAorICAgICAgICBBU0NJSUxpdGVyYWw6Om51bGwoKSwKICAgICB9OwogCiAgICAgU1FMaXRlVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24obV9kYXRhYmFzZSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgYm9v
bCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkKICAgICAg
ICAgaWYgKG1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZHNbaV0pKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWlncmF0ZSB0YWJs
ZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVzIiwgY29tbWFu
ZHNbaV0pOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtaWdyYXRlIHRhYmxlIEl0ZW1U
YWJsZSBmb3IgbG9jYWwgc3RvcmFnZSB3aGVuIGV4ZWN1dGluZzogJXMiLCBjb21tYW5kc1tpXS5j
aGFyYWN0ZXJzKCkpOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA2NTA4
ODZlZTU2NjE2MjBiODgzMGE2MzUwNmI5N2YzNDQwZDdmNzg1Li45NDc3MDI1MTQ1OWQyMjMzYmIw
MTI4ZWJmZjgyYzRiNDRmZWZmYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTEyNCw0MiArMTI0LDQzIEBAIGJvb2wgSWNv
bkRhdGFiYXNlOjpjcmVhdGVUYWJsZXNJZk5lZWRlZCgpCiAKICAgICBtX2RiLmNsZWFyQWxsVGFi
bGVzKCk7CiAKLSAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBQYWdl
VVJMICh1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElD
VCBSRVBMQUNFLGljb25JRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7
CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgUGFnZVVSTCAodXJs
IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFD
RSxpY29uSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiX3MpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBQYWdlVVJMIHRhYmxlIGluIGRhdGFiYXNl
ICglaSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggUGFnZVVSTEluZGV4IE9OIFBhZ2VV
UkwgKHVybCk7IikpIHsKKyAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRF
WCBQYWdlVVJMSW5kZXggT04gUGFnZVVSTCAodXJsKTsiX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBQYWdlVVJMIGluZGV4IGluIGRhdGFiYXNlICglaSkgLSAlcyIs
IG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBtX2RiLmNs
b3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKCFtX2RiLmV4ZWN1
dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSWNvbkluZm8gKGljb25JRCBJTlRFR0VSIFBSSU1BUlkg
S0VZIEFVVE9JTkNSRU1FTlQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHVybCBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIHN0YW1wIElO
VEVHRVIpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUg
SWNvbkluZm8gKGljb25JRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQgVU5JUVVF
IE9OIENPTkZMSUNUIFJFUExBQ0UsIHVybCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwg
VU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIHN0YW1wIElOVEVHRVIpOyJfcykpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEljb25JbmZvIHRhYmxlIGluIGRhdGFiYXNlICgl
aSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKCFt
X2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggSWNvbkluZm9JbmRleCBPTiBJY29uSW5m
byAodXJsLCBpY29uSUQpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVB
VEUgSU5ERVggSWNvbkluZm9JbmRleCBPTiBJY29uSW5mbyAodXJsLCBpY29uSUQpOyJfcykpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFBhZ2VVUkwgaW5kZXggaW4gZGF0
YWJhc2UgKCVpKSAtICVzIiwgbV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIG1fZGIuY2xvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJY29uRGF0YSAoaWNvbklE
IElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSwgZGF0YSBCTE9CKTsiKSkgeworICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JF
QVRFIFRBQkxFIEljb25EYXRhIChpY29uSUQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVN
RU5UIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBkYXRhIEJMT0IpOyJfcykpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEljb25EYXRhIHRhYmxlIGluIGRhdGFiYXNl
ICglaSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggSWNvbkRhdGFJbmRleCBPTiBJY29u
RGF0YSAoaWNvbklEKTsiKSkgeworICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRF
IElOREVYIEljb25EYXRhSW5kZXggT04gSWNvbkRhdGEgKGljb25JRCk7Il9zKSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgUGFnZVVSTCBpbmRleCBpbiBkYXRhYmFzZSAo
JWkpIC0gJXMiLCBtX2RiLmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgbV9kYi5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICgh
bV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEljb25EYXRhYmFzZUluZm8gKGtleSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0Us
dmFsdWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgIGlmICghbV9k
Yi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEljb25EYXRhYmFzZUluZm8gKGtleSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFs
dWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiX3MpKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBJY29uRGF0YWJhc2VJbmZvIHRhYmxlIGluIGRhdGFiYXNl
ICglaSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KCFtX2RiLmV4ZWN1dGVDb21tYW5kKFN0cmluZygiSU5TRVJUIElOVE8gSWNvbkRhdGFiYXNlSW5m
byBWQUxVRVMgKCdWZXJzaW9uJywgIikgKyBTdHJpbmc6Om51bWJlcihjdXJyZW50RGF0YWJhc2VW
ZXJzaW9uKSArICIpOyIpKSB7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RiLnByZXBhcmVTdGF0
ZW1lbnQoIklOU0VSVCBJTlRPIEljb25EYXRhYmFzZUluZm8gVkFMVUVTICgnVmVyc2lvbicsID8p
OyJfcyk7CisgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5iaW5kSW50KGN1cnJlbnRE
YXRhYmFzZVZlcnNpb24pICE9IFNRTElURV9PSyB8fCAhc3RhdGVtZW50LT5leGVjdXRlQ29tbWFu
ZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGluc2VydCBpY29uIGRhdGFiYXNl
IHZlcnNpb24gaW50byBJY29uRGF0YWJhc2VJbmZvIHRhYmxlICglaSkgLSAlcyIsIG1fZGIubGFz
dEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBtX2RiLmNsb3NlKCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NSwxMyArMTc2LDE3IEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxNYXAoKQogICAgIGlmICghbV9kYi5pc09wZW4o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGltcG9ydFF1ZXJ5ID0gbWFrZVN0cmlu
ZygiU0VMRUNUIFBhZ2VVUkwudXJsLCBJY29uSW5mby51cmwsIEljb25JbmZvLnN0YW1wIEZST00g
UGFnZVVSTCBJTk5FUiBKT0lOIEljb25JbmZvIE9OIFBhZ2VVUkwuaWNvbklEPUljb25JbmZvLmlj
b25JRCBXSEVSRSBJY29uSW5mby5zdGFtcCA+ICIsIGZsb29yKChXYWxsVGltZTo6bm93KCkgLSBu
b3RVc2VkSWNvbkV4cGlyYXRpb25UaW1lKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSks
ICc7Jyk7Ci0gICAgYXV0byBxdWVyeSA9IG1fZGIucHJlcGFyZVN0YXRlbWVudChpbXBvcnRRdWVy
eSk7CisgICAgYXV0byBxdWVyeSA9IG1fZGIucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIFBhZ2VV
UkwudXJsLCBJY29uSW5mby51cmwsIEljb25JbmZvLnN0YW1wIEZST00gUGFnZVVSTCBJTk5FUiBK
T0lOIEljb25JbmZvIE9OIFBhZ2VVUkwuaWNvbklEPUljb25JbmZvLmljb25JRCBXSEVSRSBJY29u
SW5mby5zdGFtcCA+ICg/KTsiX3MpOwogICAgIGlmICghcXVlcnkpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gcHJlcGFyZSBpY29uIHVybCBpbXBvcnQgcXVlcnkiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmIChxdWVyeS0+YmluZEludDY0KDEsIGZsb29yKChXYWxs
VGltZTo6bm93KCkgLSBub3RVc2VkSWNvbkV4cGlyYXRpb25UaW1lKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHMoKSkpICE9IFNRTElURV9PSykgeworICAgICAgICBMT0dfRVJST1IoIkljb25E
YXRhYmFzZTo6cG9wdWxhdGVQYWdlVVJMVG9JY29uVVJMTWFwOiBmYWlsZWQgdG8gYmluZCBzdGF0
ZW1lbnQ6ICVzIiwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBhdXRvIHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CiAgICAgTG9ja0hvbGRlciBsb2Nr
SG9sZGVyKG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOwogICAgIHdoaWxlIChyZXN1bHQgPT0g
U1FMSVRFX1JPVykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcAppbmRleCBjYWUwODJmMTNkY2QzNjhjNDgxOTViZTMxMWYyMGE1YjY2NDQ4ZmFi
Li41ZGMyMGJjZjBkZjVjOTAxYjc4NTc1Nzc4MWU1YjcwZjMwNzczZDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMjYyLDcgKzI2
Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0YWJhc2UoT3BlbkRhdGFiYXNlUGFy
YW1UeXBlIG9wZW5pbmdTdHJhdGVneSkKIAogICAgIG1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgp
OwogCi0gICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYg
Tk9UIEVYSVNUUyBJdGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIikpIHsKKyAgICBpZiAoIW1f
ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEl0ZW1U
YWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIEJMT0IgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSB0YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsKICAgICAgICAg
bWFya0ltcG9ydGVkKCk7CiAgICAgICAgIG1fZGF0YWJhc2VPcGVuRmFpbGVkID0gdHJ1ZTsKQEAg
LTI4NSwyMCArMjg1LDIwIEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxl
SWZOZWVkZWQoKQogICAgIH0KIAogICAgIC8vIGFsdGVyIHRhYmxlIGZvciBiYWNrd2FyZCBjb21w
bGlhbmNlLCBjaGFuZ2UgdGhlIHZhbHVlIHR5cGUgZnJvbSBURVhUIHRvIEJMT0IuCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbW1hbmRzW10gPSB7Ci0gICAgICAgICJEUk9QIFRBQkxFIElGIEVY
SVNUUyBJdGVtVGFibGUyIiwKLSAgICAgICAgIkNSRUFURSBUQUJMRSBJdGVtVGFibGUyIChrZXkg
VEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMKSIsCi0gICAgICAgICJJTlNFUlQgSU5UTyBJdGVtVGFibGUyIFNFTEVDVCAq
IGZyb20gSXRlbVRhYmxlIiwKLSAgICAgICAgIkRST1AgVEFCTEUgSXRlbVRhYmxlIiwKLSAgICAg
ICAgIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZTIgUkVOQU1FIFRPIEl0ZW1UYWJsZSIsCi0gICAgICAg
IDAsCisgICAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBjb21tYW5kc1tdID0geworICAgICAg
ICAiRFJPUCBUQUJMRSBJRiBFWElTVFMgSXRlbVRhYmxlMiJfcywKKyAgICAgICAgIkNSRUFURSBU
QUJMRSBJdGVtVGFibGUyIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFs
dWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfcywKKyAgICAgICAgIklOU0VSVCBJ
TlRPIEl0ZW1UYWJsZTIgU0VMRUNUICogZnJvbSBJdGVtVGFibGUiX3MsCisgICAgICAgICJEUk9Q
IFRBQkxFIEl0ZW1UYWJsZSJfcywKKyAgICAgICAgIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZTIgUkVO
QU1FIFRPIEl0ZW1UYWJsZSJfcywKKyAgICAgICAgQVNDSUlMaXRlcmFsOjpudWxsKCksCiAgICAg
fTsKIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKG1fZGF0YWJhc2UsIGZhbHNl
KTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBjb21t
YW5kc1tpXTsgKytpKSB7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChj
b21tYW5kc1tpXSkpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1pZ3JhdGUg
dGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIHdoZW4gZXhlY3V0aW5nOiAlcyIsIGNv
bW1hbmRzW2ldKTsKKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1pZ3JhdGUgdGFi
bGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIHdoZW4gZXhlY3V0aW5nOiAlcyIsIGNvbW1h
bmRzW2ldLmNoYXJhY3RlcnMoKSk7CiAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygp
OwogCiAgICAgICAgICAgICAvLyBmaW5hbGx5IGl0IHdpbGwgdHJ5IHRvIGtlZXAgYSBiYWNrdXAg
b2YgSXRlbVRhYmxlIGZvciB0aGUgZnV0dXJlIHJlc3RvcmF0aW9uLgpAQCAtMzA2LDcgKzMwNiw3
IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKQogICAg
ICAgICAgICAgLy8gdGhhbiBjb250aW51YWxseSBoaXR0aW5nIHRoaXMgY2FzZSBhbmQgbmV2ZXIg
YmVpbmcgYWJsZSB0byB1c2UgdGhlIGxvY2FsIHN0b3JhZ2UuCiAgICAgICAgICAgICAvLyBpZiB0
aGlzIGlzIGV2ZXIgaGl0LCBpdCdzIGRlZmluaXRlbHkgYSBidWcuCiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29t
bWFuZCgiQUxURVIgVEFCTEUgSXRlbVRhYmxlIFJFTkFNRSBUTyBCYWNrdXBfSXRlbVRhYmxlIikp
CisgICAgICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxF
IEl0ZW1UYWJsZSBSRU5BTUUgVE8gQmFja3VwX0l0ZW1UYWJsZSJfcykpCiAgICAgICAgICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2F2ZSBJdGVtVGFibGUgYWZ0ZXIgbWlncmF0aW9uIGpv
YiBmYWlsZWQuIik7CiAKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDNlY2NmYTc1ZDIwMjZlNWQzMGQ5
N2IwMDM2ZTNmZTIzN2Q0Yjc3MGQuLjhiMWUxMGIyNGI4YTQyN2VkNmIyYjE3YjQ3NGExNDJiMWNj
Mjk3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6Om9wZW5UcmFja2Vy
RGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKICAgICBtX2RhdGFiYXNlLmRpc2Fi
bGVUaHJlYWRpbmdDaGVja3MoKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlz
dHMoIk9yaWdpbnMiKSkgewotICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
IkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSwgcGF0aCBURVhUKTsiKSkKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21t
YW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNU
IFJFUExBQ0UsIHBhdGggVEVYVCk7Il9zKSkKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlLiIpOwogICAgIH0KIH0K
</data>
<flag name="commit-queue"
          id="449827"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428802</attachid>
            <date>2021-05-16 12:33:35 -0700</date>
            <delta_ts>2021-05-17 11:17:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225855-20210516123334.patch</filename>
            <type>text/plain</type>
            <size>97341</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhMDgyY2JkODllODYw
NTgzZWIxZTI0MDY2MDMzOTA1ZDgzMWE0NC4uZmEwMzQzZjRkNTFlODRiY2JlZmYwMWJlY2JmY2E1
MjVjOGMyZTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTA1LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9yZSBTdHJpbmcg
Y3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBtb3JlIFN0cmluZyBjcmVh
dGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVudHMgYnkgdXNpbmcgQVNDSUlMaXRl
cmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0
ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZCgpIG92ZXJsb2FkcyB0aGF0
IHRha2UgaW4gYQorICAgICAgICBTdHJpbmcgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIG5vdCBjYWxs
ZWQgYnkgbWlzdGFrZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2M1Jl
Y29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYzUmVjb3Jk
c1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djNJ
bmRleFJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYz
SW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpibG9iUmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6YmxvYlJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OmJsb2JGaWxlc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6YmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpjcmVhdGVPck1pZ3JhdGVSZWNvcmRzVGFibGVJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRSZWNvcmRzVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFs
aWRPYmplY3RTdG9yZUluZm9UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5k
ZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFN0YXRlbWVudDo6ZXhlY3V0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpleGVjdXRlU1FMQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6dmVyaWZ5U2NoZW1hVmVyc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2hlY2tGb3JEZWxldGVkUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llSmFyREI6OnZlcmlmeVNjaGVtYVZlcnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZVNRTFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
ZXhlY3V0ZVNxbFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmV4ZWN1dGVT
cWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6c2V0TWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U6OnNldFN5bmNocm9ub3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlOjpleGVjdXRlQ29tbWFuZFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U6OnRhYmxlRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpj
bGVhckFsbFRhYmxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJlcGFy
ZVN0YXRlbWVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnByZXBh
cmVIZWFwU3RhdGVtZW50U2xvdyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZVRyYW5zYWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjp2ZXJp
ZnlTY2hlbWFWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTUUxTdGF0ZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oOgorCiAyMDIxLTA1
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXpl
IC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNyZWF0aW9uIGFuZCBwcmVwYXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5MDAzY2QwNjUwMDcyNGViZjFjYmQ4YzNiMWFmYjFkNWQ3NWZjNDVhLi43M2Q0OWQ5
YzVhOGNlNzY3MTQzOTYwZTNkYzFmMjcyYmZmNTRkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXZvaWQgbW9yZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
dm9pZCBtb3JlIFN0cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVu
dHMgYnkgdXNpbmcgQVNDSUlMaXRlcmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRl
RGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29t
bWFuZCgpIG92ZXJsb2FkcyB0aGF0IHRha2UgaW4gYSAKKyAgICAgICAgU3RyaW5nIHRvIG1ha2Ug
c3VyZSB0aGV5IGFyZSBub3QgY2FsbGVkIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAgIChXZWJLaXQ6Omluc2VydERp
c3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y29sdW1uc0ZvclRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1
bW5JblRhYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QpOgorICAgICAgICAoV2ViS2l0
Ojpqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVu
dElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmROb3RWZXJ5UHJldmFsZW50UmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyR3Jh
bmRmYXRoZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0U3ViU3RhdGlzdGljU3RhdGVt
ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmFwcGVuZFN1YlN0YXRpc3RpY0xpc3QgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjptaWdyYXRlSXRl
bVRhYmxlSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OmNyZWF0ZVRhYmxlc0lmTmVl
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0lj
b25VUkxNYXApOgorCiAyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgTW9kZXJuaXplIC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNyZWF0aW9u
IGFuZCBwcmVwYXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBhOTRiYTI5NDdmMDM3MDRl
ZjY3NmNmZjEzYjIxNWEzOWJjMjg3NTM2Li42MWMwZjhlZGQ0MTJmYWFmOTg1M2I4MTUyYWEyMmZi
Mzc4MmY0MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9y
ZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBtb3JlIFN0
cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJpbmcgU1FMaXRlIHN0YXRlbWVudHMgYnkgdXNpbmcg
QVNDSUlMaXRlcmFsLiBBbHNvIHJlbmFtZSB0aGUKKyAgICAgICAgU1FMaXRlRGF0YWJhc2U6OnBy
ZXBhcmVTdGF0ZW1lbnQoKSAvIFNRTGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZCgpIG92ZXJs
b2FkcyB0aGF0IHRha2UgaW4gYSAKKyAgICAgICAgU3RyaW5nIHRvIG1ha2Ugc3VyZSB0aGV5IGFy
ZSBub3QgY2FsbGVkIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVh
U3luYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxlSWZO
ZWVkZWQpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisKIDIwMjEtMDUt
MTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb2Rlcm5pemUg
LyBPcHRpbWl6ZSBTUUxpdGVTdGF0ZW1lbnQgY3JlYXRpb24gYW5kIHByZXBhcmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDlhYWEwZmQ1M2RlY2QxYWQ2Zjg1NTAw
NmRjNzNhNTc1NGY3NzIzZjkuLmExYWE5MmMyOTYyMWM3Y2U2MTc3ZjZhNTdiNTM1NThkZDQ4OGQ5
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMzEsMTYgKzEzMSwx
NCBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHYzUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lKQogICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVBVEUgVEFCTEUgIiwgdGFi
bGVOYW1lLCAiIChvYmplY3RTdG9yZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdmFs
dWUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgcmVjb3JkSUQgSU5URUdFUiBQUklNQVJZIEtF
WSkiKTsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgdjNSZWNvcmRzVGFibGVTY2hlbWEoKQor
c3RhdGljIEFTQ0lJTGl0ZXJhbCB2M1JlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2M1JlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2
M1JlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKLSAgICByZXR1cm4gdjNSZWNvcmRzVGFi
bGVTY2hlbWFTdHJpbmc7CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgUmVjb3JkcyAob2JqZWN0
U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExB
VEUgSURCS0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIHJlY29yZElEIElOVEVHRVIgUFJJTUFSWSBLRVkpIl9zOwogfQogCi1zdGF0
aWMgY29uc3QgU3RyaW5nJiB2M1JlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIHYzUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYzUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5n
KHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29yZHNcIiIpKTsKLSAgICByZXR1cm4gdjNSZWNv
cmRzVGFibGVTY2hlbWFTdHJpbmc7CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJSZWNvcmRz
XCIgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBrZXkg
VEVYVCBDT0xMQVRFIElEQktFWSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB2YWx1ZSBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMLCByZWNvcmRJRCBJTlRFR0VSIFBSSU1BUlkgS0VZKSJfczsK
IH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyB2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0
IFN0cmluZyYgdGFibGVOYW1lKQpAQCAtMTgyLDUwICsxODAsMzQgQEAgc3RhdGljIGNvbnN0IFN0
cmluZyB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQog
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChpbmRl
eElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwpIik7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcgdjNJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHYzSW5kZXhSZWNvcmRzVGFi
bGVTY2hlbWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gaW5k
ZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcgPSB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJ
bmRleFJlY29yZHMiKTsKLSAgICByZXR1cm4gaW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgSW5kZXhSZWNvcmRzIChpbmRleElEIElOVEVHRVIg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIHYzSW5kZXhSZWNvcmRzVGFibGVT
Y2hlbWFBbHRlcm5hdGUoKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCB2M0luZGV4UmVjb3Jkc1RhYmxl
U2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJp
bmc+IGluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nID0gdjNJbmRleFJlY29yZHNUYWJsZVNj
aGVtYSgiXCJJbmRleFJlY29yZHNcIiIpOwotICAgIHJldHVybiBpbmRleFJlY29yZHNUYWJsZVNj
aGVtYVN0cmluZzsKKyAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIkluZGV4UmVjb3Jkc1wiIChp
bmRleElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJ
TlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZ
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIGJsb2JS
ZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCitzdGF0aWMgQVNDSUlM
aXRlcmFsIGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKQogewotICAgIHJldHVybiBtYWtlU3RyaW5n
KCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChvYmplY3RTdG9yZVJvdyBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKSIpOworICAgIHJldHVybiAiQ1JFQVRFIFRBQkxFIEJsb2JSZWNvcmRzIChvYmplY3RT
dG9yZVJvdyBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYg
YmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JSZWNvcmRz
VGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcoYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgi
QmxvYlJlY29yZHMiKSk7Ci0gICAgcmV0dXJuIGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CisgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgXCJCbG9iUmVjb3Jkc1wiIChvYmplY3RTdG9yZVJv
dyBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYgYmxvYlJl
Y29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JGaWxl
c1RhYmxlU2NoZW1hKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBibG9i
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoIlwiQmxvYlJl
Y29yZHNcIiIpKTsKLSAgICByZXR1cm4gYmxvYlJlY29yZHNUYWJsZVNjaGVtYVN0cmluZzsKKyAg
ICByZXR1cm4gIkNSRUFURSBUQUJMRSBCbG9iRmlsZXMgKGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBmaWxlTmFtZSBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwpIl9zOwogfQog
Ci1zdGF0aWMgY29uc3QgU3RyaW5nIGJsb2JGaWxlc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBibG9iRmlsZXNUYWJsZVNjaGVtYUFsdGVy
bmF0ZSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNSRUFURSBUQUJMRSAiLCB0YWJsZU5h
bWUsICIgKGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBD
T05GTElDVCBGQUlMLCBmaWxlTmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5J
UVVFIE9OIENPTkZMSUNUIEZBSUwpIik7Ci19Ci0KLXN0YXRpYyBjb25zdCBTdHJpbmcmIGJsb2JG
aWxlc1RhYmxlU2NoZW1hKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBi
bG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZyhibG9iRmlsZXNUYWJsZVNjaGVtYSgiQmxvYkZpbGVz
IikpOwotICAgIHJldHVybiBibG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZzsKLX0KLQotc3RhdGlj
IGNvbnN0IFN0cmluZyYgYmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJsb2JGaWxlc1RhYmxlU2NoZW1hU3RyaW5nKGJs
b2JGaWxlc1RhYmxlU2NoZW1hKCJcIkJsb2JGaWxlc1wiIikpOwotICAgIHJldHVybiBibG9iRmls
ZXNUYWJsZVNjaGVtYVN0cmluZzsKKyAgICByZXR1cm4gIkNSRUFURSBUQUJMRSBcIkJsb2JGaWxl
c1wiIChibG9iVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09O
RkxJQ1QgRkFJTCwgZmlsZU5hbWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFV
RSBPTiBDT05GTElDVCBGQUlMKSJfczsKIH0KIAogc3RhdGljIFN0cmluZyBjcmVhdGVWMU9iamVj
dFN0b3JlSW5mb1NjaGVtYShBU0NJSUxpdGVyYWwgdGFibGVOYW1lKQpAQCAtMzA1LDIyICsyODcs
MjIgQEAgc3RhdGljIGJvb2wgY3JlYXRlT3JNaWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3Nhcnko
U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKICAg
ICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgdGFibGUgd2l0aCB0aGUgY29ycmVjdCBzY2hlbWEgYW5k
IG1pZ3JhdGUgYWxsIGV4aXN0aW5nIGNvbnRlbnQgb3Zlci4KLSAgICBpZiAoIWRhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCJfVGVtcF9SZWNvcmRzIikpKSB7Cisg
ICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZFNsb3codjNSZWNvcmRzVGFibGVTY2hlbWEo
Il9UZW1wX1JlY29yZHMiKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IHRlbXBvcmFyeSByZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRhdGFiYXNl
Lmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQg
SU5UTyBfVGVtcF9SZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXksIHZhbHVlKSBTRUxFQ1Qgb2Jq
ZWN0U3RvcmVJRCwgQ0FTVChrZXkgQVMgVEVYVCksIHZhbHVlIEZST00gUmVjb3JkcyIpKSB7Cisg
ICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfUmVjb3Jk
cyAob2JqZWN0U3RvcmVJRCwga2V5LCB2YWx1ZSkgU0VMRUNUIG9iamVjdFN0b3JlSUQsIENBU1Qo
a2V5IEFTIFRFWFQpLCB2YWx1ZSBGUk9NIFJlY29yZHMiX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3RpbmcgUmVjb3JkcyBjb250ZW50ICglaSkgLSAlcyIs
IGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KCJEUk9QIFRBQkxFIFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkRST1AgVEFCTEUgUmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgZHJvcCBleGlzdGluZyBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RF
cnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBf
VGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRzIikpIHsKKyAgICBpZiAoIWRhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRz
Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IFJl
Y29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQxMiw3ICsz
OTQsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRSZWNvcmRzVGFi
bGUoKQogCiAgICAgLy8gV2hldGhlciB0aGUgdXBkYXRlZCByZWNvcmRzIHRhYmxlIGFscmVhZHkg
ZXhpc3RlZCBvciBpZiBpdCB3YXMganVzdCBjcmVhdGVkIGFuZCB0aGUgZGF0YSBtaWdyYXRlZCBv
dmVyLAogICAgIC8vIG1ha2Ugc3VyZSB0aGUgdW5pcXVlbmVzcyBpbmRleCBleGlzdHMuCi0gICAg
aWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBO
T1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXkpOyIp
KSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVOSVFVRSBJ
TkRFWCBJRiBOT1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RTdG9yZUlE
LCBrZXkpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFJlY29y
ZHNJbmRleCBvbiBSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRl
REItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC00NzAsMjIgKzQ1MiwyMiBAQCBib29sIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSgpCiAgICAgdHJhbnNhY3Rp
b24uYmVnaW4oKTsKIAogICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSB0YWJsZSB3aXRoIHRoZSBj
b3JyZWN0IHNjaGVtYSBhbmQgbWlncmF0ZSBhbGwgZXhpc3RpbmcgY29udGVudCBvdmVyLgotICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNUYWJsZVNjaGVt
YSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRl
Q29tbWFuZFNsb3codjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRz
IikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgaW5k
ZXggcmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0
RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJU
IElOVE8gX1RlbXBfSW5kZXhSZWNvcmRzIFNFTEVDVCBJbmRleFJlY29yZHMuaW5kZXhJRCwgSW5k
ZXhSZWNvcmRzLm9iamVjdFN0b3JlSUQsIEluZGV4UmVjb3Jkcy5rZXksIEluZGV4UmVjb3Jkcy52
YWx1ZSwgUmVjb3Jkcy5yb3dpZCBGUk9NIEluZGV4UmVjb3JkcyBJTk5FUiBKT0lOIFJlY29yZHMg
T04gUmVjb3Jkcy5rZXkgPSBJbmRleFJlY29yZHMudmFsdWUgQU5EIFJlY29yZHMub2JqZWN0U3Rv
cmVJRCA9IEluZGV4UmVjb3Jkcy5vYmplY3RTdG9yZUlEIikpIHsKKyAgICBpZiAoIW1fc3FsaXRl
REItPmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9JbmRleFJlY29yZHMgU0VMRUNU
IEluZGV4UmVjb3Jkcy5pbmRleElELCBJbmRleFJlY29yZHMub2JqZWN0U3RvcmVJRCwgSW5kZXhS
ZWNvcmRzLmtleSwgSW5kZXhSZWNvcmRzLnZhbHVlLCBSZWNvcmRzLnJvd2lkIEZST00gSW5kZXhS
ZWNvcmRzIElOTkVSIEpPSU4gUmVjb3JkcyBPTiBSZWNvcmRzLmtleSA9IEluZGV4UmVjb3Jkcy52
YWx1ZSBBTkQgUmVjb3Jkcy5vYmplY3RTdG9yZUlEID0gSW5kZXhSZWNvcmRzLm9iamVjdFN0b3Jl
SUQiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3Rpbmcg
SW5kZXhSZWNvcmRzIGNvbnRlbnQgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCks
IG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgSW5k
ZXhSZWNvcmRzIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJEUk9Q
IFRBQkxFIEluZGV4UmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
ZHJvcCBleGlzdGluZyBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+
bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFM
VEVSIFRBQkxFIF9UZW1wX0luZGV4UmVjb3JkcyBSRU5BTUUgVE8gSW5kZXhSZWNvcmRzIikpIHsK
KyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9J
bmRleFJlY29yZHMgUkVOQU1FIFRPIEluZGV4UmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgcmVuYW1lIHRlbXBvcmFyeSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAt
ICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTUzOSw3ICs1MjEsNyBAQCBib29s
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNJbmRleCgpCiAg
ICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJE
Uk9QIElOREVYIEluZGV4UmVjb3Jkc0luZGV4IikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4
ZWN1dGVDb21tYW5kKCJEUk9QIElOREVYIEluZGV4UmVjb3Jkc0luZGV4Il9zKSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBkcm9wIGluZGV4IEluZGV4UmVjb3Jkc0luZGV4IGluIGRh
dGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC01OTksNyAr
NTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAgICBBU1NFUlQobV9zcWxpdGVEQik7
CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJREJEYXRhYmFzZUluZm8gKGtleSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZh
bHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1fc3Fs
aXRlREItPmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSURCRGF0YWJhc2VJbmZvIChrZXkg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNF
LCB2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyJfcykpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIElEQkRhdGFiYXNlSW5mbyB0YWJsZSBpbiBkYXRh
YmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNjExLDEzICs1OTMsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNl
SW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVj
dXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgiSW5kZXhJbmZvIl9zKSkpIHsKKyAgICBp
ZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kU2xvdyhpbmRleEluZm9UYWJsZVNjaGVtYSgi
SW5kZXhJbmZvIl9zKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIElu
ZGV4SW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURC
KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBLZXlHZW5lcmF0b3JzIChvYmplY3RTdG9y
ZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSwgY3VycmVudEtleSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIp
KSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEtl
eUdlbmVyYXRvcnMgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBjdXJyZW50S2V5IElOVEVHRVIgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCk7Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBjcmVhdGUgS2V5R2VuZXJhdG9ycyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBjbG9zZVNRTGl0ZURCKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzAyLDIyICs2
ODQsMjIgQEAgT3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmwKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAg
IGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVjJPYmplY3RTdG9yZUluZm9T
Y2hlbWEoIl9UZW1wX09iamVjdFN0b3JlSW5mbyJfcykpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURC
LT5leGVjdXRlQ29tbWFuZFNsb3coY3JlYXRlVjJPYmplY3RTdG9yZUluZm9TY2hlbWEoIl9UZW1w
X09iamVjdFN0b3JlSW5mbyJfcykpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSB0ZW1wb3JhcnkgT2JqZWN0U3RvcmVJbmZvIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAl
cyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfT2JqZWN0U3RvcmVJbmZvIChp
ZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYykgU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jIEZST00gT2JqZWN0U3RvcmVJbmZvIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1
dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9PYmplY3RTdG9yZUluZm8gKGlkLCBuYW1lLCBr
ZXlQYXRoLCBhdXRvSW5jKSBTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMgRlJPTSBP
YmplY3RTdG9yZUluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3Jh
dGUgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZvIGNvbnRlbnQgKCVpKSAtICVzIiwgbV9zcWxpdGVE
Qi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVD
b21tYW5kKCJEUk9QIFRBQkxFIE9iamVjdFN0b3JlSW5mbyIpKSB7CisgICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBPYmplY3RTdG9yZUluZm8iX3MpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRyb3AgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZv
IHRhYmxlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfT2Jq
ZWN0U3RvcmVJbmZvIFJFTkFNRSBUTyBPYmplY3RTdG9yZUluZm8iKSkgeworICAgIGlmICghbV9z
cWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX09iamVjdFN0b3JlSW5m
byBSRU5BTUUgVE8gT2JqZWN0U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IE9iamVjdFN0b3JlSW5mbyB0YWJsZSAoJWkpIC0gJXMi
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KQEAgLTczMyw3ICs3MTUsNyBAQCBi
b29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRh
dGUoY29uc3QgSGFzaE1hcDxzdGQ6OgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KGRhdGFiYXNlKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgaWYgKCFkYXRhYmFz
ZS5leGVjdXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhJbmZvIl9z
KSkpIHsKKyAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kU2xvdyhpbmRleEluZm9UYWJs
ZVNjaGVtYSgiX1RlbXBfSW5kZXhJbmZvIl9zKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJFcnJv
ciBjcmVhdGluZyBfVGVtcF9JbmRleEluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
ZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTc3OCwxMiArNzYwLDEyIEBAIGJvb2wgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXhJbmZvVGFibGVGb3JJRFVwZGF0ZShjb25zdCBIYXNo
TWFwPHN0ZDo6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKCJEUk9QIFRBQkxFIEluZGV4SW5mbyIpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5leGVj
dXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBJbmRleEluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiRXJyb3IgZHJvcHBpbmcgZXhpc3RpbmcgSW5kZXhJbmZvIHRhYmxlICglaSkgLSAlcyIsIGRh
dGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJB
TFRFUiBUQUJMRSBfVGVtcF9JbmRleEluZm8gUkVOQU1FIFRPIEluZGV4SW5mbyIpKSB7CisgICAg
aWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfSW5kZXhJbmZv
IFJFTkFNRSBUTyBJbmRleEluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgcmVu
YW1pbmcgX1RlbXBfSW5kZXhJbmZvIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC03OTgsNyArNzgwLDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBkYXRlKGNvbnN0IEhhc2hNYXA8c3QKICAgICBTUUxp
dGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihkYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVn
aW4oKTsKIAotICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNU
YWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZFNsb3codjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhS
ZWNvcmRzIikpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgY3JlYXRpbmcgX1RlbXBfSW5k
ZXhSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC04NDIsMTIgKzgyNCwxMiBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWln
cmF0ZUluZGV4UmVjb3Jkc1RhYmxlRm9ySURVcGRhdGUoY29uc3QgSGFzaE1hcDxzdAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJM
RSBJbmRleFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkRS
T1AgVEFCTEUgSW5kZXhSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGRy
b3BwaW5nIGV4aXN0aW5nIEluZGV4UmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBkYXRhYmFzZS5s
YXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFC
TEUgX1RlbXBfSW5kZXhSZWNvcmRzIFJFTkFNRSBUTyBJbmRleFJlY29yZHMiKSkgeworICAgIGlm
ICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX0luZGV4UmVjb3Jk
cyBSRU5BTUUgVE8gSW5kZXhSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkVycm9y
IHJlbmFtaW5nIHRlbXBvcmFyeSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJh
c2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggZjI4OTA4Y2E1MTVlN2I5
YjJmZmY4NDg4YzAwNmQyYjBlODFiYmY1Ny4uMDU2N2VhOWIzNmMyYzY0MTg0MmY3Mzc2OWNkNmMy
MzA4YjdmOGRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
c3FsKQogICAgIEFTU0VSVCghbV9jdXJyZW50VXBwZXJLZXkuaXNOdWxsKCkpOwogICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpKTsKIAotICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5wcmVw
YXJlSGVhcFN0YXRlbWVudChzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5wcmVwYXJlSGVhcFN0YXRlbWVudFNs
b3coc3FsKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAocHJlcGFyZS9pZCkgLSAnJXMnIiwgbV90cmFu
c2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0MSw3ICszNDEsNyBAQCBib29sIFNRTGl0ZUlE
QkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKIAog
ICAgIGF1dG8mIGRhdGFiYXNlID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+
ZGF0YWJhc2UoKTsKICAgICBpZiAoIW1fcHJlSW5kZXhTdGF0ZW1lbnQpIHsKLSAgICAgICAgYXV0
byBwcmVJbmRleFN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50KGJ1aWxk
UHJlSW5kZXhTdGF0ZW1lbnQoaXNEaXJlY3Rpb25OZXh0KCkpKTsKKyAgICAgICAgYXV0byBwcmVJ
bmRleFN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhidWlsZFBy
ZUluZGV4U3RhdGVtZW50KGlzRGlyZWN0aW9uTmV4dCgpKSk7CiAgICAgICAgIGlmICghcHJlSW5k
ZXhTdGF0ZW1lbnQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHByZXBhcmUg
cHJlIHN0YXRlbWVudCAtICclcyciLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCmluZGV4IGU3NGUyOGY1YjllNWY3OWZjNWQ1Y2QwY2U3NjZjYTBkZGYx
YmY0NzguLjY2NjQzM2I5ODczZWU4MjUzM2U3MmY0NjNlZmI2NTU5NTBmZGNiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgc3RhdGljIFN0cmluZyBmb3JtYXRFcnJvck1lc3NhZ2UoY29uc3QgY2hhciog
bWVzc2FnZSwgaW50IHNxbGl0ZUVycm9yQ29kZSwgY29uc3QKIAogc3RhdGljIGJvb2wgc2V0VGV4
dFZhbHVlSW5EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVwYXJl
U3RhdGVtZW50KHF1ZXJ5KTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBhcmVTdGF0ZW1l
bnRTbG93KHF1ZXJ5KTsKICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzZXQgdmFsdWUgaW4gZGF0YWJhc2UgKCVz
KSIsIHF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0YXRpYyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXRlRGF0
YWJhc2UmIGRiLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zCiAKIHN0YXRpYyBib29sIHJldHJp
ZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmlu
ZyYgcXVlcnksIFN0cmluZyYgcmVzdWx0U3RyaW5nKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0g
ZGIucHJlcGFyZVN0YXRlbWVudChxdWVyeSk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVw
YXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJFcnJvciAoJWkpIHByZXBhcmluZyBzdGF0ZW1lbnQgdG8gcmVhZCB0ZXh0IHJl
c3VsdCBmcm9tIGRhdGFiYXNlICglcykiLCBzdGF0ZW1lbnQuZXJyb3IoKSwgcXVlcnkuYXNjaWko
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzAsNyArMzcwLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxk
U2V0VmVyc2lvbkluTmV3RGF0YWIKICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50
YWJsZUV4aXN0cyh0YWJsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgbV9uZXcgPSB0cnVlOwog
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJD
UkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFsdWUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRh
YmFzZS5leGVjdXRlQ29tbWFuZFNsb3coIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAo
a2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUg
dG8gb3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0
ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDc1OTVm
OTA2YjA4ZWQ1ZDQ5NDM2M2M1MTlmZDc2MjA4ZGFmZjdhZGYuLmY2ODRmM2ExYTEyNTJmYzQ1M2Qz
YTY4NjU5MGU0NWVmNWE5MWM2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEyNywxNCArMTI3LDE0IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlv
bkFjdGlvbiBjcmVhdGVBY3Rpb24pCiAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hl
Y2tzKCk7CiAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIk9yaWdpbnMiKSkgewot
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmln
aW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdF
UiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklR
VUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKTsiX3MpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogYW5kIGhlcmUKICAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlIik7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIkRhdGFiYXNlcyIp
KSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IERhdGFiYXNlcyAoZ3VpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIG9yaWdp
biBURVhULCBuYW1lIFRFWFQsIGRpc3BsYXlOYW1lIFRFWFQsIGVzdGltYXRlZFNpemUgSU5URUdF
UiwgcGF0aCBURVhUKTsiKSkgeworICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkNSRUFURSBUQUJMRSBEYXRhYmFzZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRP
SU5DUkVNRU5ULCBvcmlnaW4gVEVYVCwgbmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3Rp
bWF0ZWRTaXplIElOVEVHRVIsIHBhdGggVEVYVCk7Il9zKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IGFuZCBoZXJlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgRGF0
YWJhc2VzIHRhYmxlIik7CiAgICAgICAgIH0KQEAgLTEyNjcsMTUgKzEyNjcsMTUgQEAgYm9vbCBE
YXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIEVYQ0xVU0lWRSBUUkFOU0FDVElPTjsiKSkKKyAgICBp
ZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBFWENMVVNJVkUgVFJBTlNBQ1RJT047
Il9zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2Ug
aG9sZCB0aGUgZXhjbHVzaXZlIGxvY2sgdG8gdGhpcyBmaWxlLgogICAgIC8vIENoZWNrIHRoYXQg
dGhlIGRhdGFiYXNlIGRvZXNuJ3QgY29udGFpbiBhbnkgdGFibGVzLgotICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0
eXBlPSd0YWJsZSc7IikpCisgICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiU0VMRUNU
IG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJzsiX3MpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIFRS
QU5TQUNUSU9OOyIpOworICAgIGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDT01NSVQgVFJBTlNB
Q1RJT047Il9zKTsKIAogICAgIGRhdGFiYXNlLmNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAppbmRleCA5YjE5MGNh
YTk2M2U1YTFhNzUyYWQ5ZWYyNDYwNTFjODQ2MmVhMzE0Li4xNDc5OGQ5NzU0ZDJiOGY5NjNhZjAx
YjU2MzZiMDhmZDI3YTM1NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBTUUxT
dGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UmIGRiKQogCiAgICAgU1FMaXRlRGF0YWJhc2UmIGRh
dGFiYXNlID0gZGIuc3FsaXRlRGF0YWJhc2UoKTsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudChtX3N0YXRlbWVudCk7CisgICAgYXV0byBzdGF0ZW1lbnQg
PSBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtX3N0YXRlbWVudCk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJVbmFibGUgdG8gdmVyaWZ5IGNv
cnJlY3RuZXNzIG9mIHN0YXRlbWVudCAlcyAtIGVycm9yICVpICglcykiLCBtX3N0YXRlbWVudC5h
c2NpaSgpLmRhdGEoKSwgc3RhdGVtZW50LmVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgaWYgKHN0YXRlbWVudC5lcnJvcigpID09IFNRTElURV9JTlRFUlJVUFQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAppbmRleCAwOTc0ODg5MmQ2YWQ3YjA4M2M2YTk0YTQyZjYyNjkzZWNi
YjFiMTc1Li4yYjBhNjUzNmY5NGUzNDEzZTM1MzYyYmQzNGZmYjE1MmU3NjU4MTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx3dGYvVVVJRC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMyLDE1ICs1MzMsMTQgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIG8KICAgICByZXR1cm4gZXhlY3V0ZVN0YXRlbWVudCh1cGRhdGVTdGF0ZW1l
bnQudmFsdWUoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmV4ZWN1dGVT
UUxDb21tYW5kKGNvbnN0IFN0cmluZyYgc3FsKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6ZXhlY3V0ZVNRTENvbW1hbmQoQVNDSUlMaXRlcmFsIHNxbCkKIHsKICAgICBBU1NFUlQoU1FM
aXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgQVNT
RVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwogICAgIAogICAgIGJvb2wgcmVzdWx0ID0gbV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZChzcWwpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBMT0df
RVJST1IoIkFwcGxpY2F0aW9uIENhY2hlIFN0b3JhZ2U6IGZhaWxlZCB0byBleGVjdXRlIHN0YXRl
bWVudCBcIiVzXCIgZXJyb3IgXCIlc1wiIiwgCi0gICAgICAgICAgICAgICAgICBzcWwudXRmOCgp
LmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19FUlJPUigi
QXBwbGljYXRpb24gQ2FjaGUgU3RvcmFnZTogZmFpbGVkIHRvIGV4ZWN1dGUgc3RhdGVtZW50IFwi
JXNcIiBlcnJvciBcIiVzXCIiLCBzcWwuY2hhcmFjdGVycygpLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01NjcsMTEgKzU2Nyw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHNldERhdGFiYXNlVmVyc2lvbihtX2RhdGFiYXNlKTsKICAgICBzZXRE
YXRhYmFzZVZlcnNpb24uYmVnaW4oKTsKIAotICAgIGNoYXIgdXNlclZlcnNpb25TUUxbMzJdOwot
ICAgIGludCB1bnVzZWROdW1CeXRlcyA9IHNucHJpbnRmKHVzZXJWZXJzaW9uU1FMLCBzaXplb2Yo
dXNlclZlcnNpb25TUUwpLCAiUFJBR01BIHVzZXJfdmVyc2lvbj0lZCIsIHNjaGVtYVZlcnNpb24p
OwotICAgIEFTU0VSVF9VTlVTRUQodW51c2VkTnVtQnl0ZXMsIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKHVzZXJWZXJzaW9uU1FMKSkgPj0gdW51c2VkTnVtQnl0ZXMpOwotCi0gICAgYXV0byBzdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQodXNlclZlcnNpb25TUUwpOworICAg
IGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3Ry
aW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSUiLCBzY2hlbWFWZXJzaW9uKSk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTYwNCwxOCArNjAwLDE4IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9l
c05vdEV4aXN0KQogICAgIAogICAgIC8vIENyZWF0ZSB0YWJsZXMKICAgICBleGVjdXRlU1FMQ29t
bWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVHcm91cHMgKGlkIElOVEVHRVIg
UFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgIgotICAgICAgICAgICAgICAgICAgICAgICJtYW5p
ZmVzdEhvc3RIYXNoIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbWFuaWZlc3RV
UkwgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgbmV3ZXN0Q2FjaGUgSU5URUdFUiwgb3Jp
Z2luIFRFWFQpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNo
ZUdyb3VwIElOVEVHRVIsIHNpemUgSU5URUdFUikiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzICh3aWxkY2FyZCBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3RIb3N0SGFzaCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG1hbmlmZXN0VVJMIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIEZBSUwsIG5ld2VzdENhY2hlIElOVEVHRVIsIG9yaWdpbiBURVhUKSJfcyk7Cisg
ICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlcyAo
aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBjYWNoZUdyb3VwIElOVEVHRVIs
IHNpemUgSU5URUdFUikiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUg
SUYgTk9UIEVYSVNUUyBDYWNoZVdoaXRlbGlzdFVSTHMgKHVybCBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3Mp
OworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNo
ZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNhcmQgSU5URUdFUiBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9z
KTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgRmFs
bGJhY2tVUkxzIChuYW1lc3BhY2UgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBmYWxs
YmFja1VSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKLSAgICAgICAgICAgICAg
ICAgICAgICAiY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOwotICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZUVudHJp
ZXMgKGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdHlwZSBJTlRFR0VS
LCByZXNvdXJjZSBJTlRFR0VSIE5PVCBOVUxMKSIpOworICAgICAgICAgICAgICAgICAgICAgICJj
YWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zKTsKKyAgICBleGVjdXRl
U1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRyaWVzIChjYWNo
ZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHR5cGUgSU5URUdFUiwgcmVzb3Vy
Y2UgSU5URUdFUiBOT1QgTlVMTCkiX3MpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZVJlc291cmNlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtF
WSBBVVRPSU5DUkVNRU5ULCB1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCi0g
ICAgICAgICAgICAgICAgICAgICAgInN0YXR1c0NvZGUgSU5URUdFUiBOT1QgTlVMTCwgcmVzcG9u
c2VVUkwgVEVYVCBOT1QgTlVMTCwgbWltZVR5cGUgVEVYVCwgdGV4dEVuY29kaW5nTmFtZSBURVhU
LCBoZWFkZXJzIFRFWFQsIGRhdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIp
OwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNo
ZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBkYXRh
IEJMT0IsIHBhdGggVEVYVCkiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxF
IElGIE5PVCBFWElTVFMgRGVsZXRlZENhY2hlUmVzb3VyY2VzIChpZCBJTlRFR0VSIFBSSU1BUlkg
S0VZIEFVVE9JTkNSRU1FTlQsIHBhdGggVEVYVCkiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgi
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIElHTk9SRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
KSIpOworICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXNDb2RlIElOVEVHRVIgTk9UIE5VTEws
IHJlc3BvbnNlVVJMIFRFWFQgTk9UIE5VTEwsIG1pbWVUeXBlIFRFWFQsIHRleHRFbmNvZGluZ05h
bWUgVEVYVCwgaGVhZGVycyBURVhULCBkYXRhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVY
SVNUUyBDYWNoZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVN
RU5ULCBkYXRhIEJMT0IsIHBhdGggVEVYVCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJD
UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBEZWxldGVkQ2FjaGVSZXNvdXJjZXMgKGlkIElOVEVH
RVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgcGF0aCBURVhUKSJfcyk7CisgICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIE9yaWdpbnMgKG9yaWdpbiBU
RVhUIFVOSVFVRSBPTiBDT05GTElDVCBJR05PUkUsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCkiX3MpOwogCiAgICAgLy8gV2hlbiBhIGNhY2hlIGlzIGRlbGV0ZWQsIGFs
bCBpdHMgZW50cmllcyBhbmQgaXRzIGFsbG93bGlzdCBzaG91bGQgYmUgZGVsZXRlZC4KICAgICBl
eGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRSSUdHRVIgSUYgTk9UIEVYSVNUUyBDYWNoZURlbGV0
ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlcyIKQEAgLTYyNCwxOSArNjIwLDE5IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIENhY2hlV2hpdGVsaXN0
VVJMcyBXSEVSRSBjYWNoZSA9IE9MRC5pZDsiCiAgICAgICAgICAgICAgICAgICAgICAgIiAgREVM
RVRFIEZST00gQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgV0hFUkUgY2FjaGUgPSBPTEQu
aWQ7IgogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9NIEZhbGxiYWNrVVJMcyBX
SEVSRSBjYWNoZSA9IE9MRC5pZDsiCi0gICAgICAgICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAiIEVORCJfcyk7CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgZW50
cnkgaXMgZGVsZXRlZCwgaXRzIHJlc291cmNlIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQuCiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUUklHR0VSIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRy
eURlbGV0ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlRW50cmllcyIKICAgICAgICAgICAgICAgICAg
ICAgICAiIEZPUiBFQUNIIFJPVyBCRUdJTiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxF
VEUgRlJPTSBDYWNoZVJlc291cmNlcyBXSEVSRSBpZCA9IE9MRC5yZXNvdXJjZTsiCi0gICAgICAg
ICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAiIEVORCJfcyk7
CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgcmVzb3VyY2UgaXMgZGVsZXRlZCwgaXRzIGRhdGEgYmxv
YiBzaG91bGQgYWxzbyBiZSBkZWxldGVkLgogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUg
VFJJR0dFUiBJRiBOT1QgRVhJU1RTIENhY2hlUmVzb3VyY2VEZWxldGVkIEFGVEVSIERFTEVURSBP
TiBDYWNoZVJlc291cmNlcyIKICAgICAgICAgICAgICAgICAgICAgICAiIEZPUiBFQUNIIFJPVyBC
RUdJTiIKICAgICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBDYWNoZVJlc291cmNl
RGF0YSBXSEVSRSBpZCA9IE9MRC5kYXRhOyIKLSAgICAgICAgICAgICAgICAgICAgICAiIEVORCIp
OworICAgICAgICAgICAgICAgICAgICAgICIgRU5EIl9zKTsKICAgICAKICAgICAvLyBXaGVuIGEg
Y2FjaGUgcmVzb3VyY2UgaXMgZGVsZXRlZCwgaWYgaXQgY29udGFpbnMgYSBub24tZW1wdHkgcGF0
aCwgdGhhdCBwYXRoIHNob3VsZAogICAgIC8vIGJlIGFkZGVkIHRvIHRoZSBEZWxldGVkQ2FjaGVS
ZXNvdXJjZXMgdGFibGUgc28gdGhlIGZsYXQgZmlsZSBhdCB0aGF0IHBhdGggY2FuCkBAIC02NDUs
NyArNjQxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKGJv
b2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgIiBGT1IgRUFD
SCBST1ciCiAgICAgICAgICAgICAgICAgICAgICAgIiBXSEVOIE9MRC5wYXRoIE5PVCBOVUxMIEJF
R0lOIgogICAgICAgICAgICAgICAgICAgICAgICIgIElOU0VSVCBJTlRPIERlbGV0ZWRDYWNoZVJl
c291cmNlcyAocGF0aCkgdmFsdWVzIChPTEQucGF0aCk7IgotICAgICAgICAgICAgICAgICAgICAg
ICIgRU5EIik7CisgICAgICAgICAgICAgICAgICAgICAgIiBFTkQiX3MpOwogfQogCiBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYg
c3RhdGVtZW50KQpAQCAtMTI1Niw5ICsxMjUyLDkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZW1wdHkoKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gQ2xlYXIgY2FjaGUg
Z3JvdXBzLCBjYWNoZXMsIGNhY2hlIHJlc291cmNlcywgYW5kIG9yaWdpbnMuCi0gICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENhY2hlR3JvdXBzIik7Ci0gICAgZXhlY3V0ZVNRTENv
bW1hbmQoIkRFTEVURSBGUk9NIENhY2hlcyIpOwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJERUxF
VEUgRlJPTSBPcmlnaW5zIik7CisgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENh
Y2hlR3JvdXBzIl9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gQ2FjaGVz
Il9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gT3JpZ2lucyJfcyk7CiAg
ICAgCiAgICAgLy8gQ2xlYXIgdGhlIHN0b3JhZ2UgSURzIGZvciB0aGUgY2FjaGVzIGluIG1lbW9y
eS4KICAgICAvLyBUaGUgY2FjaGVzIHdpbGwgc3RpbGwgd29yaywgYnV0IGNhY2hlZCByZXNvdXJj
ZXMgd2lsbCBub3QgYmUgc2F2ZWQgdG8gZGlzayAKQEAgLTE0MzksNyArMTQzNSw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNoZWNrRm9yRGVsZXRlZFJlc291cmNlcygpCiAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgIH0gd2hpbGUgKHNlbGVj
dFBhdGhzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVyk7CiAgICAgCi0gICAgZXhlY3V0ZVNRTENvbW1h
bmQoIkRFTEVURSBGUk9NIERlbGV0ZWRDYWNoZVJlc291cmNlcyIpOworICAgIGV4ZWN1dGVTUUxD
b21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiX3MpOwogfQogICAgIAog
bG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFTaXplKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgKaW5kZXggMDMzMDJlN2IwODRhMjAyYmFmMWUzYmNiNTBjZWM5ZDJkMDVlNzEz
ZC4uNmJhMGE5OTdiZWIyYTdiNDM1M2FlNTViNDI0YzQ4ODJkZjQ3ZWFlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbkRhdGFiYXNl
KGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgIAogICAgIGJvb2wgZXhlY3V0ZVN0YXRl
bWVudChTUUxpdGVTdGF0ZW1lbnQmKTsKLSAgICBib29sIGV4ZWN1dGVTUUxDb21tYW5kKGNvbnN0
IFN0cmluZyYpOworICAgIGJvb2wgZXhlY3V0ZVNRTENvbW1hbmQoQVNDSUlMaXRlcmFsKTsKIAog
ICAgIHZvaWQgY2hlY2tGb3JNYXhTaXplUmVhY2hlZCgpOwogICAgIHZvaWQgY2hlY2tGb3JEZWxl
dGVkUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCAyYmYzOTEyYmQ0YjcxNzIyM2I0MGNjNDljMTY2
YzFjOTkwNTUyNTMxLi40MTY4MzJjZTU5MGNlNzZkMDMwOTA4YzJhNTA1Mjg5NzEzZjgxY2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgIiAg
aHR0cG9ubHkgSU5URUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIlwKICAgICAiICBzZWN1cmUgSU5U
RUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsIlwKICAgICAiICBsYXN0dXBkYXRlZCBJTlRFR0VSIE5P
VCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsICJcCi0gICAgIiAgVU5JUVVFKG5hbWUs
IGRvbWFpbiwgcGF0aCkpOyIKKyAgICAiICBVTklRVUUobmFtZSwgZG9tYWluLCBwYXRoKSk7Il9z
CiAjZGVmaW5lIENSRUFURV9ET01BSU5fSU5ERVhfU1FMIFwKLSAgICAiQ1JFQVRFIElOREVYIElG
IE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyIKKyAgICAiQ1JFQVRF
IElOREVYIElGIE5PVCBFWElTVFMgZG9tYWluX2luZGV4IE9OIENvb2tpZShkb21haW4pOyJfcwog
I2RlZmluZSBDUkVBVEVfUEFUSF9JTkRFWF9TUUwgXAotICAgICJDUkVBVEUgSU5ERVggSUYgTk9U
IEVYSVNUUyBwYXRoX2luZGV4IE9OIENvb2tpZShwYXRoKTsiCisgICAgIkNSRUFURSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIHBhdGhfaW5kZXggT04gQ29va2llKHBhdGgpOyJfcwogI2RlZmluZSBTRUxF
Q1RfQUxMX0RPTUFJTlNfU1FMIFwKLSAgICAiU0VMRUNUIERJU1RJTkNUIGRvbWFpbiBGUk9NIENv
b2tpZTsiCisgICAgIlNFTEVDVCBESVNUSU5DVCBkb21haW4gRlJPTSBDb29raWU7Il9zCiAjZGVm
aW5lIENIRUNLX0VYSVNUU19DT09LSUVfU1FMIFwKLSAgICAiU0VMRUNUIGRvbWFpbiBGUk9NIENv
b2tpZSBXSEVSRSAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSk7IgorICAgICJTRUxF
Q1QgZG9tYWluIEZST00gQ29va2llIFdIRVJFICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9C
ID8pKTsiX3MKICNkZWZpbmUgQ0hFQ0tfRVhJU1RTX0hUVFBPTkxZX0NPT0tJRV9TUUwgXAotICAg
ICJTRUxFQ1QgbmFtZSBGUk9NIENvb2tpZSBXSEVSRSAobmFtZSA9ID8pIEFORCAoZG9tYWluID0g
PykgQU5EIChwYXRoID0gPykgQU5EIChodHRwb25seSA9IDEpOyIKKyAgICAiU0VMRUNUIG5hbWUg
RlJPTSBDb29raWUgV0hFUkUgKG5hbWUgPSA/KSBBTkQgKGRvbWFpbiA9ID8pIEFORCAocGF0aCA9
ID8pIEFORCAoaHR0cG9ubHkgPSAxKTsiX3MKICNkZWZpbmUgU0VUX0NPT0tJRV9TUUwgXAogICAg
ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIENvb2tpZSAobmFtZSwgdmFsdWUsIGRvbWFpbiwgcGF0
aCwgZXhwaXJlcywgc2l6ZSwgc2Vzc2lvbiwgaHR0cG9ubHksIHNlY3VyZSkgIlwKLSAgICAiVkFM
VUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KTsiCisgICAgIlZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPywgPywgPyk7Il9zCiAjZGVmaW5lIERFTEVURV9DT09LSUVfQllfTkFNRV9ET01B
SU5fUEFUSF9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgbmFtZSA9ID8gQU5E
IGRvbWFpbiA9ID8gQU5EIHBhdGggPSA/OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJF
IG5hbWUgPSA/IEFORCBkb21haW4gPSA/IEFORCBwYXRoID0gPzsiX3MKICNkZWZpbmUgREVMRVRF
X0NPT0tJRV9CWV9OQU1FX0RPTUFJTl9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hF
UkUgbmFtZSA9ID8gQU5EIGRvbWFpbiA9ID87IgorICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hF
UkUgbmFtZSA9ID8gQU5EIGRvbWFpbiA9ID87Il9zCiAjZGVmaW5lIERFTEVURV9BTExfU0VTU0lP
Tl9DT09LSUVfU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAx
OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIHNlc3Npb24gPSAxOyJfcwogI2RlZmlu
ZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2ll
IFdIRVJFIGRvbWFpbiA9ID8gOyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIGRvbWFp
biA9ID8gOyJfcwogI2RlZmluZSBERUxFVEVfQ09PS0lFU19CWV9ET01BSU5fRVhDRVBUX0hUVFBf
T05MWV9TUUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgKGRvbWFpbiA9ID8pIEFO
RCAoaHR0cG9ubHkgPSAwKTsiCisgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSAoZG9tYWlu
ID0gPykgQU5EIChodHRwb25seSA9IDApOyJfcwogI2RlZmluZSBERUxFVEVfQUxMX0NPT0tJRV9T
UUwgXAotICAgICJERUxFVEUgRlJPTSBDb29raWU7IgorICAgICJERUxFVEUgRlJPTSBDb29raWU7
Il9zCiAKIAogLy8gSWYgdGhlIGRhdGFiYXNlIHNjaGVtYSBpcyB1cGRhdGVkOgpAQCAtMTIzLDcg
KzEyMyw3IEBAIGJvb2wgQ29va2llSmFyREI6Om9wZW5EYXRhYmFzZSgpCiAgICAgaWYgKGV4aXN0
c0RhdGFiYXNlRmlsZSkgewogICAgICAgICBpZiAobV9kYXRhYmFzZS5vcGVuKG1fZGF0YWJhc2VQ
YXRoKSkgewogICAgICAgICAgICAgaWYgKGNoZWNrRGF0YWJhc2VWYWxpZGl0eSgpKQotICAgICAg
ICAgICAgICAgIGV4ZWN1dGVTcWwoREVMRVRFX0FMTF9TRVNTSU9OX0NPT0tJRV9TUUwpOworICAg
ICAgICAgICAgICAgIGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVt
ZW50KERFTEVURV9BTExfU0VTU0lPTl9DT09LSUVfU1FMKSk7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLyBkZWxldGUgZGF0YWJhc2UgYW5kIHRyeSB0byByZS1jcmVhdGUg
YWdhaW4KICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkNvb2tpZSBkYXRhYmFzZSB2YWxpZGl0
eSBjaGVjayBmYWlsZWQsIGF0dGVtcHRpbmcgdG8gcmVjcmVhdGUgdGhlIGRhdGFiYXNlIik7CkBA
IC0xNTQsNyArMTU0LDkgQEAgYm9vbCBDb29raWVKYXJEQjo6b3BlbkRhdGFiYXNlKCkKICAgICB2
ZXJpZnlTY2hlbWFWZXJzaW9uKCk7CiAKICAgICBpZiAoIWV4aXN0c0RhdGFiYXNlRmlsZSB8fCAh
bV9kYXRhYmFzZS50YWJsZUV4aXN0cygiQ29va2llIikpIHsKLSAgICAgICAgYm9vbCBvayA9IGV4
ZWN1dGVTcWwoQ1JFQVRFX0NPT0tJRV9UQUJMRV9TUUwpICYmIGV4ZWN1dGVTcWwoQ1JFQVRFX0RP
TUFJTl9JTkRFWF9TUUwpICYmIGV4ZWN1dGVTcWwoQ1JFQVRFX1BBVEhfSU5ERVhfU1FMKTsKKyAg
ICAgICAgYm9vbCBvayA9IGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KENSRUFURV9DT09LSUVfVEFCTEVfU1FMKSkKKyAgICAgICAgICAgICYmIGV4ZWN1dGVT
UUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KENSRUFURV9ET01BSU5fSU5E
RVhfU1FMKSkKKyAgICAgICAgICAgICYmIGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KENSRUFURV9QQVRIX0lOREVYX1NRTCkpOwogCiAgICAgICAgIGlmICgh
b2spIHsKICAgICAgICAgICAgIC8vIGdpdmUgdXAgY3JlYXRlIGRhdGFiYXNlIGF0IHRoaXMgdGlt
ZSAoYWxsIGNvb2tpZXMgb24gcmVxdWVzdC9yZXNwb25zZSBhcmUgaWdub3JlZCkKQEAgLTIxMSw3
ICsyMTMsNyBAQCB2b2lkIENvb2tpZUphckRCOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKCkKICAgICB9
CiAKICAgICAvLyBVcGRhdGUgdmVyc2lvbgotICAgIGV4ZWN1dGVTcWwobWFrZVN0cmluZygiUFJB
R01BIHVzZXJfdmVyc2lvbj0iLCBzY2hlbWFWZXJzaW9uKSk7CisgICAgZXhlY3V0ZVNRTFN0YXRl
bWVudChtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlBSQUdNQSB1
c2VyX3ZlcnNpb249Iiwgc2NoZW1hVmVyc2lvbikpKTsKIH0KIAogdm9pZCBDb29raWVKYXJEQjo6
ZGVsZXRlQWxsVGFibGVzKCkKQEAgLTYyMSwxMCArNjIzLDEwIEBAIGJvb2wgQ29va2llSmFyREI6
OmRlbGV0ZUFsbENvb2tpZXMoKQogICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2Uu
aXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBleGVjdXRlU3Fs
KERFTEVURV9BTExfQ09PS0lFX1NRTCk7CisgICAgcmV0dXJuIGV4ZWN1dGVTUUxTdGF0ZW1lbnQo
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KERFTEVURV9BTExfQ09PS0lFX1NRTCkpOwogfQog
Ci12b2lkIENvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
c3FsKQordm9pZCBDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0YXRlbWVudChBU0NJSUxpdGVy
YWwgc3FsKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlSGVhcFN0
YXRlbWVudChzcWwpOwogICAgIEFTU0VSVChzdGF0ZW1lbnQpOwpAQCAtNjM5LDkgKzY0MSw4IEBA
IFNRTGl0ZVN0YXRlbWVudCYgQ29va2llSmFyREI6OnByZXBhcmVkU3RhdGVtZW50KGNvbnN0IFN0
cmluZyYgc3FsKQogICAgIHJldHVybiAqc3RhdGVtZW50OwogfQogCi1ib29sIENvb2tpZUphckRC
OjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsKQorYm9vbCBDb29raWVKYXJEQjo6ZXhlY3V0
ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4mJiBzdGF0ZW1lbnQp
CiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoc3Fs
KTsKICAgICBpZiAoIXN0YXRlbWVudCAmJiAhY2hlY2tTUUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVu
dC5lcnJvcigpKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlICVzIGVy
cm9yOiAlcyIsIHNxbC5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKaW5kZXggN2MwZWE0N2VjZTRmZjBkNDcyY2U1OTVj
OTFlYTFjZmE5MGIyNWNhNy4uNDg0OWM2NjdjMmExMjg4NDFmZmIwNTc2YTY2OTBjNGQ4ZmQ0NWUy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmgKQEAgLTkzLDkgKzkzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZlcmlmeVNjaGVt
YVZlcnNpb24oKTsKICAgICB2b2lkIGRlbGV0ZUFsbFRhYmxlcygpOwogCi0gICAgdm9pZCBjcmVh
dGVQcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY3JlYXRlUHJlcGFy
ZVN0YXRlbWVudChBU0NJSUxpdGVyYWwpOwogICAgIFNRTGl0ZVN0YXRlbWVudCYgcHJlcGFyZWRT
dGF0ZW1lbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBleGVjdXRlU3FsKGNvbnN0IFN0cmlu
ZyYpOworICAgIGJvb2wgZXhlY3V0ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxTUUxpdGVTdGF0ZW1l
bnQsIGludD4mJik7CiAKICAgICBib29sIGRlbGV0ZUNvb2tpZUludGVybmFsKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAg
Ym9vbCBoYXNIdHRwT25seUNvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggOTljMmU1MmFmNDJjZjEwYjdlMWM1MDI2NmM3
ZTZlZjA1NTVhOGE3Ny4uMjAyNmZhMjMxMWE3ZTFhYzcwZmU3NjNjOTgyMzQ4YTY4NjZkMzUxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBA
IC0yOTMsNyArMjkzLDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0TWF4aW11bVNpemUoaW50
NjRfdCBzaXplKQogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAg
IGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJl
U3RhdGVtZW50KG1ha2VTdHJpbmcoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCA9ICIsIG5ld01heFBh
Z2VDb3VudCkpOworICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudFNsb3cobWFr
ZVN0cmluZygiUFJBR01BIG1heF9wYWdlX2NvdW50ID0gIiwgbmV3TWF4UGFnZUNvdW50KSk7CiAg
ICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IG1heGltdW0gc2l6ZSBvZiBkYXRhYmFzZSB0
byAlbGxpIGJ5dGVzIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihzaXplKSk7CiAKQEAgLTM1MSw3
ICszNTEsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjp0b3RhbFNpemUoKQogCiB2b2lkIFNR
TGl0ZURhdGFiYXNlOjpzZXRTeW5jaHJvbm91cyhTeW5jaHJvbm91c1ByYWdtYSBzeW5jKQogewot
ICAgIGV4ZWN1dGVDb21tYW5kKG1ha2VTdHJpbmcoIlBSQUdNQSBzeW5jaHJvbm91cyA9ICIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzeW5jKSkpOworICAgIGV4ZWN1dGVDb21tYW5kU2xvdyhtYWtl
U3RyaW5nKCJQUkFHTUEgc3luY2hyb25vdXMgPSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3lu
YykpKTsKIH0KIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0QnVzeVRpbWVvdXQoaW50IG1zKQpA
QCAtMzcwLDkgKzM3MCw5IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEJ1c3lIYW5kbGVyKGlu
dCgqaGFuZGxlcikodm9pZCosIGludCkpCiAgICAgICAgIExPRyhTUUxEYXRhYmFzZSwgIkJ1c3kg
aGFuZGxlciBzZXQgb24gbm9uLW9wZW4gZGF0YWJhc2UiKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRh
YmFzZTo6ZXhlY3V0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBxdWVyeSkKK2Jvb2wgU1FMaXRlRGF0
YWJhc2U6OmV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KQogewotICAgIGF1
dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudChxdWVyeSk7CisgICAgYXV0byBzdGF0ZW1l
bnQgPSBwcmVwYXJlU3RhdGVtZW50U2xvdyhxdWVyeSk7CiAgICAgcmV0dXJuIHN0YXRlbWVudCAm
JiBzdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCk7CiB9CiAKQEAgLTM4MiwxOSArMzgyLDE3IEBA
IGJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCBxdWVyeSkK
ICAgICByZXR1cm4gc3RhdGVtZW50ICYmIHN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKTsKIH0K
IAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6cmV0dXJuc0F0TGVhc3RPbmVSZXN1bHQoY29uc3QgU3Ry
aW5nJiBzcWwpCi17Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KHNxbCk7
Ci0gICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPnJldHVybnNBdExlYXN0T25lUmVz
dWx0KCk7Ci19Ci0KLWJvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3RzKGNvbnN0IFN0cmlu
ZyYgdGFibGVuYW1lKQorYm9vbCBTUUxpdGVEYXRhYmFzZTo6dGFibGVFeGlzdHMoY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUpCiB7CiAgICAgaWYgKCFpc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgbmFt
ZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICd0YWJsZScgQU5EIG5hbWUgPSAnIiAr
IHRhYmxlbmFtZSArICInOyJfcyk7Ci0gICAgcmV0dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQt
PnN0ZXAoKSA9PSBTUUxJVEVfUk9XOworICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRl
bWVudCgiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndGFibGUn
IEFORCBuYW1lID0gPzsiX3MpOworICAgIGlmICghc3RhdGVtZW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKHN0YXRlbWVudC0+YmluZFRleHQoMSwgdGFibGVOYW1lKSAhPSBTUUxJ
VEVfT0spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RhdGVtZW50LT5zdGVw
KCkgPT0gU1FMSVRFX1JPVzsKIH0KIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6Y2xlYXJBbGxUYWJs
ZXMoKQpAQCAtNDA5LDcgKzQwNyw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFi
bGVzKCkKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciB0YWJsZSA9IHRhYmxlcy5i
ZWdpbigpOyB0YWJsZSAhPSB0YWJsZXMuZW5kKCk7ICsrdGFibGUgKSB7CiAgICAgICAgIGlmICgq
dGFibGUgPT0gInNxbGl0ZV9zZXF1ZW5jZSIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKCFleGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSAiICsgKnRhYmxlKSkKKyAgICAgICAg
aWYgKCFleGVjdXRlQ29tbWFuZFNsb3coIkRST1AgVEFCTEUgIiArICp0YWJsZSkpCiAgICAgICAg
ICAgICBMT0coU1FMRGF0YWJhc2UsICJVbmFibGUgdG8gZHJvcCB0YWJsZSAlcyIsICgqdGFibGUp
LmFzY2lpKCkuZGF0YSgpKTsKICAgICB9CiB9CkBAIC02NzcsNyArNjc1LDcgQEAgc3RhdGljIEV4
cGVjdGVkPHNxbGl0ZTNfc3RtdCosIGludD4gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRlbWVudChT
UUxpdGVEYXRhYmFzZSYKICAgICByZXR1cm4gc3RhdGVtZW50OwogfQogCi1FeHBlY3RlZDxTUUxp
dGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVTdGF0ZW1lbnQoY29uc3Qg
U3RyaW5nJiBxdWVyeVN0cmluZykKK0V4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxp
dGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVudFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeVN0cmlu
ZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCku
dXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0gY29uc3RydWN0QW5kUHJlcGFyZVN0YXRl
bWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5sZW5ndGgoKSk7CkBAIC02OTgsNyArNjk2
LDcgQEAgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVw
YXJlU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBxdWUKICAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50
IHsgKnRoaXMsIHNxbFN0YXRlbWVudC52YWx1ZSgpIH07CiB9CiAKLUV4cGVjdGVkPFVuaXF1ZVJl
ZjxTUUxpdGVTdGF0ZW1lbnQ+LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRl
bWVudChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQorRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0
ZVN0YXRlbWVudD4sIGludD4gU1FMaXRlRGF0YWJhc2U6OnByZXBhcmVIZWFwU3RhdGVtZW50U2xv
dyhjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQogewogICAgIENTdHJpbmcgcXVlcnkgPSBxdWVy
eVN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKS51dGY4KCk7CiAgICAgYXV0byBzcWxTdGF0ZW1lbnQg
PSBjb25zdHJ1Y3RBbmRQcmVwYXJlU3RhdGVtZW50KCp0aGlzLCBxdWVyeS5kYXRhKCksIHF1ZXJ5
Lmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmgKaW5kZXggYzA0NWZlNTkzZDc5OWQ1MjA4MGRkYjkzOTZjNDkzNDIxM2U3Y2Q4MC4uMDlmNTkx
ZTFhZTQ0NTVlN2VkOTNkNTBkOTU4N2NlNTk0NGM0YmUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTYyLDEwICs2Miw4IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGFzdENoYW5nZXNDb3VudCgpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZChjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kU2xvdyhjb25zdCBTdHJpbmcmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGVDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7Ci0K
LSAgICBib29sIHJldHVybnNBdExlYXN0T25lUmVzdWx0KGNvbnN0IFN0cmluZyYpOwogICAgIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdGFibGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbFRhYmxlcygpOwpAQCAtNzQsOSArNzIsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgYm9vbCB0cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSBjb25zdCB7IHJl
dHVybiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzczsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRXhw
ZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+IHByZXBhcmVTdGF0ZW1lbnQoY29uc3QgU3RyaW5n
JiBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBp
bnQ+IHByZXBhcmVTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnkpOwogICAgIFdFQkNP
UkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50
KEFTQ0lJTGl0ZXJhbCBxdWVyeSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8VW5pcXVl
UmVmPFNRTGl0ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhlYXBTdGF0ZW1lbnQoY29uc3QgU3Ry
aW5nJiBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8VW5pcXVlUmVmPFNRTGl0
ZVN0YXRlbWVudD4sIGludD4gcHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYg
cXVlcnkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0
ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50KEFTQ0lJTGl0ZXJhbCBxdWVyeSk7CiAK
ICAgICAvLyBBYm9ydHMgdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9uLiBUaGlzIGlzIHRo
cmVhZCBzYWZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFu
c2FjdGlvbi5jcHAKaW5kZXggOTcxYmJhNTY3NDc0ZWI2ODk2Y2U1NjFjN2U2OTk3NjYwNGRkZTc4
Yy4uMDhlOWViNzNkYjI0YTA5MGE3YTA4MGMxYTgxNTY5MzE4ZTVhMjg1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCkBAIC02Miw5
ICs2Miw5IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKICAgICAgICAgU1FMaXRl
RGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwog
I2VuZGlmCiAgICAgICAgIGlmIChtX3JlYWRPbmx5KQotICAgICAgICAgICAgbV9pblByb2dyZXNz
ID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4iKTsKKyAgICAgICAgICAgIG1faW5Qcm9ncmVz
cyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIl9zKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4gSU1NRURJQVRF
Iik7CisgICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJ
TiBJTU1FRElBVEUiX3MpOwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0g
bV9pblByb2dyZXNzOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlmICghbV9p
blByb2dyZXNzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21t
aXQoKQogewogICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKICAgICAgICAgQVNTRVJUKG1fZGIubV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2luUHJvZ3Jlc3MgPSAhbV9kYi5leGVj
dXRlQ29tbWFuZCgiQ09NTUlUIik7CisgICAgICAgIG1faW5Qcm9ncmVzcyA9ICFtX2RiLmV4ZWN1
dGVDb21tYW5kKCJDT01NSVQiX3MpOwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzID0gbV9pblByb2dyZXNzOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGlm
ICghbV9pblByb2dyZXNzKQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9u
Ojpyb2xsYmFjaygpCiAgICAgLy8gYSBub24temVyby90cnVlIHJlc3VsdCAoaHR0cDovL3d3dy5z
cWxpdGUub3JnL2xhbmdfdHJhbnNhY3Rpb24uaHRtbCkuCiAgICAgaWYgKG1faW5Qcm9ncmVzcykg
ewogICAgICAgICBBU1NFUlQobV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk7Ci0gICAgICAg
IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIlJPTExCQUNLIik7CisgICAgICAgIG1fZGIuZXhlY3V0ZUNv
bW1hbmQoIlJPTExCQUNLIl9zKTsKICAgICAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7CiAgICAg
ICAgIG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAKaW5kZXggYTE5MzlhYWQxYjBjODZmMDM1ZGEwMDkyNWZmZWNmMTc5ZDk2N2Ri
YS4uM2RjMzg3MjdlNWMzMDA0MzYyYWFhNzZkNzdkZGUyNTkyMDdhYjQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBAIC0yMDQs
NyArMjA0LDcgQEAgYm9vbCBTZWFyY2hQb3B1cE1lbnVEQjo6b3BlbkRhdGFiYXNlKCkKIAogICAg
IGJvb2wgZGF0YWJhc2VWYWxpZGl0eSA9IHRydWU7CiAgICAgaWYgKCFleGlzdHNEYXRhYmFzZUZp
bGUgfHwgIW1fZGF0YWJhc2UudGFibGVFeGlzdHMoIlNlYXJjaCIpKQotICAgICAgICBkYXRhYmFz
ZVZhbGlkaXR5ID0gZGF0YWJhc2VWYWxpZGl0eSAmJiAoZXhlY3V0ZVNpbXBsZVNxbChjcmVhdGVT
ZWFyY2hUYWJsZVNRTCkgPT0gU1FMSVRFX0RPTkUpOworICAgICAgICBkYXRhYmFzZVZhbGlkaXR5
ID0gZGF0YWJhc2VWYWxpZGl0eSAmJiAoZXhlY3V0ZVNRTFN0YXRlbWVudChtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQoY3JlYXRlU2VhcmNoVGFibGVTUUwpKSA9PSBTUUxJVEVfRE9ORSk7CiAK
ICAgICBpZiAoIWRhdGFiYXNlVmFsaWRpdHkpIHsKICAgICAgICAgLy8gZ2l2ZSB1cCBjcmVhdGUg
ZGF0YWJhc2UgYXQgdGhpcyB0aW1lIChzZWFyY2ggdGVybXMgd2lsbCBub3QgYmUgc2F2ZWQpCkBA
IC0yNTQsNyArMjU0LDggQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6dmVyaWZ5U2NoZW1hVmVy
c2lvbigpCiAgICAgfQogCiAgICAgLy8gVXBkYXRlIHZlcnNpb24KLSAgICBleGVjdXRlU2ltcGxl
U3FsKG1ha2VTdHJpbmcoIlBSQUdNQSB1c2VyX3ZlcnNpb249Iiwgc2NoZW1hVmVyc2lvbikpOwor
CisgICAgZXhlY3V0ZVNRTFN0YXRlbWVudChtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93
KG1ha2VTdHJpbmcoIlBSQUdNQSB1c2VyX3ZlcnNpb249Iiwgc2NoZW1hVmVyc2lvbikpKTsKIH0K
IAogdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6Y2hlY2tTUUxpdGVSZXR1cm5Db2RlKGludCBhY3R1
YWwpCkBAIC0yNzEsMTYgKzI3MiwxNSBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudURCOjpjaGVja1NR
TGl0ZVJldHVybkNvZGUoaW50IGFjdHVhbCkKICAgICB9CiB9CiAKLWludCBTZWFyY2hQb3B1cE1l
bnVEQjo6ZXhlY3V0ZVNpbXBsZVNxbChjb25zdCBTdHJpbmcmIHNxbCwgYm9vbCBpZ25vcmVFcnJv
cikKK2ludCBTZWFyY2hQb3B1cE1lbnVEQjo6ZXhlY3V0ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxT
UUxpdGVTdGF0ZW1lbnQsIGludD4mJiBzdGF0ZW1lbnQpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoc3FsKTsKICAgICBpZiAoIXN0YXRlbWVudCkg
ewogICAgICAgICBjaGVja1NRTGl0ZVJldHVybkNvZGUoc3RhdGVtZW50LmVycm9yKCkpOwogICAg
ICAgICByZXR1cm4gc3RhdGVtZW50LmVycm9yKCk7CiAgICAgfQogCiAgICAgaW50IHJldCA9IHN0
YXRlbWVudC0+c3RlcCgpOwotICAgIGlmIChyZXQgIT0gU1FMSVRFX09LICYmIHJldCAhPSBTUUxJ
VEVfRE9ORSAmJiByZXQgIT0gU1FMSVRFX1JPVyAmJiAhaWdub3JlRXJyb3IpCisgICAgaWYgKHJl
dCAhPSBTUUxJVEVfT0sgJiYgcmV0ICE9IFNRTElURV9ET05FICYmIHJldCAhPSBTUUxJVEVfUk9X
KQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBleGVjdXRlICVzIGVycm9yOiAlcyIsIHNx
bC5hc2NpaSgpLmRhdGEoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgcmV0dXJu
IHJldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dURCLmgKaW5kZXggZjkxM2Y0M2VhNWQwYTRmNzQzMWE3OTJiMTY4MzgwZDc5ZDcyYTYxNy4uMDkz
ZGE4MzA3ODRmNGViMjYzYWJmMzFjNjVjNGYzMTgzYThkYzEzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGNoZWNrRGF0YWJhc2VWYWxpZGl0eSgpOwogICAgIHZvaWQgZGVs
ZXRlQWxsRGF0YWJhc2VGaWxlcygpOwogICAgIHZvaWQgdmVyaWZ5U2NoZW1hVmVyc2lvbigpOwot
ICAgIGludCBleGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVy
cm9yID0gZmFsc2UpOworICAgIGludCBleGVjdXRlU1FMU3RhdGVtZW50KEV4cGVjdGVkPFNRTGl0
ZVN0YXRlbWVudCwgaW50PiYmKTsKICAgICB2b2lkIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShpbnQg
YWN0dWFsKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBjcmVhdGVQcmVw
YXJlZFN0YXRlbWVudChBU0NJSUxpdGVyYWwgc3FsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAppbmRleCBiMGM3MTYxYTgwNmE4NjhlYzRmZjQ0NzY1M2JiODUzZmMwOTY4NDViLi5lZjEx
YTczY2IwZWJjYTY5MjQxZjYwMjM0MTQyMzkwNTY2YWNkYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcApAQCAtNTIsOSArNTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNjsKIAotc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCitzdGF0aWMgQVND
SUlMaXRlcmFsIHJlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmco
IkNSRUFURSBUQUJMRSAiLCB0YWJsZU5hbWUsICIgKCIKKyAgICByZXR1cm4gIkNSRUFURSBUQUJM
RSBSZWNvcmRzICgiCiAgICAgICAgICJrZXkgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFIgogICAgICAgICAiLCBvcmlnaW4gVEVYVCBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCBzY29wZVVSTCBURVhUIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCkBAIC02NywyMSArNjcsMjUgQEAgc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgICAgICIs
IHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAg
Iiwgc2NyaXB0UmVzb3VyY2VNYXAgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAg
ICAgICAiLCBjZXJ0aWZpY2F0ZUluZm8gQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgot
ICAgICAgICAiKSIpOwotfQotCi1zdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJsZVNjaGVt
YSgpCi17Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2NoZW1hKHJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKLSAg
ICByZXR1cm4gc2NoZW1hOworICAgICAgICAiKSJfczsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNjaGVtYShyZWNvcmRz
VGFibGVTY2hlbWEoIlwiUmVjb3Jkc1wiIikpOwotICAgIHJldHVybiBzY2hlbWE7CisgICAgcmV0
dXJuICJDUkVBVEUgVEFCTEUgXCJSZWNvcmRzXCIgKCIKKyAgICAgICAgImtleSBURVhUIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UiCisgICAgICAg
ICIsIG9yaWdpbiBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCisgICAgICAgICIsIHNj
b3BlVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgdG9wT3Jp
Z2luIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgbGFzdFVwZGF0
ZUNoZWNrVGltZSBET1VCTEUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwg
dXBkYXRlVmlhQ2FjaGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAi
LCBzY3JpcHRVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAgICAgICAiLCB3
b3JrZXJUeXBlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAgICAgIiwgY29u
dGVudFNlY3VyaXR5UG9saWN5IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKKyAgICAg
ICAgIiwgcmVmZXJyZXJQb2xpY3kgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgorICAg
ICAgICAiLCBzY3JpcHRSZXNvdXJjZU1hcCBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwi
CisgICAgICAgICIsIGNlcnRpZmljYXRlSW5mbyBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCisgICAgICAgICIpIl9zOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBkYXRhYmFzZUZp
bGVuYW1lRnJvbVZlcnNpb24odWludDY0X3QgdmVyc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGE4YWVkNzMxNjUx
NTVlMGNmMWYyYmQzNjJiMTFlODlmOWIyZGUyOWMuLjgyODcxY2U0OGM4M2JmNTZmMjNjMjBhNGY0
YzIwOGNlMGY1NzFkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNDM2LDEzICs0MzYsMTkgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5hYmxlRm9yZWlnbktleXMoKQogCiBUYWJs
ZUFuZEluZGV4UGFpciBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVu
dFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogewotICAgIGF1
dG8gZ2V0VGFibGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0
cmluZygiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25hbWU9JyIsIHRh
YmxlTmFtZSwgIicgQU5EIHR5cGUgPSAndGFibGUnIikpOworICAgIGF1dG8gZ2V0VGFibGVTdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxp
dGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5EIHR5cGUgPSAndGFibGUnIl9zKTsKICAgICBp
ZiAoIWdldFRhYmxlU3RhdGVtZW50KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNj
aGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBpZiAoZ2V0VGFibGVT
dGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQg
c3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGhlIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAl
IiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKICAgICBpZiAoZ2V0VGFibGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgZXJyb3IgZXhl
Y3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCB0YWJsZSBzY2hlbWEsIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDUxLDEzICs0NTcsMTkgQEAgVGFibGVB
bmRJbmRleFBhaXIgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRU
YWJsZUFuZEluZGV4UXVlcmkKIAogICAgIFN0cmluZyBjcmVhdGVUYWJsZVF1ZXJ5ID0gZ2V0VGFi
bGVTdGF0ZW1lbnQtPmdldENvbHVtblRleHQoMCk7CiAKLSAgICBhdXRvIGdldEluZGV4U3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNFTEVDVCBzcWwg
RlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPSciLCB0YWJsZU5hbWUsICInIEFORCB0
eXBlID0gJ2luZGV4JyIpKTsKKyAgICBhdXRvIGdldEluZGV4U3RhdGVtZW50ID0gbV9kYXRhYmFz
ZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0
YmxfbmFtZT0/IEFORCB0eXBlID0gJ2luZGV4JyJfcyk7CiAgICAgaWYgKCFnZXRJbmRleFN0YXRl
bWVudCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVz
IFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBmZXRjaCBpbmRleCBmb3IgdGhlIHRhYmxl
LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPmJpbmRUZXh0
KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJy
ZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIGJpbmQgc3RhdGVtZW50IHRvIGZldGNo
IGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklO
RywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIE9wdGlvbmFsPFN0
cmluZz4gaW5kZXg7CiAgICAgaWYgKGdldEluZGV4U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRF
X1JPVykgewogICAgICAgICBhdXRvIHJhd0luZGV4ID0gU3RyaW5nKGdldEluZGV4U3RhdGVtZW50
LT5nZXRDb2x1bW5UZXh0KDApKTsKQEAgLTUyMSwyNyArNTMzLDI3IEBAIGJvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om5lZWRzVXBkYXRlZFNjaGVtYSgpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgU3RyaW5nIGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJs
ZVF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGUpCitzdGF0aWMgRXhwZWN0ZWQ8U1FMaXRlU3RhdGVt
ZW50LCBpbnQ+IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChTUUxpdGVEYXRh
YmFzZSYgZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgdGFibGUpCiB7CiAgICAgaWYgKHRhYmxlID09
ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIklOU0VSVCBJTlRPIFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YkZy
YW1lRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBHUk9VUCBCWSBzdWJGcmFtZURvbWFpbklELCB0b3BG
cmFtZURvbWFpbklEIik7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KCJJTlNFUlQgSU5UTyBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJGcmFt
ZURvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgR1JPVVAgQlkgc3ViRnJhbWVEb21haW5JRCwgdG9wRnJh
bWVEb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFibGUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSU5TRVJUIElOVE8gU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwg
TUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvcEZyYW1lRG9t
YWluSUQiKTsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VS
VCBJTlRPIFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YnJlc291cmNl
RG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklELCB0
b3BGcmFtZURvbWFpbklEIl9zKTsKIAogICAgIGlmICh0YWJsZSA9PSAiU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyIpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyBT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBN
QVgobGFzdFVwZGF0ZWQpLCB0b0RvbWFpbklEIEZST00gX1N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8gR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCIpOworICAgICAg
ICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNUbyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFYKGxhc3RV
cGRhdGVkKSwgdG9Eb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIEdS
T1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQiX3MpOwogCiAgICAgaWYgKHRh
YmxlID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20iKQotICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygiSU5TRVJUIElOVE8gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVDVCB0
b0RvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQIEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCIpOwor
ICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gVG9w
RnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFNFTEVDVCB0b0RvbWFpbklELCBNQVgobGFzdFVwZGF0
ZWQpLCBmcm9tRG9tYWluSUQgRlJPTSBfVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIEdST1VQ
IEJZIHRvRG9tYWluSUQsIGZyb21Eb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFibGUgPT0gIlVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IikKLSAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoIklOU0VSVCBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNF
TEVDVCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJ
RCwgTUFYKHRpbWVPZkFkQ2xpY2spLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCBGUk9NIF9VbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBHUk9VUCBCWSBzb3VyY2VTaXRlRG9tYWlu
SUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIik7CisgICAgICAgIHJldHVybiBkYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBTRUxFQ1Qgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCwgc291cmNlSUQsIE1BWCh0aW1lT2ZBZENsaWNrKSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQg
RlJPTSBfVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgR1JPVVAgQlkgc291cmNl
U2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFi
bGUgPT0gIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpCi0gICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyBBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgU0VMRUNUIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNv
dXJjZUlELCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgTUFYKHRpbWVPZkFkQ2xp
Y2spLCBlYXJsaWVzdFRpbWVUb1NlbmRUb1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQs
IGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gRlJPTSBfQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50IEdST1VQIEJZIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRpb25T
aXRlRG9tYWluSUQiKTsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQo
IklOU0VSVCBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qgc291
cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCBNQVgodGltZU9mQWRDbGljayksIGVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIF9BdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCJf
cyk7CiAKLSAgICByZXR1cm4gbWFrZVN0cmluZygiSU5TRVJUIElOVE8gIiwgdGFibGUsICIgU0VM
RUNUIERJU1RJTkNUICogRlJPTSBfIiwgdGFibGUpOworICAgIHJldHVybiBkYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyAiLCB0YWJsZSwgIiBTRUxF
Q1QgRElTVElOQ1QgKiBGUk9NIF8iLCB0YWJsZSkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3Nhcnko
KQpAQCAtNTUzLDggKzU2NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpCiAgICAgdHJhbnNhY3Rp
b24uYmVnaW4oKTsKIAogICAgIGZvciAoYXV0byYgdGFibGUgOiBleHBlY3RlZFRhYmxlQW5kSW5k
ZXhRdWVyaWVzKCkua2V5cygpKSB7Ci0gICAgICAgIGF1dG8gcXVlcnkgPSBtYWtlU3RyaW5nKCJB
TFRFUiBUQUJMRSAiLCB0YWJsZSwgIiBSRU5BTUUgVE8gXyIsIHRhYmxlKTsKLSAgICAgICAgYXV0
byBhbHRlclRhYmxlID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KHF1ZXJ5KTsKKyAgICAg
ICAgYXV0byBhbHRlclRhYmxlID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtl
U3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZSwgIiBSRU5BTUUgVE8gXyIsIHRhYmxlKSk7CiAg
ICAgICAgIGlmICghYWx0ZXJUYWJsZSB8fCBhbHRlclRhYmxlLT5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZO
ZWNlc3NhcnkgZmFpbGVkIHRvIHJlbmFtZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJXMiLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtNTY5LDE2ICs1ODAsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygp
LmtleXMoKSkgewotICAgICAgICBhdXRvIHF1ZXJ5ID0gaW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRh
YmxlUXVlcnkodGFibGUpOwotICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURhdGEgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQocXVlcnkpOworICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURh
dGEgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdGFi
bGUpOwogICAgICAgICBpZiAoIW1pZ3JhdGVUYWJsZURhdGEgfHwgbWlncmF0ZVRhYmxlRGF0YS0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0
ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBtaWdyYXRlIHNjaGVtYSwgZXJy
b3IgbWVzc2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byBkcm9wUXVlcnkgPSBtYWtlU3RyaW5nKCJEUk9QIFRBQkxFIF8i
LCB0YWJsZSk7Ci0gICAgICAgIGF1dG8gZHJvcFRhYmxlUXVlcnkgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnQoZHJvcFF1ZXJ5KTsKKyAgICAgICAgYXV0byBkcm9wVGFibGVRdWVyeSA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiRFJPUCBUQUJMRSBfIiwg
dGFibGUpKTsKICAgICAgICAgaWYgKCFkcm9wVGFibGVRdWVyeSB8fCBkcm9wVGFibGVRdWVyeS0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0
ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIHRlbXBvcmFyeSB0YWJs
ZXMsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU5Nyw3ICs2MDYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3
VGFibGVzSWZOZWNlc3NhcnkoKQogCiBWZWN0b3I8U3RyaW5nPiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Y29sdW1uc0ZvclRhYmxlKGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
KQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1h
a2VTdHJpbmcoIlBSQUdNQSB0YWJsZV9pbmZvKCIsIHRhYmxlTmFtZSwgIikiKSk7CisgICAgYXV0
byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmco
IlBSQUdNQSB0YWJsZV9pbmZvKCIsIHRhYmxlTmFtZSwgIikiKSk7CiAKICAgICBpZiAoIXN0YXRl
bWVudCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0Q29sdW1uc0Zyb21UYWJsZUluZm9TdGF0
ZW1lbnQgVW5hYmxlIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIHNjaGVtYSBmb3IgdGFi
bGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CkBAIC02MjIsNyArNjMxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKFN0cmluZyYm
IHRhYmwKICAgICAgICAgaWYgKGV4aXN0aW5nQ29sdW1ucy5jb250YWlucyhjb2x1bW4pKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBhdXRvIHN0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJs
ZU5hbWUsICIgQUREIENPTFVNTiAiLCBjb2x1bW4pKTsKKyAgICAgICAgYXV0byBzdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxF
ICIsIHRhYmxlTmFtZSwgIiBBREQgQ09MVU1OICIsIGNvbHVtbikpOwogICAgICAgICBpZiAoIXN0
YXRlbWVudCkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zVG9U
YWJsZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gYWRkIG1pc3NpbmcgY29sdW1ucyB0
byB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNjQ4LDcgKzY1Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmFkZE1pc3NpbmdDb2x1bW5zSWZOZWNlc3NhcnkoKQogCiB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW5hbWVDb2x1bW5JblRhYmxlKFN0cmluZyYmIHRh
YmxlTmFtZSwgRXhpc3RpbmdDb2x1bW5OYW1lJiYgZXhpc3RpbmdDb2x1bW5OYW1lLCBFeHBlY3Rl
ZENvbHVtbk5hbWUmJiBleHBlY3RlZENvbHVtbk5hbWUpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwg
dGFibGVOYW1lLCAiIFJFTkFNRSBDT0xVTU4gIiwgZXhpc3RpbmdDb2x1bW5OYW1lLCAiIFRPICIs
IGV4cGVjdGVkQ29sdW1uTmFtZSkpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5hbWUs
ICIgUkVOQU1FIENPTFVNTiAiLCBleGlzdGluZ0NvbHVtbk5hbWUsICIgVE8gIiwgZXhwZWN0ZWRD
b2x1bW5OYW1lKSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmFkZE1pc3NpbmdDb2x1bW5zVG9UYWJsZSBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8g
cmVuYW1lIGNvbHVtbiBpbiB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC02OTMsNyArNzAyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ1RhYmxlc0lmTmVjZXNzYXJ5KCkKIAogICAgIGZv
ciAoYXV0byYgdGFibGUgOiAqbWlzc2luZ1RhYmxlcykgewogICAgICAgICBhdXRvIGNyZWF0ZVRh
YmxlUXVlcnkgPSBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkuZ2V0KHRhYmxlKS5maXJz
dDsKLSAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVRhYmxlUXVl
cnkpKQorICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmRTbG93KGNyZWF0ZVRh
YmxlUXVlcnkpKQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFkZE1pc3NpbmdUYWJsZXMgZmFp
bGVkIHRvIGV4ZWN1dGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlz
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICB9CiAKQEAgLTEwNDAsNyArMTA0OSw3
IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlQW5k
TWFrZURvbWFpbkxpc3QoY29uc3QgSGFzaFNlCiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Omluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QoY29uc3QgU3RyaW5n
JiBzdGF0ZW1lbnQsIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5MaXN0
LCB1bnNpZ25lZCBkb21haW5JRCkKIHsKLSAgICBhdXRvIGluc2VydFJlbGF0aW9uc2hpcFN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKHN0YXRlbWVudCwg
ZW5zdXJlQW5kTWFrZURvbWFpbkxpc3QoZG9tYWluTGlzdCksICIgKTsiKSk7CisgICAgYXV0byBp
bnNlcnRSZWxhdGlvbnNoaXBTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRT
bG93KG1ha2VTdHJpbmcoc3RhdGVtZW50LCBlbnN1cmVBbmRNYWtlRG9tYWluTGlzdChkb21haW5M
aXN0KSwgIiApOyIpKTsKICAgICAKICAgICBpZiAoIWluc2VydFJlbGF0aW9uc2hpcFN0YXRlbWVu
dAogICAgICAgICB8fCBpbnNlcnRSZWxhdGlvbnNoaXBTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgZG9t
YWluSUQpICE9IFNRTElURV9PSykgewpAQCAtMTE4MSw5ICsxMTkwLDkgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNv
dXJjZUxvYWRTdGEKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwcyhzdGF0aXN0aWMp
OwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nVmlldyBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRp
bmcoKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKQog
ewotICAgIHJldHVybiAiZG9tYWluSUQsIgorICAgIHJldHVybiAiU0VMRUNUIGRvbWFpbklELCIK
ICAgICAgICAgIihjb3VudFN1YkZyYW1lVW5kZXJUb3BGcmFtZSArIGNvdW50U3ViUmVzb3VyY2VV
bmRlclRvcEZyYW1lICsgY291bnRVbmlxdWVSZWRpcmVjdFRvKSBhcyBzdW0gICIKICAgICAgICAg
IkZST00gKCAiCiAgICAgICAgICJTRUxFQ1QgIgpAQCAtMTE5OCw3ICsxMjA3LDcgQEAgc3RhdGlj
IGNvbnN0IFN0cmluZ1ZpZXcgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCkKICAgICAgICAg
IkxFRlQgSk9JTiBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIHUgT04gby5kb21haW5JRCA9
IHUuc3VicmVzb3VyY2VEb21haW5JRCAiCiAgICAgICAgICJXSEVSRSBpc1ByZXZhbGVudCBMSUtF
ID8gIgogICAgICAgICAiYW5kIGhhZFVzZXJJbnRlcmFjdGlvbiBMSUtFID8gIgotICAgICAgICAi
R1JPVVAgQlkgZG9tYWluSUQpIE9SREVSIEJZIHN1bSBERVNDICI7CisgICAgICAgICJHUk9VUCBC
WSBkb21haW5JRCkgT1JERVIgQlkgc3VtIERFU0M7Il9zOwogfQogCiBWZWN0b3I8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGlyZFBhcnR5RG9tYWluSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluKSBjb25zdApAQCAtMTIz
MCw3ICsxMjM5LDcgQEAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXQKIAogICAgIFZlY3RvcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5RGF0
YUxpc3Q7CiAgICAgY29uc3QgYXV0byBwcmV2YWxlbnREb21haW5zQmluZFBhcmFtZXRlciA9IHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSA9PSBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOjpBbGwgPyAiJSIgOiAiMSI7Ci0gICAgYXV0byBzb3J0ZWRTdGF0aXN0aWNzID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNFTEVDVCAiLCBqb2luU3ViU3RhdGlz
dGljc0ZvclNvcnRpbmcoKSkpOworICAgIGF1dG8gc29ydGVkU3RhdGlzdGljcyA9IG1fZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudChqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKSk7CiAgICAg
aWYgKCFzb3J0ZWRTdGF0aXN0aWNzCiAgICAgICAgIHx8IHNvcnRlZFN0YXRpc3RpY3MtPmJpbmRU
ZXh0KDEsIHByZXZhbGVudERvbWFpbnNCaW5kUGFyYW1ldGVyKQogICAgICAgICB8fCBzb3J0ZWRT
dGF0aXN0aWNzLT5iaW5kVGV4dCgyLCAiJSIpICE9IFNRTElURV9PSykgewpAQCAtMTI2Niw3ICsx
Mjc1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVt
ZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIGF1dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50ID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMg
U0VUIGRhdGFSZWNvcmRzUmVtb3ZlZCA9IGRhdGFSZWNvcmRzUmVtb3ZlZCArIDEgV0hFUkUgcmVn
aXN0cmFibGVEb21haW4gSU4gKCIsIGRvbWFpbnNUb1N0cmluZyhkb21haW5zKSwgIikiKSk7Cisg
ICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0
ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGRhdGFSZWNv
cmRzUmVtb3ZlZCA9IGRhdGFSZWNvcmRzUmVtb3ZlZCArIDEgV0hFUkUgcmVnaXN0cmFibGVEb21h
aW4gSU4gKCIsIGRvbWFpbnNUb1N0cmluZyhkb21haW5zKSwgIikiKSk7CiAgICAgaWYgKCFkb21h
aW5zVG9VcGRhdGVTdGF0ZW1lbnQgfHwgZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50LT5zdGVwKCkg
IT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCht
X3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omlu
Y3JlbWVudFN0YXRpc3RpY3NGb3JEb21haW5zIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzUyLDcgKzEzNjEsNyBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGly
ZWN0ZWRUb1ByZXZhbAogICAgICAgICAgICAgcHJldmFsZW50RHVlVG9SZWRpcmVjdC5pbnNlcnQo
dG9wRnJhbWVSZWRpcmVjdFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApKTsKICAgICB9CiAKLSAg
ICBhdXRvIG1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAx
IFdIRVJFIGRvbWFpbklEIElOICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0ZFNl
dDx1bnNpZ25lZD46Oml0ZXJhdG9yPihwcmV2YWxlbnREdWVUb1JlZGlyZWN0LmJlZ2luKCksIHBy
ZXZhbGVudER1ZVRvUmVkaXJlY3QuZW5kKCkpKSwgIikiKSk7CisgICAgYXV0byBtYXJrUHJldmFs
ZW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5n
KCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWlu
SUQgSU4gKCIsIGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6
aXRlcmF0b3I+KHByZXZhbGVudER1ZVRvUmVkaXJlY3QuYmVnaW4oKSwgcHJldmFsZW50RHVlVG9S
ZWRpcmVjdC5lbmQoKSkpLCAiKSIpKTsKICAgICBpZiAoIW1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQg
fHwgbWFya1ByZXZhbGVudFN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGly
ZWN0ZWRUb1ByZXZhbGVudCBmYWlsZWQgdG8gZXhlY3V0ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJ
VkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzg0LDcgKzEzOTMsNyBAQCBIYXNoTWFwPHVu
c2lnbmVkLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZh
bGVudFJlc291cmNlcwogCiAgICAgYXV0byBkb21haW5JRHNPZkludGVyZXN0ID0gYnVpbGRlci50
b1N0cmluZygpOwogCi0gICAgYXV0byBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zU3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNFTEVDVCBz
dWJyZXNvdXJjZURvbWFpbklELCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9NIFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwg
ZG9tYWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsK
KyAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlNFTEVDVCBzdWJyZXNvdXJj
ZURvbWFpbklELCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9NIFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9tYWluSURz
T2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsKICAgICBpZiAo
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCkgewogICAgICAgICB3aGls
ZSAoc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudC0+c3RlcCgpID09IFNR
TElURV9ST1cpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQtPmdldENv
bHVtbkludCgwKSk7CkBAIC0xMzk0LDcgKzE0MDMsNyBAQCBIYXNoTWFwPHVuc2lnbmVkLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZhbGVudFJlc291cmNl
cwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvQ291bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmlu
ZygiU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIENPVU5UKHRvRG9tYWluSUQpIEZST00gU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEIElOICgi
LCBkb21haW5JRHNPZkludGVyZXN0LCAiKSBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklEIikp
OworICAgIGF1dG8gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJTRUxFQ1Qgc3VicmVz
b3VyY2VEb21haW5JRCwgQ09VTlQodG9Eb21haW5JRCkgRlJPTSBTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50
ZXJlc3QsICIpIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQiKSk7CiAgICAgaWYgKHN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudCkgewogICAgICAgICB3aGlsZSAo
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykgewogICAgICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50LT5nZXRD
b2x1bW5JbnQoMCkpOwpAQCAtMTQwNCw3ICsxNDEzLDcgQEAgSGFzaE1hcDx1bnNpZ25lZCwgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Ok5vdFZlcnlQcmV2YWxlbnRSZXNvdXJj
ZXMKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWluc0NvdW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJp
bmcoIlNFTEVDVCBzdWJmcmFtZURvbWFpbklELCBDT1VOVCh0b3BGcmFtZURvbWFpbklEKSBGUk9N
IFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViZnJhbWVEb21haW5JRCBJTiAo
IiwgZG9tYWluSURzT2ZJbnRlcmVzdCwgIikgR1JPVVAgQlkgc3ViZnJhbWVEb21haW5JRCIpKTsK
KyAgICBhdXRvIHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHN1YmZyYW1l
RG9tYWluSUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyBXSEVSRSBzdWJmcmFtZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVy
ZXN0LCAiKSBHUk9VUCBCWSBzdWJmcmFtZURvbWFpbklEIikpOwogICAgIGlmIChzdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zQ291bnRTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKHN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9S
T1cpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnNDb3VudFN0YXRlbWVudC0+Z2V0Q29sdW1u
SW50KDApKTsKQEAgLTE0MTQsNyArMTQyMyw3IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpOb3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3Vu
dFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJTRUxF
Q1Qgc291cmNlRG9tYWluSUQsIENPVU5UKHRvRG9tYWluSUQpIEZST00gVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9tYWluSURzT2ZJbnRlcmVz
dCwgIikgR1JPVVAgQlkgc291cmNlRG9tYWluSUQiKSk7CisgICAgYXV0byB0b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRT
bG93KG1ha2VTdHJpbmcoIlNFTEVDVCBzb3VyY2VEb21haW5JRCwgQ09VTlQodG9Eb21haW5JRCkg
RlJPTSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFpbklEIElOICgi
LCBkb21haW5JRHNPZkludGVyZXN0LCAiKSBHUk9VUCBCWSBzb3VyY2VEb21haW5JRCIpKTsKICAg
ICBpZiAodG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50KSB7CiAgICAgICAg
IHdoaWxlICh0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPih0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPmdl
dENvbHVtbkludCgwKSk7CkBAIC0xNjQ0LDcgKzE2NTMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFuZGZhdGhlckRhdGFGb3JEb21haW5zKGNvbnN0IEhh
c2hTZQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25J
RCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW5kZmF0aGVy
RGF0YUZvckRvbWFpbnMgd2FzIG5vdCBjb21wbGV0ZWQgZHVlIHRvIGZhaWxlZCBpbnNlcnQgYXR0
ZW1wdCIsIHRoaXMpOwogICAgIH0KIAotICAgIGF1dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50
ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZl
ZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAxIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIElO
ICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikpOworICAgIGF1dG8gZG9tYWluc1Rv
VXBkYXRlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3Ry
aW5nKCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBncmFuZGZhdGhlcmVkID0gMSBXSEVSRSBy
ZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsK
ICAgICBpZiAoIWRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudCB8fCBkb21haW5zVG9VcGRhdGVTdGF0
ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyBmYWlsZWQsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTkxNSw3ICsxOTI0LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJl
dmFsZW50KFN0ZFNldDx1bnNpZ25lZD4KIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIGF1dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlzUHJl
dmFsZW50ID0gMSBXSEVSRSBkb21haW5JRCBJTiAoIiwgYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JS
YW5nZTxTdGRTZXQ8dW5zaWduZWQ+OjppdGVyYXRvcj4oZG9tYWlucy5iZWdpbigpLCBkb21haW5z
LmVuZCgpKSksICIpIikpOworICAgIGF1dG8gZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50ID0gbV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2ZWRE
b21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGJ1aWxkTGlz
dChXVEY6Okl0ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6aXRlcmF0b3I+KGRvbWFpbnMu
YmVnaW4oKSwgZG9tYWlucy5lbmQoKSkpLCAiKSIpKTsKICAgICBpZiAoIWRvbWFpbnNUb1VwZGF0
ZVN0YXRlbWVudCB8fCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklE
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0Fz
UHJldmFsZW50IGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0yNDY2LDcgKzI0NzUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjbGVhckdyYW5kZmF0aGVyaW5nKFZlY3Rvcjx1bnNpZ25lZD4mJgogCiAg
ICAgYXV0byBsaXN0VG9DbGVhciA9IGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8VmVjdG9y
PHVuc2lnbmVkPjo6aXRlcmF0b3I+KGRvbWFpbklEc1RvQ2xlYXIuYmVnaW4oKSwgZG9tYWluSURz
VG9DbGVhci5lbmQoKSkpOwogCi0gICAgYXV0byBjbGVhckdyYW5kZmF0aGVyaW5nU3RhdGVtZW50
ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZl
ZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAwIFdIRVJFIGRvbWFpbklEIElOICgiLCBsaXN0
VG9DbGVhciwgIikiKSk7CisgICAgYXV0byBjbGVhckdyYW5kZmF0aGVyaW5nU3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJVUERBVEUgT2JzZXJ2
ZWREb21haW5zIFNFVCBncmFuZGZhdGhlcmVkID0gMCBXSEVSRSBkb21haW5JRCBJTiAoIiwgbGlz
dFRvQ2xlYXIsICIpIikpOwogICAgIGlmICghY2xlYXJHcmFuZGZhdGhlcmluZ1N0YXRlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMjYyMyw3ICsyNjMyLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZOZWVkZWQoKQog
CiAgICAgYXV0byBsaXN0VG9QcnVuZSA9IGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8VmVj
dG9yPHVuc2lnbmVkPjo6aXRlcmF0b3I+KGVudHJpZXNUb1BydW5lLmJlZ2luKCksIGVudHJpZXNU
b1BydW5lLmVuZCgpKSk7CiAKLSAgICBhdXRvIHBydW5lQ29tbWFuZCA9IG1fZGF0YWJhc2UucHJl
cGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJERUxFVEUgZnJvbSBPYnNlcnZlZERvbWFpbnMgV0hF
UkUgZG9tYWluSUQgSU4gKCIsIGxpc3RUb1BydW5lLCAiKSIpKTsKKyAgICBhdXRvIHBydW5lQ29t
bWFuZCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiREVMRVRF
IGZyb20gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEIElOICgiLCBsaXN0VG9QcnVuZSwg
IikiKSk7CiAgICAgaWYgKCFwcnVuZUNvbW1hbmQgfHwgcHJ1bmVDb21tYW5kLT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnBydW5l
U3RhdGlzdGljc0lmTmVlZGVkIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0yNzcwLDM1ICsyNzc5LDM1IEBAIFN0cmluZyBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVu
c2lnbmVkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5n
JiB0YWJsZU5hbWUpIGNvbnN0CitBU0NJSUxpdGVyYWwgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmIHRhYmxl
TmFtZSkgY29uc3QKIHsKICAgICBpZiAodGFibGVOYW1lID09ICJTdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BMZXZlbERvbWFpbklE
IGZyb20gU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIGRvbWFpbklEID0g
PyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcExldmVsRG9tYWluSUQgZnJvbSBTdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/Il9zOwogICAgIGlm
ICh0YWJsZU5hbWUgPT0gIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8iKQotICAgICAgICByZXR1
cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyBXSEVS
RSBzb3VyY2VEb21haW5JRCA9ID8iOworICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklE
IGZyb20gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzb3VyY2VEb21haW5JRCA9ID8i
X3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIikK
LSAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tIFdIRVJFIHRhcmdldERvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAi
U0VMRUNUIGZyb21Eb21haW5JRCBmcm9tIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSBXSEVS
RSB0YXJnZXREb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVM
aW5rRGVjb3JhdGlvbnNGcm9tIikKLSAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklE
IGZyb20gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFdIRVJFIHRvRG9tYWluSUQgPSA/IjsK
KyAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gVG9wRnJhbWVMaW5rRGVj
b3JhdGlvbnNGcm9tIFdIRVJFIHRvRG9tYWluSUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUg
PT0gIlRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMiKQotICAgICAgICByZXR1cm4gIlNF
TEVDVCBzdWJyZXNvdXJjZURvbWFpbklEIGZyb20gVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2Ny
aXB0cyBXSEVSRSB0b3BGcmFtZURvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNU
IHN1YnJlc291cmNlRG9tYWluSUQgZnJvbSBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRz
IFdIRVJFIHRvcEZyYW1lRG9tYWluSUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1
YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BG
cmFtZURvbWFpbklEIGZyb20gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJG
cmFtZURvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWlu
SUQgZnJvbSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWlu
SUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gIlNFTEVDVCB0b3BGcmFtZURvbWFpbklEIGZyb20g
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklE
ID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgZnJvbSBTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/
Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8i
KQotICAgICAgICByZXR1cm4gIlNFTEVDVCB0b0RvbWFpbklEIGZyb20gU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyI7CisgICAgICAgIHJl
dHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
IFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOwogICAgIGlmICh0YWJsZU5hbWUgPT0g
IlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSIpCi0gICAgICAgIHJldHVybiAiU0VMRUNU
IGZyb21Eb21haW5JRCBmcm9tIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSBXSEVSRSBz
dWJyZXNvdXJjZURvbWFpbklEID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIGZyb21Eb21h
aW5JRCBmcm9tIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSBXSEVSRSBzdWJyZXNvdXJj
ZURvbWFpbklEID0gPyJfczsKICAgICAKLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gIiJfczsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBT
dHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0CiB7CiAgICAgYXV0
byBxdWVyeSA9IGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudCh0YWJsZU5hbWUpOwogICAgIAotICAg
IGlmIChxdWVyeS5pc0VtcHR5KCkpCisgICAgaWYgKCFxdWVyeS5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIGF1dG8gZGF0YSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dChxdWVyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oCmluZGV4IGExZTM1MTUzNDQ2YzU3ZmQzODg1OWE2ZGNmODYyNGIwMTYwMzA5N2Uu
LmZkNzFjYzVlN2I5NjA0Yzc4MThmMWI2YWU5YmE1ZDMxNmUyODE4M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0xODEsNyAr
MTgxLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZ2V0VGhpcmRQYXJ0eURh
dGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW5zKHVuc2lnbmVkLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgb3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5
KCk7CiAgICAgU3RyaW5nIGdldERvbWFpblN0cmluZ0Zyb21Eb21haW5JRCh1bnNpZ25lZCkgY29u
c3Q7Ci0gICAgU3RyaW5nIGdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmKSBj
b25zdDsKKyAgICBBU0NJSUxpdGVyYWwgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kU3ViU3RhdGlzdGljTGlzdChTdHJpbmdCdWls
ZGVyJiwgY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKSBjb25z
dDsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
KTsKICAgICB2b2lkIG1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4
IDRjNzhmY2U5NDc4OTI4NzJlNWRhMTY1ZGUzZjVhYzk3ZGMyZTBkOGEuLjM2ODM2NWZmMWIwODg0
M2QzNmFlMDI5NzM2MDhkN2JhYTRjYmZjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
LmNwcApAQCAtODEsMTEgKzgxLDExIEBAIGJvb2wgTG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZShTaG91bGRDcmVhdGVEYXRhYmFzZSBzaG91bGRDcmVhdGVEYXRhYmFzCiAgICAgaWYg
KCFtaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKSkgewogICAgICAgICAvLyBXZSBmYWlsZWQgdG8g
bWlncmF0ZSB0aGUgaXRlbSB0YWJsZS4gSW4gb3JkZXIgdG8gYXZvaWQgdHJ5aW5nIHRvIG1pZ3Jh
dGUgdGhlIHRhYmxlIG92ZXIgYW5kIG92ZXIsCiAgICAgICAgIC8vIGp1c3QgZGVsZXRlIGl0IGFu
ZCBzdGFydCBmcm9tIHNjcmF0Y2guCi0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29t
bWFuZCgiRFJPUCBUQUJMRSBJdGVtVGFibGUiKSkKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJEUk9QIFRBQkxFIEl0ZW1UYWJsZSJfcykpCiAgICAgICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBkZWxldGUgdGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdl
Iik7CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBJdGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElD
VCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIikpIHsKKyAg
ICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJ
U1RTIEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVl
IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGNyZWF0ZSB0YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEwNiwxMyArMTA2LDEzIEBAIGJvb2wg
TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IHRhYmxlIHdpdGggdGhlIHJpZ2h0
IHR5cGUsIGNvcHkgYWxsIHRoZSBkYXRhIG92ZXIgdG8gaXQgYW5kIHRoZW4gcmVwbGFjZSB0aGUg
bmV3IHRhYmxlIHdpdGggdGhlIG9sZCB0YWJsZS4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29t
bWFuZHNbXSA9IHsKLSAgICAgICAgIkRST1AgVEFCTEUgSUYgRVhJU1RTIEl0ZW1UYWJsZTIiLAot
ICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJsZTIgKGtleSBURVhUIFVOSVFVRSBPTiBDT05G
TElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIiwKLSAg
ICAgICAgIklOU0VSVCBJTlRPIEl0ZW1UYWJsZTIgU0VMRUNUICogZnJvbSBJdGVtVGFibGUiLAot
ICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUiLAotICAgICAgICAiQUxURVIgVEFCTEUgSXRl
bVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIiwKLSAgICAgICAgMCwKKyAgICBzdGF0aWMgY29u
c3QgQVNDSUlMaXRlcmFsIGNvbW1hbmRzW10gPSB7CisgICAgICAgICJEUk9QIFRBQkxFIElGIEVY
SVNUUyBJdGVtVGFibGUyIl9zLAorICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJsZTIgKGtl
eSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwpIl9zLAorICAgICAgICAiSU5TRVJUIElOVE8gSXRlbVRhYmxlMiBTRUxF
Q1QgKiBmcm9tIEl0ZW1UYWJsZSJfcywKKyAgICAgICAgIkRST1AgVEFCTEUgSXRlbVRhYmxlIl9z
LAorICAgICAgICAiQUxURVIgVEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIl9z
LAorICAgICAgICBBU0NJSUxpdGVyYWw6Om51bGwoKSwKICAgICB9OwogCiAgICAgU1FMaXRlVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24obV9kYXRhYmFzZSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgYm9v
bCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkKICAgICAg
ICAgaWYgKG1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZHNbaV0pKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWlncmF0ZSB0YWJs
ZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVzIiwgY29tbWFu
ZHNbaV0pOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtaWdyYXRlIHRhYmxlIEl0ZW1U
YWJsZSBmb3IgbG9jYWwgc3RvcmFnZSB3aGVuIGV4ZWN1dGluZzogJXMiLCBjb21tYW5kc1tpXS5j
aGFyYWN0ZXJzKCkpOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA2NTA4
ODZlZTU2NjE2MjBiODgzMGE2MzUwNmI5N2YzNDQwZDdmNzg1Li41ZTk4NTk0Mzc5NmE0MTk5MzQ1
NzkwYmIyNjRhYTk5YTE2ZWU3MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTEyNCw0MiArMTI0LDQzIEBAIGJvb2wgSWNv
bkRhdGFiYXNlOjpjcmVhdGVUYWJsZXNJZk5lZWRlZCgpCiAKICAgICBtX2RiLmNsZWFyQWxsVGFi
bGVzKCk7CiAKLSAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBQYWdl
VVJMICh1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElD
VCBSRVBMQUNFLGljb25JRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7
CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgUGFnZVVSTCAodXJs
IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFD
RSxpY29uSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiX3MpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBQYWdlVVJMIHRhYmxlIGluIGRhdGFiYXNl
ICglaSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggUGFnZVVSTEluZGV4IE9OIFBhZ2VV
UkwgKHVybCk7IikpIHsKKyAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRF
WCBQYWdlVVJMSW5kZXggT04gUGFnZVVSTCAodXJsKTsiX3MpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBQYWdlVVJMIGluZGV4IGluIGRhdGFiYXNlICglaSkgLSAlcyIs
IG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBtX2RiLmNs
b3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKCFtX2RiLmV4ZWN1
dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSWNvbkluZm8gKGljb25JRCBJTlRFR0VSIFBSSU1BUlkg
S0VZIEFVVE9JTkNSRU1FTlQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHVybCBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIHN0YW1wIElO
VEVHRVIpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUg
SWNvbkluZm8gKGljb25JRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQgVU5JUVVF
IE9OIENPTkZMSUNUIFJFUExBQ0UsIHVybCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwg
VU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIHN0YW1wIElOVEVHRVIpOyJfcykpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEljb25JbmZvIHRhYmxlIGluIGRhdGFiYXNlICgl
aSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKCFt
X2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggSWNvbkluZm9JbmRleCBPTiBJY29uSW5m
byAodXJsLCBpY29uSUQpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVB
VEUgSU5ERVggSWNvbkluZm9JbmRleCBPTiBJY29uSW5mbyAodXJsLCBpY29uSUQpOyJfcykpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFBhZ2VVUkwgaW5kZXggaW4gZGF0
YWJhc2UgKCVpKSAtICVzIiwgbV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIG1fZGIuY2xvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJY29uRGF0YSAoaWNvbklE
IElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQ
TEFDRSwgZGF0YSBCTE9CKTsiKSkgeworICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JF
QVRFIFRBQkxFIEljb25EYXRhIChpY29uSUQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVN
RU5UIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBkYXRhIEJMT0IpOyJfcykpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIEljb25EYXRhIHRhYmxlIGluIGRhdGFiYXNl
ICglaSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggSWNvbkRhdGFJbmRleCBPTiBJY29u
RGF0YSAoaWNvbklEKTsiKSkgeworICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRF
IElOREVYIEljb25EYXRhSW5kZXggT04gSWNvbkRhdGEgKGljb25JRCk7Il9zKSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgUGFnZVVSTCBpbmRleCBpbiBkYXRhYmFzZSAo
JWkpIC0gJXMiLCBtX2RiLmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgbV9kYi5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICgh
bV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEljb25EYXRhYmFzZUluZm8gKGtleSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0Us
dmFsdWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgIGlmICghbV9k
Yi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEljb25EYXRhYmFzZUluZm8gKGtleSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFs
dWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiX3MpKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBJY29uRGF0YWJhc2VJbmZvIHRhYmxlIGluIGRhdGFiYXNl
ICglaSkgLSAlcyIsIG1fZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBtX2RiLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KCFtX2RiLmV4ZWN1dGVDb21tYW5kKFN0cmluZygiSU5TRVJUIElOVE8gSWNvbkRhdGFiYXNlSW5m
byBWQUxVRVMgKCdWZXJzaW9uJywgIikgKyBTdHJpbmc6Om51bWJlcihjdXJyZW50RGF0YWJhc2VW
ZXJzaW9uKSArICIpOyIpKSB7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RiLnByZXBhcmVTdGF0
ZW1lbnQoIklOU0VSVCBJTlRPIEljb25EYXRhYmFzZUluZm8gVkFMVUVTICgnVmVyc2lvbicsID8p
OyJfcyk7CisgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5iaW5kSW50KDEsIGN1cnJl
bnREYXRhYmFzZVZlcnNpb24pICE9IFNRTElURV9PSyB8fCAhc3RhdGVtZW50LT5leGVjdXRlQ29t
bWFuZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGluc2VydCBpY29uIGRhdGFi
YXNlIHZlcnNpb24gaW50byBJY29uRGF0YWJhc2VJbmZvIHRhYmxlICglaSkgLSAlcyIsIG1fZGIu
bGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBtX2RiLmNsb3NlKCk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NSwxMyArMTc2LDE3IEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjpwb3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxNYXAoKQogICAgIGlmICghbV9kYi5pc09w
ZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGltcG9ydFF1ZXJ5ID0gbWFrZVN0
cmluZygiU0VMRUNUIFBhZ2VVUkwudXJsLCBJY29uSW5mby51cmwsIEljb25JbmZvLnN0YW1wIEZS
T00gUGFnZVVSTCBJTk5FUiBKT0lOIEljb25JbmZvIE9OIFBhZ2VVUkwuaWNvbklEPUljb25JbmZv
Lmljb25JRCBXSEVSRSBJY29uSW5mby5zdGFtcCA+ICIsIGZsb29yKChXYWxsVGltZTo6bm93KCkg
LSBub3RVc2VkSWNvbkV4cGlyYXRpb25UaW1lKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMo
KSksICc7Jyk7Ci0gICAgYXV0byBxdWVyeSA9IG1fZGIucHJlcGFyZVN0YXRlbWVudChpbXBvcnRR
dWVyeSk7CisgICAgYXV0byBxdWVyeSA9IG1fZGIucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIFBh
Z2VVUkwudXJsLCBJY29uSW5mby51cmwsIEljb25JbmZvLnN0YW1wIEZST00gUGFnZVVSTCBJTk5F
UiBKT0lOIEljb25JbmZvIE9OIFBhZ2VVUkwuaWNvbklEPUljb25JbmZvLmljb25JRCBXSEVSRSBJ
Y29uSW5mby5zdGFtcCA+ICg/KTsiX3MpOwogICAgIGlmICghcXVlcnkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gcHJlcGFyZSBpY29uIHVybCBpbXBvcnQgcXVlcnkiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChxdWVyeS0+YmluZEludDY0KDEsIGZsb29yKChX
YWxsVGltZTo6bm93KCkgLSBub3RVc2VkSWNvbkV4cGlyYXRpb25UaW1lKS5zZWNvbmRzU2luY2VF
cG9jaCgpLnNlY29uZHMoKSkpICE9IFNRTElURV9PSykgeworICAgICAgICBMT0dfRVJST1IoIklj
b25EYXRhYmFzZTo6cG9wdWxhdGVQYWdlVVJMVG9JY29uVVJMTWFwOiBmYWlsZWQgdG8gYmluZCBz
dGF0ZW1lbnQ6ICVzIiwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBhdXRvIHJlc3VsdCA9IHF1ZXJ5LT5zdGVwKCk7CiAgICAgTG9ja0hvbGRlciBs
b2NrSG9sZGVyKG1fcGFnZVVSTFRvSWNvblVSTE1hcExvY2spOwogICAgIHdoaWxlIChyZXN1bHQg
PT0gU1FMSVRFX1JPVykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFTeW5jLmNwcAppbmRleCBjYWUwODJmMTNkY2QzNjhjNDgxOTViZTMxMWYyMGE1YjY2NDQ4
ZmFiLi41ZGMyMGJjZjBkZjVjOTAxYjc4NTc1Nzc4MWU1YjcwZjMwNzczZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMjYyLDcg
KzI2Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0YWJhc2UoT3BlbkRhdGFiYXNl
UGFyYW1UeXBlIG9wZW5pbmdTdHJhdGVneSkKIAogICAgIG1pZ3JhdGVJdGVtVGFibGVJZk5lZWRl
ZCgpOwogCi0gICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUg
SUYgTk9UIEVYSVNUUyBJdGVtVGFibGUgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBM
QUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIikpIHsKKyAgICBpZiAo
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEl0
ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIEJMT0Ig
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGNyZWF0ZSB0YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsKICAgICAg
ICAgbWFya0ltcG9ydGVkKCk7CiAgICAgICAgIG1fZGF0YWJhc2VPcGVuRmFpbGVkID0gdHJ1ZTsK
QEAgLTI4NSwyMCArMjg1LDIwIEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRh
YmxlSWZOZWVkZWQoKQogICAgIH0KIAogICAgIC8vIGFsdGVyIHRhYmxlIGZvciBiYWNrd2FyZCBj
b21wbGlhbmNlLCBjaGFuZ2UgdGhlIHZhbHVlIHR5cGUgZnJvbSBURVhUIHRvIEJMT0IuCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbW1hbmRzW10gPSB7Ci0gICAgICAgICJEUk9QIFRBQkxFIElG
IEVYSVNUUyBJdGVtVGFibGUyIiwKLSAgICAgICAgIkNSRUFURSBUQUJMRSBJdGVtVGFibGUyIChr
ZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKSIsCi0gICAgICAgICJJTlNFUlQgSU5UTyBJdGVtVGFibGUyIFNFTEVD
VCAqIGZyb20gSXRlbVRhYmxlIiwKLSAgICAgICAgIkRST1AgVEFCTEUgSXRlbVRhYmxlIiwKLSAg
ICAgICAgIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZTIgUkVOQU1FIFRPIEl0ZW1UYWJsZSIsCi0gICAg
ICAgIDAsCisgICAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBjb21tYW5kc1tdID0geworICAg
ICAgICAiRFJPUCBUQUJMRSBJRiBFWElTVFMgSXRlbVRhYmxlMiJfcywKKyAgICAgICAgIkNSRUFU
RSBUQUJMRSBJdGVtVGFibGUyIChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwg
dmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfcywKKyAgICAgICAgIklOU0VS
VCBJTlRPIEl0ZW1UYWJsZTIgU0VMRUNUICogZnJvbSBJdGVtVGFibGUiX3MsCisgICAgICAgICJE
Uk9QIFRBQkxFIEl0ZW1UYWJsZSJfcywKKyAgICAgICAgIkFMVEVSIFRBQkxFIEl0ZW1UYWJsZTIg
UkVOQU1FIFRPIEl0ZW1UYWJsZSJfcywKKyAgICAgICAgQVNDSUlMaXRlcmFsOjpudWxsKCksCiAg
ICAgfTsKIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKG1fZGF0YWJhc2UsIGZh
bHNlKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBj
b21tYW5kc1tpXTsgKytpKSB7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFu
ZChjb21tYW5kc1tpXSkpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1pZ3Jh
dGUgdGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIHdoZW4gZXhlY3V0aW5nOiAlcyIs
IGNvbW1hbmRzW2ldKTsKKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1pZ3JhdGUg
dGFibGUgSXRlbVRhYmxlIGZvciBsb2NhbCBzdG9yYWdlIHdoZW4gZXhlY3V0aW5nOiAlcyIsIGNv
bW1hbmRzW2ldLmNoYXJhY3RlcnMoKSk7CiAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFj
aygpOwogCiAgICAgICAgICAgICAvLyBmaW5hbGx5IGl0IHdpbGwgdHJ5IHRvIGtlZXAgYSBiYWNr
dXAgb2YgSXRlbVRhYmxlIGZvciB0aGUgZnV0dXJlIHJlc3RvcmF0aW9uLgpAQCAtMzA2LDcgKzMw
Niw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKQog
ICAgICAgICAgICAgLy8gdGhhbiBjb250aW51YWxseSBoaXR0aW5nIHRoaXMgY2FzZSBhbmQgbmV2
ZXIgYmVpbmcgYWJsZSB0byB1c2UgdGhlIGxvY2FsIHN0b3JhZ2UuCiAgICAgICAgICAgICAvLyBp
ZiB0aGlzIGlzIGV2ZXIgaGl0LCBpdCdzIGRlZmluaXRlbHkgYSBidWcuCiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRl
Q29tbWFuZCgiQUxURVIgVEFCTEUgSXRlbVRhYmxlIFJFTkFNRSBUTyBCYWNrdXBfSXRlbVRhYmxl
IikpCisgICAgICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRB
QkxFIEl0ZW1UYWJsZSBSRU5BTUUgVE8gQmFja3VwX0l0ZW1UYWJsZSJfcykpCiAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2F2ZSBJdGVtVGFibGUgYWZ0ZXIgbWlncmF0aW9u
IGpvYiBmYWlsZWQuIik7CiAKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDNlY2NmYTc1ZDIwMjZlNWQz
MGQ5N2IwMDM2ZTNmZTIzN2Q0Yjc3MGQuLjhiMWUxMGIyNGI4YTQyN2VkNmIyYjE3YjQ3NGExNDJi
MWNjMjk3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6Om9wZW5UcmFj
a2VyRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKICAgICBtX2RhdGFiYXNlLmRp
c2FibGVUaHJlYWRpbmdDaGVja3MoKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UudGFibGVF
eGlzdHMoIk9yaWdpbnMiKSkgewotICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1h
bmQoIkNSRUFURSBUQUJMRSBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSwgcGF0aCBURVhUKTsiKSkKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9OIENPTkZM
SUNUIFJFUExBQ0UsIHBhdGggVEVYVCk7Il9zKSkKICAgICAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGNyZWF0ZSBPcmlnaW5zIHRhYmxlLiIpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428848</attachid>
            <date>2021-05-17 11:17:52 -0700</date>
            <delta_ts>2021-05-17 14:31:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225855-20210517111751.patch</filename>
            <type>text/plain</type>
            <size>100634</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAwZDY4Y2QzNjRkMWY3
NTNjMzY2MDM2NzBjZjJlNjJjYjVmY2I5Ny4uMjYzMjEyMGU4Mjc5YTFkN2YxNWI0NWE5MTc5YjI2
ZWZmY2JlMTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTA1LTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgbW9yZSBTdHJpbmcg
Y3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0ZW1lbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIEF2b2lkIG1vcmUgU3RyaW5nIGNy
ZWF0aW9ucyB3aGVuIHByZXBhcmluZyBTUUxpdGUgc3RhdGVtZW50cyBieSB1c2luZyBBU0NJSUxp
dGVyYWwuIEFsc28gcmVuYW1lIHRoZQorICAgICAgICBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0
YXRlbWVudCgpIC8gU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kKCkgb3ZlcmxvYWRzIHRo
YXQgdGFrZSBpbiBhCisgICAgICAgIFN0cmluZyB0byBtYWtlIHN1cmUgdGhleSBhcmUgbm90IGNh
bGxlZCBieSBtaXN0YWtlLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYz
UmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djNSZWNv
cmRzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2
M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
djNJbmRleFJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OmJsb2JSZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpibG9iUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6YmxvYkZpbGVzVGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpibG9iRmlsZXNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OmNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJsZUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1
cmVWYWxpZFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJ
bmRleFJlY29yZHNJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVW
YWxpZE9iamVjdFN0b3JlSW5mb1RhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXhJbmZvVGFibGVGb3JJRFVwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWln
cmF0ZUluZGV4UmVjb3Jkc1RhYmxlRm9ySURVcGRhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJ
bmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFRleHRWYWx1ZUluRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMU3RhdGVtZW50OjpleGVjdXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmV4ZWN1dGVTUUxDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmVtcHR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb29raWVKYXJEQjo6dmVyaWZ5U2NoZW1hVmVyc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlU1FMU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRC
OjpleGVjdXRlU3FsU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6ZXhlY3V0
ZVNxbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRNYXhpbXVtU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6c2V0U3luY2hyb25vdXMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U6OmV4ZWN1dGVDb21tYW5kU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZTo6dGFibGVFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6
OmNsZWFyQWxsVGFibGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpwcmVw
YXJlU3RhdGVtZW50U2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6cHJl
cGFyZUhlYXBTdGF0ZW1lbnRTbG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlVHJhbnNhY3Rpb246OnJvbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNo
UG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6OnZl
cmlmeVNjaGVtYVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNRTFN0YXRlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVEQjo6ZXhlY3V0ZVNpbXBsZVNx
bCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmg6CisKIDIwMjEt
MDUtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIG1v
cmUgbG9naWMgZnJvbSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB0byBpdHMgc3ViY2xhc3NlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxM2MyNDRhYWM0NDZkYzE1NWM4NDc3NzgzYzllMDU1ZDYwZDFkZjhiLi4xM2FmZTUx
OTA0NmFlYzU2ZWExMzhmOWFmZjY2MGZjY2IwNWUzOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDIxLTA1LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXZvaWQgbW9yZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5nIFNRTGl0ZSBzdGF0
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjU4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
IEF2b2lkIG1vcmUgU3RyaW5nIGNyZWF0aW9ucyB3aGVuIHByZXBhcmluZyBTUUxpdGUgc3RhdGVt
ZW50cyBieSB1c2luZyBBU0NJSUxpdGVyYWwuIEFsc28gcmVuYW1lIHRoZQorICAgICAgICBTUUxp
dGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRlbWVudCgpIC8gU1FMaXRlRGF0YWJhc2U6OmV4ZWN1dGVD
b21tYW5kKCkgb3ZlcmxvYWRzIHRoYXQgdGFrZSBpbiBhIAorICAgICAgICBTdHJpbmcgdG8gbWFr
ZSBzdXJlIHRoZXkgYXJlIG5vdCBjYWxsZWQgYnkgbWlzdGFrZS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKToKKyAgICAgICAgKFdlYktpdDo6aW5zZXJ0
RGlzdGluY3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5l
Y2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjb2x1bW5zRm9yVGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbmFtZUNv
bHVtbkluVGFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdCk6CisgICAgICAgIChXZWJL
aXQ6OmpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aW5jcmVtZW50UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFya0FzUHJldmFs
ZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluZE5vdFZlcnlQcmV2YWxlbnRSZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXREb21haW5zQXNQcmV2YWxlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJH
cmFuZGZhdGhlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRTdWJTdGF0aXN0aWNTdGF0
ZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6YXBwZW5kU3ViU3RhdGlzdGljTGlzdCBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om1pZ3JhdGVJ
dGVtVGFibGVJZk5lZWRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6Y3JlYXRlVGFibGVzSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnBvcHVsYXRlUGFnZVVSTFRv
SWNvblVSTE1hcCk6CisKIDIwMjEtMDUtMTcgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVUF0gV2ViQ29udGVudCBwcm9jZXNzIHNob3VsZCBub3QgcHVsbCBh
dWRpbyBzZXNzaW9uIGNhdGVnb3J5IGZyb20gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCmluZGV4IGE5NGJhMjk0N2YwMzcwNGVmNjc2Y2ZmMTNiMjE1YTM5YmMyODc1MzYuLmFjOGQ2
ZjY2ZDljNTE4N2MyNDNhNWI3NWE2YWEyZDk5NjRlY2YzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDUtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBBdm9pZCBtb3JlIFN0cmluZyBjcmVhdGlvbnMgd2hlbiBwcmVwYXJp
bmcgU1FMaXRlIHN0YXRlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNTg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5z
ZW4uCisKKyAgICAgICAgQXZvaWQgbW9yZSBTdHJpbmcgY3JlYXRpb25zIHdoZW4gcHJlcGFyaW5n
IFNRTGl0ZSBzdGF0ZW1lbnRzIGJ5IHVzaW5nIEFTQ0lJTGl0ZXJhbC4gQWxzbyByZW5hbWUgdGhl
CisgICAgICAgIFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50KCkgLyBTUUxpdGVEYXRh
YmFzZTo6ZXhlY3V0ZUNvbW1hbmQoKSBvdmVybG9hZHMgdGhhdCB0YWtlIGluIGEgCisgICAgICAg
IFN0cmluZyB0byBtYWtlIHN1cmUgdGhleSBhcmUgbm90IGNhbGxlZCBieSBtaXN0YWtlLgorCisg
ICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VB
cmVhU3luYzo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKToKKyAgICAgICAgKiBTdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6Om9wZW5U
cmFja2VyRGF0YWJhc2UpOgorCiAyMDIxLTA1LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXplIC8gT3B0aW1pemUgU1FMaXRlU3RhdGVtZW50IGNy
ZWF0aW9uIGFuZCBwcmVwYXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCA5YWFhMGZkNTNkZWNkMWFkNmY4NTUwMDZkYzczYTU3NTRmNzcyM2Y5Li45OTBhOTk5NTRk
YjdlMWY3ZjE4YWE5OTFmN2Q2ZWQ4YjhiMjI5MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtNzEsNiArNzEsMTMgQEAgc3RhdGljIGNvbnN0IGludCBjdXJyZW50TWV0
YWRhdGFWZXJzaW9uID0gMTsKIC8vIFRoZSBJbmRleGVkRGF0YWJhc2Ugc3BlYyBkZWZpbmVzIHRo
ZSBtYXgga2V5IGdlbmVyYXRvciB2YWx1ZSBhcyAyXjUzLgogc3RhdGljIGNvbnN0IHVpbnQ2NF90
IG1heEdlbmVyYXRvclZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIAorI2RlZmluZSBUQUJMRV9T
Q0hFTUFfUFJFRklYICJDUkVBVEUgVEFCTEUgIgorI2RlZmluZSBWM19SRUNPUkRTX1RBQkxFX1ND
SEVNQV9TVUZGSVggIiAob2JqZWN0U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwsIGtleSBURVhUIENPTExBVEUgSURCS0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUws
IHZhbHVlIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHJlY29yZElEIElOVEVHRVIgUFJJTUFS
WSBLRVkpIl9zCisjZGVmaW5lIFYzX0lOREVYX1JFQ09SRFNfVEFCTEVfU0NIRU1BX1NVRkZJWCAi
IChpbmRleElEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJ
RCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUgSURC
S0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIFRFWFQgQ09MTEFURSBJREJLRVkg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVSZWNvcmRJRCBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zOworI2RlZmluZSBJTkRFWF9JTkZPX1RBQkxFX1ND
SEVNQV9TVUZGSVggIiAoaWQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBuYW1l
IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleVBhdGggQkxPQiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMLCBpc1VuaXF1ZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG11bHRp
RW50cnkgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfczsKKyNkZWZpbmUgQkxP
Ql9SRUNPUkRTX1RBQkxFX1NDSEVNQV9TVUZGSVggIiAob2JqZWN0U3RvcmVSb3cgSU5URUdFUiBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBibG9iVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCkiX3M7CisjZGVmaW5lIEJMT0JfRklMRVNfVEFCTEVfU0NIRU1BX1NVRkZJWCAiIChi
bG9iVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
RkFJTCwgZmlsZU5hbWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBD
T05GTElDVCBGQUlMKSJfczsKKwogc3RhdGljIGludCBpZGJLZXlDb2xsYXRlKGludCBhTGVuZ3Ro
LCBjb25zdCB2b2lkKiBhQnVmZmVyLCBpbnQgYkxlbmd0aCwgY29uc3Qgdm9pZCogYkJ1ZmZlcikK
IHsKICAgICBJREJLZXlEYXRhIGEsIGI7CkBAIC0xMjYsMjEgKzEzMywxOSBAQCBzdGF0aWMgY29u
c3QgU3RyaW5nJiB2MlJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCiAgICAgcmV0dXJuIHYy
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nIHYzUmVj
b3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQorc3RhdGljIEFTQ0lJTGl0
ZXJhbCB2M1JlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNS
RUFURSBUQUJMRSAiLCB0YWJsZU5hbWUsICIgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMLCBrZXkgVEVYVCBDT0xMQVRFIElEQktFWSBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMLCB2YWx1ZSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCByZWNvcmRJRCBJ
TlRFR0VSIFBSSU1BUlkgS0VZKSIpOworICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklYICJS
ZWNvcmRzIiBWM19SRUNPUkRTX1RBQkxFX1NDSEVNQV9TVUZGSVg7CiB9CiAKLXN0YXRpYyBjb25z
dCBTdHJpbmcmIHYzUmVjb3Jkc1RhYmxlU2NoZW1hKCkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgdjNS
ZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxXVEY6OlN0cmluZz4gdjNSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcodjNSZWNvcmRzVGFibGVT
Y2hlbWEoIlJlY29yZHMiKSk7Ci0gICAgcmV0dXJuIHYzUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5n
OworICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklYICJcIlJlY29yZHNcIiIgVjNfUkVDT1JE
U19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nJiB2M1JlY29y
ZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHYzUmVjb3Jkc1Rh
YmxlU2NoZW1hVGVtcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5n
PiB2M1JlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2M1JlY29yZHNUYWJsZVNjaGVtYSgiXCJSZWNv
cmRzXCIiKSk7Ci0gICAgcmV0dXJuIHYzUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOworICAgIHJl
dHVybiBUQUJMRV9TQ0hFTUFfUFJFRklYICJfVGVtcF9SZWNvcmRzIiBWM19SRUNPUkRTX1RBQkxF
X1NDSEVNQV9TVUZGSVg7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgdjFJbmRleFJlY29yZHNU
YWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKQEAgLTE3Nyw1NSArMTgyLDM5IEBA
IHN0YXRpYyBjb25zdCBTdHJpbmcmIHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUo
KQogICAgIHJldHVybiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCi1zdGF0
aWMgY29uc3QgU3RyaW5nIHYzSW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUpCi17Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNSRUFURSBUQUJMRSAiLCB0YWJs
ZU5hbWUsICIgKGluZGV4SUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBvYmpl
Y3RTdG9yZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwga2V5IFRFWFQgQ09M
TEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdmFsdWUgVEVYVCBDT0xMQVRF
IElEQktFWSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBvYmplY3RTdG9yZVJlY29yZElEIElO
VEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKLX0KLQotc3RhdGljIGNvbnN0IFN0
cmluZyB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgdjNJ
bmRleFJlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdU
Rjo6U3RyaW5nPiBpbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyA9IHYzSW5kZXhSZWNvcmRz
VGFibGVTY2hlbWEoIkluZGV4UmVjb3JkcyIpOwotICAgIHJldHVybiBpbmRleFJlY29yZHNUYWJs
ZVNjaGVtYVN0cmluZzsKKyAgICByZXR1cm4gVEFCTEVfU0NIRU1BX1BSRUZJWCAiSW5kZXhSZWNv
cmRzIiBWM19JTkRFWF9SRUNPUkRTX1RBQkxFX1NDSEVNQV9TVUZGSVg7CiB9CiAKLXN0YXRpYyBj
b25zdCBTdHJpbmcgdjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIHYzSW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gaW5kZXhSZWNvcmRzVGFibGVTY2hl
bWFTdHJpbmcgPSB2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJcIkluZGV4UmVjb3Jkc1wiIik7
Ci0gICAgcmV0dXJuIGluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOworICAgIHJldHVybiBU
QUJMRV9TQ0hFTUFfUFJFRklYICJcIkluZGV4UmVjb3Jkc1wiIiBWM19JTkRFWF9SRUNPUkRTX1RB
QkxFX1NDSEVNQV9TVUZGSVg7CiB9CiAKLXN0YXRpYyBjb25zdCBTdHJpbmcgYmxvYlJlY29yZHNU
YWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKK3N0YXRpYyBBU0NJSUxpdGVyYWwg
djNJbmRleFJlY29yZHNUYWJsZVNjaGVtYVRlbXAoKQogewotICAgIHJldHVybiBtYWtlU3RyaW5n
KCJDUkVBVEUgVEFCTEUgIiwgdGFibGVOYW1lLCAiIChvYmplY3RTdG9yZVJvdyBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGJsb2JVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKSIpOworICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklYICJfVGVtcF9JbmRleFJl
Y29yZHMiIFYzX0lOREVYX1JFQ09SRFNfVEFCTEVfU0NIRU1BX1NVRkZJWDsKIH0KIAotc3RhdGlj
IGNvbnN0IFN0cmluZyYgYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRl
cmFsIGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcoYmxvYlJlY29yZHNUYWJsZVNj
aGVtYSgiQmxvYlJlY29yZHMiKSk7Ci0gICAgcmV0dXJuIGJsb2JSZWNvcmRzVGFibGVTY2hlbWFT
dHJpbmc7CisgICAgcmV0dXJuIFRBQkxFX1NDSEVNQV9QUkVGSVggIkJsb2JSZWNvcmRzIiBCTE9C
X1JFQ09SRFNfVEFCTEVfU0NIRU1BX1NVRkZJWDsKIH0KIAotc3RhdGljIGNvbnN0IFN0cmluZyYg
YmxvYlJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJs
b2JSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcoYmxvYlJlY29yZHNUYWJs
ZVNjaGVtYSgiXCJCbG9iUmVjb3Jkc1wiIikpOwotICAgIHJldHVybiBibG9iUmVjb3Jkc1RhYmxl
U2NoZW1hU3RyaW5nOworICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklYICJcIkJsb2JSZWNv
cmRzXCIiIEJMT0JfUkVDT1JEU19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1zdGF0aWMgY29u
c3QgU3RyaW5nIGJsb2JGaWxlc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQor
c3RhdGljIEFTQ0lJTGl0ZXJhbCBibG9iRmlsZXNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgcmV0dXJu
IG1ha2VTdHJpbmcoIkNSRUFURSBUQUJMRSAiLCB0YWJsZU5hbWUsICIgKGJsb2JVUkwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBmaWxlTmFt
ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwp
Iik7CisgICAgcmV0dXJuIFRBQkxFX1NDSEVNQV9QUkVGSVggIkJsb2JGaWxlcyIgQkxPQl9GSUxF
U19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1zdGF0aWMgY29uc3QgU3RyaW5nJiBibG9iRmls
ZXNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGJsb2JGaWxlc1RhYmxlU2NoZW1h
QWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBibG9iRmls
ZXNUYWJsZVNjaGVtYVN0cmluZyhibG9iRmlsZXNUYWJsZVNjaGVtYSgiQmxvYkZpbGVzIikpOwot
ICAgIHJldHVybiBibG9iRmlsZXNUYWJsZVNjaGVtYVN0cmluZzsKLX0KLQotc3RhdGljIGNvbnN0
IFN0cmluZyYgYmxvYkZpbGVzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJsb2JGaWxlc1RhYmxlU2NoZW1hU3RyaW5nKGJsb2JGaWxl
c1RhYmxlU2NoZW1hKCJcIkJsb2JGaWxlc1wiIikpOwotICAgIHJldHVybiBibG9iRmlsZXNUYWJs
ZVNjaGVtYVN0cmluZzsKKyAgICByZXR1cm4gVEFCTEVfU0NIRU1BX1BSRUZJWCAiXCJCbG9iRmls
ZXNcIiIgQkxPQl9GSUxFU19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCiBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVYxT2JqZWN0U3RvcmVJbmZvU2NoZW1hKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUpCkBA
IC0yMzgsOSArMjI3LDE0IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVjJPYmplY3RTdG9yZUluZm9T
Y2hlbWEoQVNDSUlMaXRlcmFsIHRhYmxlTmFtZSkKICAgICByZXR1cm4gbWFrZVN0cmluZygiQ1JF
QVRFIFRBQkxFICIsIHRhYmxlTmFtZSwgIiAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBuYW1lIFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwga2V5UGF0aCBC
TE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGF1dG9JbmMgSU5URUdFUiBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMKSIpOwogfQogCi1zdGF0aWMgU3RyaW5nIGluZGV4SW5mb1RhYmxlU2No
ZW1hKEFTQ0lJTGl0ZXJhbCB0YWJsZU5hbWUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGluZGV4SW5m
b1RhYmxlU2NoZW1hKCkKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygiQ1JFQVRFIFRBQkxFICIs
IHRhYmxlTmFtZSwgIiAoaWQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBuYW1l
IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgb2JqZWN0U3RvcmVJRCBJTlRFR0VSIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleVBhdGggQkxPQiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMLCBpc1VuaXF1ZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG11bHRp
RW50cnkgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOworICAgIHJldHVybiBU
QUJMRV9TQ0hFTUFfUFJFRklYICJJbmRleEluZm8iIElOREVYX0lORk9fVEFCTEVfU0NIRU1BX1NV
RkZJWDsKK30KKworc3RhdGljIEFTQ0lJTGl0ZXJhbCBpbmRleEluZm9UYWJsZVNjaGVtYVRlbXAo
KQoreworICAgIHJldHVybiBUQUJMRV9TQ0hFTUFfUFJFRklYICJfVGVtcF9JbmRleEluZm8iIElO
REVYX0lORk9fVEFCTEVfU0NIRU1BX1NVRkZJWDsKIH0KIAogU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpTUUxpdGVJREJCYWNraW5nU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBJ
REJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VS
b290RGlyZWN0b3J5KQpAQCAtMzA1LDIyICsyOTksMjIgQEAgc3RhdGljIGJvb2wgY3JlYXRlT3JN
aWdyYXRlUmVjb3Jkc1RhYmxlSWZOZWNlc3NhcnkoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQog
ICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgdGFi
bGUgd2l0aCB0aGUgY29ycmVjdCBzY2hlbWEgYW5kIG1pZ3JhdGUgYWxsIGV4aXN0aW5nIGNvbnRl
bnQgb3Zlci4KLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKHYzUmVjb3Jkc1RhYmxl
U2NoZW1hKCJfVGVtcF9SZWNvcmRzIikpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29t
bWFuZCh2M1JlY29yZHNUYWJsZVNjaGVtYVRlbXAoKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSByZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkg
LSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVD
b21tYW5kKCJJTlNFUlQgSU5UTyBfVGVtcF9SZWNvcmRzIChvYmplY3RTdG9yZUlELCBrZXksIHZh
bHVlKSBTRUxFQ1Qgb2JqZWN0U3RvcmVJRCwgQ0FTVChrZXkgQVMgVEVYVCksIHZhbHVlIEZST00g
UmVjb3JkcyIpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElO
VE8gX1RlbXBfUmVjb3JkcyAob2JqZWN0U3RvcmVJRCwga2V5LCB2YWx1ZSkgU0VMRUNUIG9iamVj
dFN0b3JlSUQsIENBU1Qoa2V5IEFTIFRFWFQpLCB2YWx1ZSBGUk9NIFJlY29yZHMiX3MpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IG1pZ3JhdGUgZXhpc3RpbmcgUmVjb3JkcyBjb250
ZW50ICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kKCJEUk9QIFRBQkxFIFJlY29yZHMiKSkgeworICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgUmVjb3JkcyJfcykpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgZHJvcCBleGlzdGluZyBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIs
IGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KCJBTFRFUiBUQUJMRSBfVGVtcF9SZWNvcmRzIFJFTkFNRSBUTyBSZWNvcmRzIikpIHsKKyAgICBp
ZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9SZWNvcmRzIFJF
TkFNRSBUTyBSZWNvcmRzIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCByZW5h
bWUgdGVtcG9yYXJ5IFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9y
KCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KQEAgLTQxMiw3ICs0MDYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJl
VmFsaWRSZWNvcmRzVGFibGUoKQogCiAgICAgLy8gV2hldGhlciB0aGUgdXBkYXRlZCByZWNvcmRz
IHRhYmxlIGFscmVhZHkgZXhpc3RlZCBvciBpZiBpdCB3YXMganVzdCBjcmVhdGVkIGFuZCB0aGUg
ZGF0YSBtaWdyYXRlZCBvdmVyLAogICAgIC8vIG1ha2Ugc3VyZSB0aGUgdW5pcXVlbmVzcyBpbmRl
eCBleGlzdHMuCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFVO
SVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRzIChvYmplY3RT
dG9yZUlELCBrZXkpOyIpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgi
Q1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFJlY29yZHNJbmRleCBPTiBSZWNvcmRz
IChvYmplY3RTdG9yZUlELCBrZXkpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgY3JlYXRlIFJlY29yZHNJbmRleCBvbiBSZWNvcmRzIHRhYmxlIGluIGRhdGFiYXNlICglaSkg
LSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00NzAsMjIgKzQ2NCwyMiBAQCBi
b29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSgp
CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAogICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSB0
YWJsZSB3aXRoIHRoZSBjb3JyZWN0IHNjaGVtYSBhbmQgbWlncmF0ZSBhbGwgZXhpc3RpbmcgY29u
dGVudCBvdmVyLgotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhSZWNvcmRzIikpKSB7CisgICAgaWYgKCFtX3Nx
bGl0ZURCLT5leGVjdXRlQ29tbWFuZCh2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hVGVtcCgpKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGluZGV4IHJl
Y29yZHMgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9y
KCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIklOU0VSVCBJTlRP
IF9UZW1wX0luZGV4UmVjb3JkcyBTRUxFQ1QgSW5kZXhSZWNvcmRzLmluZGV4SUQsIEluZGV4UmVj
b3Jkcy5vYmplY3RTdG9yZUlELCBJbmRleFJlY29yZHMua2V5LCBJbmRleFJlY29yZHMudmFsdWUs
IFJlY29yZHMucm93aWQgRlJPTSBJbmRleFJlY29yZHMgSU5ORVIgSk9JTiBSZWNvcmRzIE9OIFJl
Y29yZHMua2V5ID0gSW5kZXhSZWNvcmRzLnZhbHVlIEFORCBSZWNvcmRzLm9iamVjdFN0b3JlSUQg
PSBJbmRleFJlY29yZHMub2JqZWN0U3RvcmVJRCIpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5l
eGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfSW5kZXhSZWNvcmRzIFNFTEVDVCBJbmRl
eFJlY29yZHMuaW5kZXhJRCwgSW5kZXhSZWNvcmRzLm9iamVjdFN0b3JlSUQsIEluZGV4UmVjb3Jk
cy5rZXksIEluZGV4UmVjb3Jkcy52YWx1ZSwgUmVjb3Jkcy5yb3dpZCBGUk9NIEluZGV4UmVjb3Jk
cyBJTk5FUiBKT0lOIFJlY29yZHMgT04gUmVjb3Jkcy5rZXkgPSBJbmRleFJlY29yZHMudmFsdWUg
QU5EIFJlY29yZHMub2JqZWN0U3RvcmVJRCA9IEluZGV4UmVjb3Jkcy5vYmplY3RTdG9yZUlEIl9z
KSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBtaWdyYXRlIGV4aXN0aW5nIEluZGV4
UmVjb3JkcyBjb250ZW50ICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJEUk9QIFRBQkxFIEluZGV4UmVj
b3JkcyIpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJM
RSBJbmRleFJlY29yZHMiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRyb3Ag
ZXhpc3RpbmcgSW5kZXhSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RF
cnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBU
QUJMRSBfVGVtcF9JbmRleFJlY29yZHMgUkVOQU1FIFRPIEluZGV4UmVjb3JkcyIpKSB7CisgICAg
aWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfSW5kZXhS
ZWNvcmRzIFJFTkFNRSBUTyBJbmRleFJlY29yZHMiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IHJlbmFtZSB0ZW1wb3JhcnkgSW5kZXhSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIs
IG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC01MzksNyArNTMzLDcgQEAgYm9vbCBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5kZXhSZWNvcmRzSW5kZXgoKQogICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlv
bi5iZWdpbigpOwogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBJ
TkRFWCBJbmRleFJlY29yZHNJbmRleCIpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRl
Q29tbWFuZCgiRFJPUCBJTkRFWCBJbmRleFJlY29yZHNJbmRleCJfcykpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgZHJvcCBpbmRleCBJbmRleFJlY29yZHNJbmRleCBpbiBkYXRhYmFz
ZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNTk5LDcgKzU5Myw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsCiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwogICAg
IEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4
ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSURCRGF0YWJhc2VJbmZvIChrZXkgVEVYVCBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURC
LT5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElEQkRhdGFiYXNlSW5mbyAoa2V5IFRFWFQg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFs
dWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiX3MpKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBJREJEYXRhYmFzZUluZm8gdGFibGUgaW4gZGF0YWJhc2Ug
KCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTYxMSwxMyArNjA1LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNv
bW1hbmQoaW5kZXhJbmZvVGFibGVTY2hlbWEoIkluZGV4SW5mbyJfcykpKSB7CisgICAgaWYgKCFt
X3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChpbmRleEluZm9UYWJsZVNjaGVtYSgpKSkgewogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgSW5kZXhJbmZvIHRhYmxlIGluIGRhdGFi
YXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQ1JF
QVRFIFRBQkxFIEtleUdlbmVyYXRvcnMgKG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBjdXJyZW50S2V5IElO
VEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1fc3FsaXRl
REItPmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgS2V5R2VuZXJhdG9ycyAob2JqZWN0U3Rv
cmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNU
IFJFUExBQ0UsIGN1cnJlbnRLZXkgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsi
X3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBLZXlHZW5lcmF0b3Jz
IHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBt
X3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03MDIsMjIgKzY5NiwyMiBAQCBPcHRpb25hbDxJc1Nj
aGVtYVVwZ3JhZGVkPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0U3Rv
cmVJbmZvVGFibAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURC
KTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVj
dXRlQ29tbWFuZChjcmVhdGVWMk9iamVjdFN0b3JlSW5mb1NjaGVtYSgiX1RlbXBfT2JqZWN0U3Rv
cmVJbmZvIl9zKSkpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kU2xvdyhj
cmVhdGVWMk9iamVjdFN0b3JlSW5mb1NjaGVtYSgiX1RlbXBfT2JqZWN0U3RvcmVJbmZvIl9zKSkp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSBPYmplY3RT
dG9yZUluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVy
cm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICB9CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJJ
TlNFUlQgSU5UTyBfVGVtcF9PYmplY3RTdG9yZUluZm8gKGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jKSBTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMgRlJPTSBPYmplY3RTdG9yZUlu
Zm8iKSkgeworICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIklOU0VSVCBJTlRP
IF9UZW1wX09iamVjdFN0b3JlSW5mbyAoaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMpIFNFTEVD
VCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYyBGUk9NIE9iamVjdFN0b3JlSW5mbyJfcykpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbWlncmF0ZSBleGlzdGluZyBPYmplY3RTdG9y
ZUluZm8gY29udGVudCAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxp
dGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IH0KIAotICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgT2Jq
ZWN0U3RvcmVJbmZvIikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJE
Uk9QIFRBQkxFIE9iamVjdFN0b3JlSW5mbyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZCBub3QgZHJvcCBleGlzdGluZyBPYmplY3RTdG9yZUluZm8gdGFibGUgKCVpKSAtICVzIiwgbV9z
cWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBpZiAoIW1fc3FsaXRlREItPmV4
ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBfVGVtcF9PYmplY3RTdG9yZUluZm8gUkVOQU1FIFRP
IE9iamVjdFN0b3JlSW5mbyIpKSB7CisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFu
ZCgiQUxURVIgVEFCTEUgX1RlbXBfT2JqZWN0U3RvcmVJbmZvIFJFTkFNRSBUTyBPYmplY3RTdG9y
ZUluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHJlbmFtZSB0ZW1wb3Jh
cnkgT2JqZWN0U3RvcmVJbmZvIHRhYmxlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJv
cigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgfQpAQCAtNzMzLDcgKzcyNyw3IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjptaWdyYXRlSW5kZXhJbmZvVGFibGVGb3JJRFVwZGF0ZShjb25zdCBIYXNoTWFwPHN0ZDo6
CiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oZGF0YWJhc2UpOwogICAgIHRyYW5z
YWN0aW9uLmJlZ2luKCk7CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGluZGV4
SW5mb1RhYmxlU2NoZW1hKCJfVGVtcF9JbmRleEluZm8iX3MpKSkgeworICAgIGlmICghZGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoaW5kZXhJbmZvVGFibGVTY2hlbWFUZW1wKCkpKSB7CiAgICAgICAg
IExPR19FUlJPUigiRXJyb3IgY3JlYXRpbmcgX1RlbXBfSW5kZXhJbmZvIHRhYmxlIGluIGRhdGFi
YXNlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC03NzgsMTIgKzc3MiwxMiBA
QCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4SW5mb1RhYmxlRm9ySURV
cGRhdGUoY29uc3QgSGFzaE1hcDxzdGQ6OgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFk
YXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBJbmRleEluZm8iKSkgeworICAgIGlm
ICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgSW5kZXhJbmZvIl9zKSkgewog
ICAgICAgICBMT0dfRVJST1IoIkVycm9yIGRyb3BwaW5nIGV4aXN0aW5nIEluZGV4SW5mbyB0YWJs
ZSAoJWkpIC0gJXMiLCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFkYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfSW5kZXhJbmZvIFJFTkFNRSBUTyBJbmRl
eEluZm8iKSkgeworICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxF
IF9UZW1wX0luZGV4SW5mbyBSRU5BTUUgVE8gSW5kZXhJbmZvIl9zKSkgewogICAgICAgICBMT0df
RVJST1IoIkVycm9yIHJlbmFtaW5nIF9UZW1wX0luZGV4SW5mbyB0YWJsZSAoJWkpIC0gJXMiLCBk
YXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNzk4LDcgKzc5Miw3IEBAIGJvb2wgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjptaWdyYXRlSW5kZXhSZWNvcmRzVGFibGVGb3JJRFVwZGF0ZShjb25zdCBIYXNo
TWFwPHN0CiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oZGF0YWJhc2UpOwogICAg
IHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5k
KHYzSW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoIl9UZW1wX0luZGV4UmVjb3JkcyIpKSkgeworICAg
IGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYVRl
bXAoKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyBfVGVtcF9JbmRleFJl
Y29yZHMgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9yKCks
IGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
QEAgLTg0MiwxMiArODM2LDEyIEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjptaWdyYXRl
SW5kZXhSZWNvcmRzVGFibGVGb3JJRFVwZGF0ZShjb25zdCBIYXNoTWFwPHN0CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJEUk9QIFRBQkxFIElu
ZGV4UmVjb3JkcyIpKSB7CisgICAgaWYgKCFkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiRFJPUCBU
QUJMRSBJbmRleFJlY29yZHMiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgZHJvcHBp
bmcgZXhpc3RpbmcgSW5kZXhSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RF
cnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRFUiBUQUJMRSBf
VGVtcF9JbmRleFJlY29yZHMgUkVOQU1FIFRPIEluZGV4UmVjb3JkcyIpKSB7CisgICAgaWYgKCFk
YXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfSW5kZXhSZWNvcmRzIFJF
TkFNRSBUTyBJbmRleFJlY29yZHMiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgcmVu
YW1pbmcgdGVtcG9yYXJ5IEluZGV4UmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBkYXRhYmFzZS5s
YXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtMzA3MCw1ICszMDY0LDEyIEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpoYXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7CiB9CiAKKyN1bmRlZiBUQUJMRV9TQ0hFTUFfUFJFRklYCisjdW5kZWYgVjNfUkVDT1JEU19U
QUJMRV9TQ0hFTUFfU1VGRklYCisjdW5kZWYgVjNfSU5ERVhfUkVDT1JEU19UQUJMRV9TQ0hFTUFf
U1VGRklYCisjdW5kZWYgSU5ERVhfSU5GT19UQUJMRV9TQ0hFTUFfU1VGRklYCisjdW5kZWYgQkxP
Ql9SRUNPUkRTX1RBQkxFX1NDSEVNQV9TVUZGSVgKKyN1bmRlZiBCTE9CX0ZJTEVTX1RBQkxFX1ND
SEVNQV9TVUZGSVgKKwogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IGYyODkwOGNhNTE1ZTdiOWIyZmZmODQ4
OGMwMDZkMmIwZTgxYmJmNTcuLjA1NjdlYTliMzZjMmM2NDE4NDJmNzM3NjljZDZjMjMwOGI3Zjhk
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgYm9vbCBTUUxp
dGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKICAg
ICBBU1NFUlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV90cmFu
c2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAgICBhdXRvIHN0YXRlbWVudCA9IG1f
dHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCkucHJlcGFyZUhlYXBT
dGF0ZW1lbnQoc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1fdHJhbnNhY3Rpb24tPnNxbGl0
ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCkucHJlcGFyZUhlYXBTdGF0ZW1lbnRTbG93KHNxbCk7
CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3Jl
YXRlIGN1cnNvciBzdGF0ZW1lbnQgKHByZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rpb24t
PnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zNDEsNyArMzQxLDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6
OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAKICAgICBhdXRv
JiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNl
KCk7CiAgICAgaWYgKCFtX3ByZUluZGV4U3RhdGVtZW50KSB7Ci0gICAgICAgIGF1dG8gcHJlSW5k
ZXhTdGF0ZW1lbnQgPSBkYXRhYmFzZS5wcmVwYXJlSGVhcFN0YXRlbWVudChidWlsZFByZUluZGV4
U3RhdGVtZW50KGlzRGlyZWN0aW9uTmV4dCgpKSk7CisgICAgICAgIGF1dG8gcHJlSW5kZXhTdGF0
ZW1lbnQgPSBkYXRhYmFzZS5wcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coYnVpbGRQcmVJbmRleFN0
YXRlbWVudChpc0RpcmVjdGlvbk5leHQoKSkpOwogICAgICAgICBpZiAoIXByZUluZGV4U3RhdGVt
ZW50KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBwcmVwYXJlIHByZSBzdGF0
ZW1lbnQgLSAnJXMnIiwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcAppbmRleCBlNzRlMjhmNWI5ZTVmNzlmYzVkNWNkMGNlNzY2Y2EwZGRmMWJmNDc4Li42
NjY0MzNiOTg3M2VlODI1MzNlNzJmNDYzZWZiNjU1OTUwZmRjYmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMTEzLDcgKzExMyw3
IEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0RXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIG1lc3NhZ2Us
IGludCBzcWxpdGVFcnJvckNvZGUsIGNvbnN0CiAKIHN0YXRpYyBib29sIHNldFRleHRWYWx1ZUlu
RGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gZGIucHJlcGFyZVN0YXRlbWVu
dChxdWVyeSk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBkYi5wcmVwYXJlU3RhdGVtZW50U2xvdyhx
dWVyeSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc2V0IHZhbHVlIGluIGRhdGFiYXNlICglcykiLCBxdWVy
eS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMSw3ICsxMzEs
NyBAQCBzdGF0aWMgYm9vbCBzZXRUZXh0VmFsdWVJbkRhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBk
YiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29ucwogCiBzdGF0aWMgYm9vbCByZXRyaWV2ZVRleHRS
ZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBTdHJpbmcmIHJlc3VsdFN0cmluZykKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IGRiLnByZXBh
cmVTdGF0ZW1lbnQocXVlcnkpOworICAgIGF1dG8gc3RhdGVtZW50ID0gZGIucHJlcGFyZVN0YXRl
bWVudFNsb3cocXVlcnkpOwogICAgIGlmICghc3RhdGVtZW50KSB7CiAgICAgICAgIExPR19FUlJP
UigiRXJyb3IgKCVpKSBwcmVwYXJpbmcgc3RhdGVtZW50IHRvIHJlYWQgdGV4dCByZXN1bHQgZnJv
bSBkYXRhYmFzZSAoJXMpIiwgc3RhdGVtZW50LmVycm9yKCksIHF1ZXJ5LmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzcwLDcgKzM3MCw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNp
b25Jbk5ld0RhdGFiCiAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UudGFibGVFeGlz
dHModGFibGVOYW1lKSkgewogICAgICAgICAgICAgICAgIG1fbmV3ID0gdHJ1ZTsKIAotICAgICAg
ICAgICAgICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRB
QkxFICIgKyB0YWJsZU5hbWUgKyAiIChrZXkgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCk7IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmRTbG93KCJDUkVBVEUgVEFCTEUgIiArIHRhYmxlTmFtZSArICIgKGtleSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsdmFs
dWUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgewogICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcgbWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4g
ZGF0YWJhc2UsIGZhaWxlZCB0byBjcmVhdGUgJ2luZm8nIHRhYmxlIiwgbV9zcWxpdGVEYXRhYmFz
ZS5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAg
IG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCA3NTk1ZjkwNmIwOGVk
NWQ0OTQzNjNjNTE5ZmQ3NjIwOGRhZmY3YWRmLi5mNjg0ZjNhMWExMjUyZmM0NTNkM2E2ODY1OTBl
NDVlZjVhOTFjNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0xMjcsMTQgKzEyNywxNCBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25BY3Rpb24g
Y3JlYXRlQWN0aW9uKQogICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwog
CiAgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJPcmlnaW5zIikpIHsKLSAgICAgICAg
aWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3Jp
Z2luIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1
dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgT3JpZ2lucyAob3JpZ2luIFRFWFQgVU5JUVVFIE9OIENP
TkZMSUNUIFJFUExBQ0UsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7
Il9zKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IGFuZCBoZXJlCiAgICAgICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgT3JpZ2lucyB0YWJsZSIpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKCFtX2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJEYXRhYmFzZXMiKSkgewotICAg
ICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBEYXRhYmFz
ZXMgKGd1aWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBvcmlnaW4gVEVYVCwg
bmFtZSBURVhULCBkaXNwbGF5TmFtZSBURVhULCBlc3RpbWF0ZWRTaXplIElOVEVHRVIsIHBhdGgg
VEVYVCk7IikpIHsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVB
VEUgVEFCTEUgRGF0YWJhc2VzIChndWlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVO
VCwgb3JpZ2luIFRFWFQsIG5hbWUgVEVYVCwgZGlzcGxheU5hbWUgVEVYVCwgZXN0aW1hdGVkU2l6
ZSBJTlRFR0VSLCBwYXRoIFRFWFQpOyJfcykpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBhbmQg
aGVyZQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIERhdGFiYXNlcyB0
YWJsZSIpOwogICAgICAgICB9CkBAIC0xMjY3LDE1ICsxMjY3LDE1IEBAIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1
dGVDb21tYW5kKCJCRUdJTiBFWENMVVNJVkUgVFJBTlNBQ1RJT047IikpCisgICAgaWYgKCFkYXRh
YmFzZS5leGVjdXRlQ29tbWFuZCgiQkVHSU4gRVhDTFVTSVZFIFRSQU5TQUNUSU9OOyJfcykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhvbGQgdGhl
IGV4Y2x1c2l2ZSBsb2NrIHRvIHRoaXMgZmlsZS4KICAgICAvLyBDaGVjayB0aGF0IHRoZSBkYXRh
YmFzZSBkb2Vzbid0IGNvbnRhaW4gYW55IHRhYmxlcy4KLSAgICBpZiAoIWRhdGFiYXNlLmV4ZWN1
dGVDb21tYW5kKCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndGFi
bGUnOyIpKQorICAgIGlmICghZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIlNFTEVDVCBuYW1lIEZS
T00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZSc7Il9zKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNPTU1JVCBUUkFOU0FDVElP
TjsiKTsKKyAgICBkYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ09NTUlUIFRSQU5TQUNUSU9OOyJf
cyk7CiAKICAgICBkYXRhYmFzZS5jbG9zZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKaW5kZXggOWIxOTBjYWE5NjNlNWEx
YTc1MmFkOWVmMjQ2MDUxYzg0NjJlYTMxNC4uMTQ3OThkOTc1NGQyYjhmOTYzYWYwMWI1NjM2YjA4
ZmQyN2EzNTVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgU1FMU3RhdGVtZW50
OjpleGVjdXRlKERhdGFiYXNlJiBkYikKIAogICAgIFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSA9
IGRiLnNxbGl0ZURhdGFiYXNlKCk7CiAKLSAgICBhdXRvIHN0YXRlbWVudCA9IGRhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnQobV9zdGF0ZW1lbnQpOworICAgIGF1dG8gc3RhdGVtZW50ID0gZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudFNsb3cobV9zdGF0ZW1lbnQpOwogICAgIGlmICghc3RhdGVtZW50
KSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiVW5hYmxlIHRvIHZlcmlmeSBjb3JyZWN0bmVz
cyBvZiBzdGF0ZW1lbnQgJXMgLSBlcnJvciAlaSAoJXMpIiwgbV9zdGF0ZW1lbnQuYXNjaWkoKS5k
YXRhKCksIHN0YXRlbWVudC5lcnJvcigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgIGlmIChzdGF0ZW1lbnQuZXJyb3IoKSA9PSBTUUxJVEVfSU5URVJSVVBUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKaW5kZXggMDk3NDg4OTJkNmFkN2IwODNjNmE5NGE0MmY2MjY5M2VjYmIxYjE3NS4u
MmIwYTY1MzZmOTRlMzQxM2UzNTM2MmJkMzRmZmIxNTJlNzY1ODE1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzMiwxNSArNTMzLDE0IEBAIGJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luKiBvCiAgICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQodXBkYXRlU3RhdGVtZW50LnZhbHVl
KCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU1FMQ29tbWFu
ZChjb25zdCBTdHJpbmcmIHNxbCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmV4ZWN1
dGVTUUxDb21tYW5kKEFTQ0lJTGl0ZXJhbCBzcWwpCiB7CiAgICAgQVNTRVJUKFNRTGl0ZURhdGFi
YXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogICAgIEFTU0VSVChtX2Rh
dGFiYXNlLmlzT3BlbigpKTsKICAgICAKICAgICBib29sIHJlc3VsdCA9IG1fZGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmQoc3FsKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgTE9HX0VSUk9SKCJB
cHBsaWNhdGlvbiBDYWNoZSBTdG9yYWdlOiBmYWlsZWQgdG8gZXhlY3V0ZSBzdGF0ZW1lbnQgXCIl
c1wiIGVycm9yIFwiJXNcIiIsIAotICAgICAgICAgICAgICAgICAgc3FsLnV0ZjgoKS5kYXRhKCks
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBMT0dfRVJST1IoIkFwcGxpY2F0
aW9uIENhY2hlIFN0b3JhZ2U6IGZhaWxlZCB0byBleGVjdXRlIHN0YXRlbWVudCBcIiVzXCIgZXJy
b3IgXCIlc1wiIiwgc3FsLmNoYXJhY3RlcnMoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTY3LDExICs1NjcsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKCkKICAgICBTUUxpdGVUcmFu
c2FjdGlvbiBzZXREYXRhYmFzZVZlcnNpb24obV9kYXRhYmFzZSk7CiAgICAgc2V0RGF0YWJhc2VW
ZXJzaW9uLmJlZ2luKCk7CiAKLSAgICBjaGFyIHVzZXJWZXJzaW9uU1FMWzMyXTsKLSAgICBpbnQg
dW51c2VkTnVtQnl0ZXMgPSBzbnByaW50Zih1c2VyVmVyc2lvblNRTCwgc2l6ZW9mKHVzZXJWZXJz
aW9uU1FMKSwgIlBSQUdNQSB1c2VyX3ZlcnNpb249JWQiLCBzY2hlbWFWZXJzaW9uKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHVudXNlZE51bUJ5dGVzLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZih1c2Vy
VmVyc2lvblNRTCkpID49IHVudXNlZE51bUJ5dGVzKTsKLQotICAgIGF1dG8gc3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KHVzZXJWZXJzaW9uU1FMKTsKKyAgICBhdXRvIHN0
YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiUFJB
R01BIHVzZXJfdmVyc2lvbj0lIiwgc2NoZW1hVmVyc2lvbikpOwogICAgIGlmICghc3RhdGVtZW50
KQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC02MDQsMTggKzYwMCwxOCBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlz
dCkKICAgICAKICAgICAvLyBDcmVhdGUgdGFibGVzCiAgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNS
RUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlR3JvdXBzIChpZCBJTlRFR0VSIFBSSU1BUlkg
S0VZIEFVVE9JTkNSRU1FTlQsICIKLSAgICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3RIb3N0
SGFzaCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG1hbmlmZXN0VVJMIFRFWFQg
VU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIG5ld2VzdENhY2hlIElOVEVHRVIsIG9yaWdpbiBURVhU
KSIpOwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBD
YWNoZXMgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgY2FjaGVHcm91cCBJ
TlRFR0VSLCBzaXplIElOVEVHRVIpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBU
QUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlV2hpdGVsaXN0VVJMcyAodXJsIFRFWFQgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCwgY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
KSIpOwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBD
YWNoZUFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNhcmQgSU5URUdFUiBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwp
Iik7CisgICAgICAgICAgICAgICAgICAgICAgIm1hbmlmZXN0SG9zdEhhc2ggSU5URUdFUiBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMLCBtYW5pZmVzdFVSTCBURVhUIFVOSVFVRSBPTiBDT05GTElD
VCBGQUlMLCBuZXdlc3RDYWNoZSBJTlRFR0VSLCBvcmlnaW4gVEVYVCkiX3MpOworICAgIGV4ZWN1
dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZXMgKGlkIElOVEVH
RVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgY2FjaGVHcm91cCBJTlRFR0VSLCBzaXplIElO
VEVHRVIpIl9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBF
WElTVFMgQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zKTsKKyAgICBl
eGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVBbGxvd3NB
bGxOZXR3b3JrUmVxdWVzdHMgKHdpbGRjYXJkIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCwgY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfcyk7CiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIEZhbGxiYWNrVVJM
cyAobmFtZXNwYWNlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgZmFsbGJhY2tVUkwg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCi0gICAgICAgICAgICAgICAgICAgICAg
ImNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKLSAgICBleGVjdXRl
U1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVFbnRyaWVzIChjYWNo
ZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHR5cGUgSU5URUdFUiwgcmVzb3Vy
Y2UgSU5URUdFUiBOT1QgTlVMTCkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAiY2FjaGUgSU5U
RUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSJfcyk7CisgICAgZXhlY3V0ZVNRTENvbW1h
bmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlRW50cmllcyAoY2FjaGUgSU5URUdF
UiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB0eXBlIElOVEVHRVIsIHJlc291cmNlIElOVEVH
RVIgTk9UIE5VTEwpIl9zKTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElG
IE5PVCBFWElTVFMgQ2FjaGVSZXNvdXJjZXMgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lO
Q1JFTUVOVCwgdXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgIgotICAgICAgICAg
ICAgICAgICAgICAgICJzdGF0dXNDb2RlIElOVEVHRVIgTk9UIE5VTEwsIHJlc3BvbnNlVVJMIFRF
WFQgTk9UIE5VTEwsIG1pbWVUeXBlIFRFWFQsIHRleHRFbmNvZGluZ05hbWUgVEVYVCwgaGVhZGVy
cyBURVhULCBkYXRhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKLSAgICBl
eGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVSZXNvdXJj
ZURhdGEgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgZGF0YSBCTE9CLCBw
YXRoIFRFWFQpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIERlbGV0ZWRDYWNoZVJlc291cmNlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRP
SU5DUkVNRU5ULCBwYXRoIFRFWFQpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBU
QUJMRSBJRiBOT1QgRVhJU1RTIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05GTElD
VCBJR05PUkUsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAic3RhdHVzQ29kZSBJTlRFR0VSIE5PVCBOVUxMLCByZXNwb25z
ZVVSTCBURVhUIE5PVCBOVUxMLCBtaW1lVHlwZSBURVhULCB0ZXh0RW5jb2RpbmdOYW1lIFRFWFQs
IGhlYWRlcnMgVEVYVCwgZGF0YSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9z
KTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2Fj
aGVSZXNvdXJjZURhdGEgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgZGF0
YSBCTE9CLCBwYXRoIFRFWFQpIl9zKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRB
QkxFIElGIE5PVCBFWElTVFMgRGVsZXRlZENhY2hlUmVzb3VyY2VzIChpZCBJTlRFR0VSIFBSSU1B
UlkgS0VZIEFVVE9JTkNSRU1FTlQsIHBhdGggVEVYVCkiX3MpOworICAgIGV4ZWN1dGVTUUxDb21t
YW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklR
VUUgT04gQ09ORkxJQ1QgSUdOT1JFLCBxdW90YSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwpIl9zKTsKIAogICAgIC8vIFdoZW4gYSBjYWNoZSBpcyBkZWxldGVkLCBhbGwgaXRzIGVu
dHJpZXMgYW5kIGl0cyBhbGxvd2xpc3Qgc2hvdWxkIGJlIGRlbGV0ZWQuCiAgICAgZXhlY3V0ZVNR
TENvbW1hbmQoIkNSRUFURSBUUklHR0VSIElGIE5PVCBFWElTVFMgQ2FjaGVEZWxldGVkIEFGVEVS
IERFTEVURSBPTiBDYWNoZXMiCkBAIC02MjQsMTkgKzYyMCwxOSBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKICAg
ICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBDYWNoZVdoaXRlbGlzdFVSTHMgV0hF
UkUgY2FjaGUgPSBPTEQuaWQ7IgogICAgICAgICAgICAgICAgICAgICAgICIgIERFTEVURSBGUk9N
IENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzIFdIRVJFIGNhY2hlID0gT0xELmlkOyIKICAg
ICAgICAgICAgICAgICAgICAgICAiICBERUxFVEUgRlJPTSBGYWxsYmFja1VSTHMgV0hFUkUgY2Fj
aGUgPSBPTEQuaWQ7IgotICAgICAgICAgICAgICAgICAgICAgICIgRU5EIik7CisgICAgICAgICAg
ICAgICAgICAgICAgIiBFTkQiX3MpOwogCiAgICAgLy8gV2hlbiBhIGNhY2hlIGVudHJ5IGlzIGRl
bGV0ZWQsIGl0cyByZXNvdXJjZSBzaG91bGQgYWxzbyBiZSBkZWxldGVkLgogICAgIGV4ZWN1dGVT
UUxDb21tYW5kKCJDUkVBVEUgVFJJR0dFUiBJRiBOT1QgRVhJU1RTIENhY2hlRW50cnlEZWxldGVk
IEFGVEVSIERFTEVURSBPTiBDYWNoZUVudHJpZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIiBG
T1IgRUFDSCBST1cgQkVHSU4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgREVMRVRFIEZST00g
Q2FjaGVSZXNvdXJjZXMgV0hFUkUgaWQgPSBPTEQucmVzb3VyY2U7IgotICAgICAgICAgICAgICAg
ICAgICAgICIgRU5EIik7CisgICAgICAgICAgICAgICAgICAgICAgIiBFTkQiX3MpOwogCiAgICAg
Ly8gV2hlbiBhIGNhY2hlIHJlc291cmNlIGlzIGRlbGV0ZWQsIGl0cyBkYXRhIGJsb2Igc2hvdWxk
IGFsc28gYmUgZGVsZXRlZC4KICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRSSUdHRVIg
SUYgTk9UIEVYSVNUUyBDYWNoZVJlc291cmNlRGVsZXRlZCBBRlRFUiBERUxFVEUgT04gQ2FjaGVS
ZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIiBGT1IgRUFDSCBST1cgQkVHSU4iCiAg
ICAgICAgICAgICAgICAgICAgICAgIiAgREVMRVRFIEZST00gQ2FjaGVSZXNvdXJjZURhdGEgV0hF
UkUgaWQgPSBPTEQuZGF0YTsiCi0gICAgICAgICAgICAgICAgICAgICAgIiBFTkQiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAiIEVORCJfcyk7CiAgICAgCiAgICAgLy8gV2hlbiBhIGNhY2hlIHJl
c291cmNlIGlzIGRlbGV0ZWQsIGlmIGl0IGNvbnRhaW5zIGEgbm9uLWVtcHR5IHBhdGgsIHRoYXQg
cGF0aCBzaG91bGQKICAgICAvLyBiZSBhZGRlZCB0byB0aGUgRGVsZXRlZENhY2hlUmVzb3VyY2Vz
IHRhYmxlIHNvIHRoZSBmbGF0IGZpbGUgYXQgdGhhdCBwYXRoIGNhbgpAQCAtNjQ1LDcgKzY0MSw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0
ZUlmRG9lc05vdEV4aXN0KQogICAgICAgICAgICAgICAgICAgICAgICIgRk9SIEVBQ0ggUk9XIgog
ICAgICAgICAgICAgICAgICAgICAgICIgV0hFTiBPTEQucGF0aCBOT1QgTlVMTCBCRUdJTiIKICAg
ICAgICAgICAgICAgICAgICAgICAiICBJTlNFUlQgSU5UTyBEZWxldGVkQ2FjaGVSZXNvdXJjZXMg
KHBhdGgpIHZhbHVlcyAoT0xELnBhdGgpOyIKLSAgICAgICAgICAgICAgICAgICAgICAiIEVORCIp
OworICAgICAgICAgICAgICAgICAgICAgICIgRU5EIl9zKTsKIH0KIAogYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6ZXhlY3V0ZVN0YXRlbWVudChTUUxpdGVTdGF0ZW1lbnQmIHN0YXRlbWVu
dCkKQEAgLTEyNTYsOSArMTI1Miw5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmVt
cHR5KCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIENsZWFyIGNhY2hlIGdyb3Vwcywg
Y2FjaGVzLCBjYWNoZSByZXNvdXJjZXMsIGFuZCBvcmlnaW5zLgotICAgIGV4ZWN1dGVTUUxDb21t
YW5kKCJERUxFVEUgRlJPTSBDYWNoZUdyb3VwcyIpOwotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJE
RUxFVEUgRlJPTSBDYWNoZXMiKTsKLSAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00g
T3JpZ2lucyIpOworICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUgRlJPTSBDYWNoZUdyb3Vw
cyJfcyk7CisgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIENhY2hlcyJfcyk7Cisg
ICAgZXhlY3V0ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIE9yaWdpbnMiX3MpOwogICAgIAogICAg
IC8vIENsZWFyIHRoZSBzdG9yYWdlIElEcyBmb3IgdGhlIGNhY2hlcyBpbiBtZW1vcnkuCiAgICAg
Ly8gVGhlIGNhY2hlcyB3aWxsIHN0aWxsIHdvcmssIGJ1dCBjYWNoZWQgcmVzb3VyY2VzIHdpbGwg
bm90IGJlIHNhdmVkIHRvIGRpc2sgCkBAIC0xNDM5LDcgKzE0MzUsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKQogICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKTsKICAgICB9IHdoaWxlIChzZWxlY3RQYXRocy0+
c3RlcCgpID09IFNRTElURV9ST1cpOwogICAgIAotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJERUxF
VEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgi
REVMRVRFIEZST00gRGVsZXRlZENhY2hlUmVzb3VyY2VzIl9zKTsKIH0KICAgICAKIGxvbmcgbG9u
ZyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmxhdEZpbGVBcmVhU2l6ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCmluZGV4IDAzMzAyZTdiMDg0YTIwMmJhZjFlM2JjYjUwY2VjOWQyZDA1ZTcxM2QuLjZiYTBh
OTk3YmViMmE3YjQzNTNhZTU1YjQyNGM0ODgyZGY0N2VhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBA
IC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9wZW5EYXRhYmFzZShib29sIGNy
ZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICAKICAgICBib29sIGV4ZWN1dGVTdGF0ZW1lbnQoU1FM
aXRlU3RhdGVtZW50Jik7Ci0gICAgYm9vbCBleGVjdXRlU1FMQ29tbWFuZChjb25zdCBTdHJpbmcm
KTsKKyAgICBib29sIGV4ZWN1dGVTUUxDb21tYW5kKEFTQ0lJTGl0ZXJhbCk7CiAKICAgICB2b2lk
IGNoZWNrRm9yTWF4U2l6ZVJlYWNoZWQoKTsKICAgICB2b2lkIGNoZWNrRm9yRGVsZXRlZFJlc291
cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAKaW5kZXggMmJmMzkxMmJkNGI3MTcyMjNiNDBjYzQ5YzE2NmMxYzk5MDU1
MjUzMS4uNDE2ODMyY2U1OTBjZTc2ZDAzMDkwOGMyYTUwNTI4OTcxM2Y4MWNlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3Bw
CkBAIC01OSwzMiArNTksMzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICIgIGh0dHBvbmx5
IElOVEVHRVIgTk9UIE5VTEwgREVGQVVMVCAwLCJcCiAgICAgIiAgc2VjdXJlIElOVEVHRVIgTk9U
IE5VTEwgREVGQVVMVCAwLCJcCiAgICAgIiAgbGFzdHVwZGF0ZWQgSU5URUdFUiBOT1QgTlVMTCBE
RUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLCAiXAotICAgICIgIFVOSVFVRShuYW1lLCBkb21haW4s
IHBhdGgpKTsiCisgICAgIiAgVU5JUVVFKG5hbWUsIGRvbWFpbiwgcGF0aCkpOyJfcwogI2RlZmlu
ZSBDUkVBVEVfRE9NQUlOX0lOREVYX1NRTCBcCi0gICAgIkNSRUFURSBJTkRFWCBJRiBOT1QgRVhJ
U1RTIGRvbWFpbl9pbmRleCBPTiBDb29raWUoZG9tYWluKTsiCisgICAgIkNSRUFURSBJTkRFWCBJ
RiBOT1QgRVhJU1RTIGRvbWFpbl9pbmRleCBPTiBDb29raWUoZG9tYWluKTsiX3MKICNkZWZpbmUg
Q1JFQVRFX1BBVEhfSU5ERVhfU1FMIFwKLSAgICAiQ1JFQVRFIElOREVYIElGIE5PVCBFWElTVFMg
cGF0aF9pbmRleCBPTiBDb29raWUocGF0aCk7IgorICAgICJDUkVBVEUgSU5ERVggSUYgTk9UIEVY
SVNUUyBwYXRoX2luZGV4IE9OIENvb2tpZShwYXRoKTsiX3MKICNkZWZpbmUgU0VMRUNUX0FMTF9E
T01BSU5TX1NRTCBcCi0gICAgIlNFTEVDVCBESVNUSU5DVCBkb21haW4gRlJPTSBDb29raWU7Igor
ICAgICJTRUxFQ1QgRElTVElOQ1QgZG9tYWluIEZST00gQ29va2llOyJfcwogI2RlZmluZSBDSEVD
S19FWElTVFNfQ09PS0lFX1NRTCBcCi0gICAgIlNFTEVDVCBkb21haW4gRlJPTSBDb29raWUgV0hF
UkUgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0IgPykpOyIKKyAgICAiU0VMRUNUIGRvbWFp
biBGUk9NIENvb2tpZSBXSEVSRSAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSk7Il9z
CiAjZGVmaW5lIENIRUNLX0VYSVNUU19IVFRQT05MWV9DT09LSUVfU1FMIFwKLSAgICAiU0VMRUNU
IG5hbWUgRlJPTSBDb29raWUgV0hFUkUgKG5hbWUgPSA/KSBBTkQgKGRvbWFpbiA9ID8pIEFORCAo
cGF0aCA9ID8pIEFORCAoaHR0cG9ubHkgPSAxKTsiCisgICAgIlNFTEVDVCBuYW1lIEZST00gQ29v
a2llIFdIRVJFIChuYW1lID0gPykgQU5EIChkb21haW4gPSA/KSBBTkQgKHBhdGggPSA/KSBBTkQg
KGh0dHBvbmx5ID0gMSk7Il9zCiAjZGVmaW5lIFNFVF9DT09LSUVfU1FMIFwKICAgICAiSU5TRVJU
IE9SIFJFUExBQ0UgSU5UTyBDb29raWUgKG5hbWUsIHZhbHVlLCBkb21haW4sIHBhdGgsIGV4cGly
ZXMsIHNpemUsIHNlc3Npb24sIGh0dHBvbmx5LCBzZWN1cmUpICJcCi0gICAgIlZBTFVFUyAoPywg
PywgPywgPywgPywgPywgPywgPywgPyk7IgorICAgICJWQUxVRVMgKD8sID8sID8sID8sID8sID8s
ID8sID8sID8pOyJfcwogI2RlZmluZSBERUxFVEVfQ09PS0lFX0JZX05BTUVfRE9NQUlOX1BBVEhf
U1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIG5hbWUgPSA/IEFORCBkb21haW4g
PSA/IEFORCBwYXRoID0gPzsiCisgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSBuYW1lID0g
PyBBTkQgZG9tYWluID0gPyBBTkQgcGF0aCA9ID87Il9zCiAjZGVmaW5lIERFTEVURV9DT09LSUVf
QllfTkFNRV9ET01BSU5fU1FMIFwKLSAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIG5hbWUg
PSA/IEFORCBkb21haW4gPSA/OyIKKyAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIG5hbWUg
PSA/IEFORCBkb21haW4gPSA/OyJfcwogI2RlZmluZSBERUxFVEVfQUxMX1NFU1NJT05fQ09PS0lF
X1NRTCBcCi0gICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSBzZXNzaW9uID0gMTsiCisgICAg
IkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSBzZXNzaW9uID0gMTsiX3MKICNkZWZpbmUgREVMRVRF
X0NPT0tJRVNfQllfRE9NQUlOX1NRTCBcCi0gICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSBk
b21haW4gPSA/IDsiCisgICAgIkRFTEVURSBGUk9NIENvb2tpZSBXSEVSRSBkb21haW4gPSA/IDsi
X3MKICNkZWZpbmUgREVMRVRFX0NPT0tJRVNfQllfRE9NQUlOX0VYQ0VQVF9IVFRQX09OTFlfU1FM
IFwKLSAgICAiREVMRVRFIEZST00gQ29va2llIFdIRVJFIChkb21haW4gPSA/KSBBTkQgKGh0dHBv
bmx5ID0gMCk7IgorICAgICJERUxFVEUgRlJPTSBDb29raWUgV0hFUkUgKGRvbWFpbiA9ID8pIEFO
RCAoaHR0cG9ubHkgPSAwKTsiX3MKICNkZWZpbmUgREVMRVRFX0FMTF9DT09LSUVfU1FMIFwKLSAg
ICAiREVMRVRFIEZST00gQ29va2llOyIKKyAgICAiREVMRVRFIEZST00gQ29va2llOyJfcwogCiAK
IC8vIElmIHRoZSBkYXRhYmFzZSBzY2hlbWEgaXMgdXBkYXRlZDoKQEAgLTEyMyw3ICsxMjMsNyBA
QCBib29sIENvb2tpZUphckRCOjpvcGVuRGF0YWJhc2UoKQogICAgIGlmIChleGlzdHNEYXRhYmFz
ZUZpbGUpIHsKICAgICAgICAgaWYgKG1fZGF0YWJhc2Uub3BlbihtX2RhdGFiYXNlUGF0aCkpIHsK
ICAgICAgICAgICAgIGlmIChjaGVja0RhdGFiYXNlVmFsaWRpdHkoKSkKLSAgICAgICAgICAgICAg
ICBleGVjdXRlU3FsKERFTEVURV9BTExfU0VTU0lPTl9DT09LSUVfU1FMKTsKKyAgICAgICAgICAg
ICAgICBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChERUxF
VEVfQUxMX1NFU1NJT05fQ09PS0lFX1NRTCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgLy8gZGVsZXRlIGRhdGFiYXNlIGFuZCB0cnkgdG8gcmUtY3JlYXRlIGFnYWluCiAg
ICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb29raWUgZGF0YWJhc2UgdmFsaWRpdHkgY2hlY2sg
ZmFpbGVkLCBhdHRlbXB0aW5nIHRvIHJlY3JlYXRlIHRoZSBkYXRhYmFzZSIpOwpAQCAtMTU0LDcg
KzE1NCw5IEBAIGJvb2wgQ29va2llSmFyREI6Om9wZW5EYXRhYmFzZSgpCiAgICAgdmVyaWZ5U2No
ZW1hVmVyc2lvbigpOwogCiAgICAgaWYgKCFleGlzdHNEYXRhYmFzZUZpbGUgfHwgIW1fZGF0YWJh
c2UudGFibGVFeGlzdHMoIkNvb2tpZSIpKSB7Ci0gICAgICAgIGJvb2wgb2sgPSBleGVjdXRlU3Fs
KENSRUFURV9DT09LSUVfVEFCTEVfU1FMKSAmJiBleGVjdXRlU3FsKENSRUFURV9ET01BSU5fSU5E
RVhfU1FMKSAmJiBleGVjdXRlU3FsKENSRUFURV9QQVRIX0lOREVYX1NRTCk7CisgICAgICAgIGJv
b2wgb2sgPSBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChD
UkVBVEVfQ09PS0lFX1RBQkxFX1NRTCkpCisgICAgICAgICAgICAmJiBleGVjdXRlU1FMU3RhdGVt
ZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChDUkVBVEVfRE9NQUlOX0lOREVYX1NRTCkp
CisgICAgICAgICAgICAmJiBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0YWJhc2UucHJlcGFyZVN0
YXRlbWVudChDUkVBVEVfUEFUSF9JTkRFWF9TUUwpKTsKIAogICAgICAgICBpZiAoIW9rKSB7CiAg
ICAgICAgICAgICAvLyBnaXZlIHVwIGNyZWF0ZSBkYXRhYmFzZSBhdCB0aGlzIHRpbWUgKGFsbCBj
b29raWVzIG9uIHJlcXVlc3QvcmVzcG9uc2UgYXJlIGlnbm9yZWQpCkBAIC0yMTEsNyArMjEzLDcg
QEAgdm9pZCBDb29raWVKYXJEQjo6dmVyaWZ5U2NoZW1hVmVyc2lvbigpCiAgICAgfQogCiAgICAg
Ly8gVXBkYXRlIHZlcnNpb24KLSAgICBleGVjdXRlU3FsKG1ha2VTdHJpbmcoIlBSQUdNQSB1c2Vy
X3ZlcnNpb249Iiwgc2NoZW1hVmVyc2lvbikpOworICAgIGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9k
YXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJQUkFHTUEgdXNlcl92ZXJz
aW9uPSIsIHNjaGVtYVZlcnNpb24pKSk7CiB9CiAKIHZvaWQgQ29va2llSmFyREI6OmRlbGV0ZUFs
bFRhYmxlcygpCkBAIC02MjEsMTAgKzYyMywxMCBAQCBib29sIENvb2tpZUphckRCOjpkZWxldGVB
bGxDb29raWVzKCkKICAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2RhdGFiYXNlLmlzT3Blbigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZXhlY3V0ZVNxbChERUxFVEVf
QUxMX0NPT0tJRV9TUUwpOworICAgIHJldHVybiBleGVjdXRlU1FMU3RhdGVtZW50KG1fZGF0YWJh
c2UucHJlcGFyZVN0YXRlbWVudChERUxFVEVfQUxMX0NPT0tJRV9TUUwpKTsKIH0KIAotdm9pZCBD
b29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKK3Zv
aWQgQ29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHNxbCkK
IHsKICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZUhlYXBTdGF0ZW1lbnQo
c3FsKTsKICAgICBBU1NFUlQoc3RhdGVtZW50KTsKQEAgLTYzOSw5ICs2NDEsOCBAQCBTUUxpdGVT
dGF0ZW1lbnQmIENvb2tpZUphckRCOjpwcmVwYXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNx
bCkKICAgICByZXR1cm4gKnN0YXRlbWVudDsKIH0KIAotYm9vbCBDb29raWVKYXJEQjo6ZXhlY3V0
ZVNxbChjb25zdCBTdHJpbmcmIHNxbCkKK2Jvb2wgQ29va2llSmFyREI6OmV4ZWN1dGVTUUxTdGF0
ZW1lbnQoRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+JiYgc3RhdGVtZW50KQogewotICAg
IGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KHNxbCk7CiAgICAg
aWYgKCFzdGF0ZW1lbnQgJiYgIWNoZWNrU1FMaXRlUmV0dXJuQ29kZShzdGF0ZW1lbnQuZXJyb3Io
KSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcHJlcGFyZSAlcyBlcnJvcjogJXMi
LCBzcWwuYXNjaWkoKS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCmluZGV4IDdjMGVhNDdlY2U0ZmYwZDQ3MmNlNTk1YzkxZWExY2Zh
OTBiMjVjYTcuLjQ4NDljNjY3YzJhMTI4ODQxZmZiMDU3NmE2NjkwYzRkOGZkNDVlMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5o
CkBAIC05Myw5ICs5Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2ZXJpZnlTY2hlbWFWZXJzaW9u
KCk7CiAgICAgdm9pZCBkZWxldGVBbGxUYWJsZXMoKTsKIAotICAgIHZvaWQgY3JlYXRlUHJlcGFy
ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNyZWF0ZVByZXBhcmVTdGF0ZW1l
bnQoQVNDSUlMaXRlcmFsKTsKICAgICBTUUxpdGVTdGF0ZW1lbnQmIHByZXBhcmVkU3RhdGVtZW50
KGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmKTsKKyAg
ICBib29sIGV4ZWN1dGVTUUxTdGF0ZW1lbnQoRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+
JiYpOwogCiAgICAgYm9vbCBkZWxldGVDb29raWVJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIGJvb2wgaGFz
SHR0cE9ubHlDb29raWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwg
Y29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwCmluZGV4IDk5YzJlNTJhZjQyY2YxMGI3ZTFjNTAyNjZjN2U2ZWYwNTU1
YThhNzcuLjIwMjZmYTIzMTFhN2UxYWM3MGZlNzYzYzk4MjM0OGE2ODY2ZDM1MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMjkzLDcg
KzI5Myw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldE1heGltdW1TaXplKGludDY0X3Qgc2l6
ZSkKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICBlbmFibGVB
dXRob3JpemVyKGZhbHNlKTsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVu
dChtYWtlU3RyaW5nKCJQUkFHTUEgbWF4X3BhZ2VfY291bnQgPSAiLCBuZXdNYXhQYWdlQ291bnQp
KTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmco
IlBSQUdNQSBtYXhfcGFnZV9jb3VudCA9ICIsIG5ld01heFBhZ2VDb3VudCkpOwogICAgIGlmICgh
c3RhdGVtZW50IHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpCiAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHNldCBtYXhpbXVtIHNpemUgb2YgZGF0YWJhc2UgdG8gJWxsaSBi
eXRlcyIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc2l6ZSkpOwogCkBAIC0zNTEsNyArMzUxLDcg
QEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKCkKIAogdm9pZCBTUUxpdGVEYXRh
YmFzZTo6c2V0U3luY2hyb25vdXMoU3luY2hyb25vdXNQcmFnbWEgc3luYykKIHsKLSAgICBleGVj
dXRlQ29tbWFuZChtYWtlU3RyaW5nKCJQUkFHTUEgc3luY2hyb25vdXMgPSAiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3luYykpKTsKKyAgICBleGVjdXRlQ29tbWFuZFNsb3cobWFrZVN0cmluZygi
UFJBR01BIHN5bmNocm9ub3VzID0gIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN5bmMpKSk7CiB9
CiAKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEJ1c3lUaW1lb3V0KGludCBtcykKQEAgLTM3MCw5
ICszNzAsOSBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRCdXN5SGFuZGxlcihpbnQoKmhhbmRs
ZXIpKHZvaWQqLCBpbnQpKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJCdXN5IGhhbmRsZXIg
c2V0IG9uIG5vbi1vcGVuIGRhdGFiYXNlIik7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6OmV4
ZWN1dGVDb21tYW5kKGNvbnN0IFN0cmluZyYgcXVlcnkpCitib29sIFNRTGl0ZURhdGFiYXNlOjpl
eGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJiBxdWVyeSkKIHsKLSAgICBhdXRvIHN0YXRl
bWVudCA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnkpOworICAgIGF1dG8gc3RhdGVtZW50ID0gcHJl
cGFyZVN0YXRlbWVudFNsb3cocXVlcnkpOwogICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVt
ZW50LT5leGVjdXRlQ29tbWFuZCgpOwogfQogCkBAIC0zODIsMTkgKzM4MiwxNyBAQCBib29sIFNR
TGl0ZURhdGFiYXNlOjpleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwgcXVlcnkpCiAgICAgcmV0
dXJuIHN0YXRlbWVudCAmJiBzdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCk7CiB9CiAKLWJvb2wg
U1FMaXRlRGF0YWJhc2U6OnJldHVybnNBdExlYXN0T25lUmVzdWx0KGNvbnN0IFN0cmluZyYgc3Fs
KQotewotICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudChzcWwpOwotICAgIHJl
dHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5yZXR1cm5zQXRMZWFzdE9uZVJlc3VsdCgpOwot
fQotCi1ib29sIFNRTGl0ZURhdGFiYXNlOjp0YWJsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHRhYmxl
bmFtZSkKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6OnRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYgdGFi
bGVOYW1lKQogewogICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8gc3RhdGVtZW50ID0gcHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIG5hbWUgRlJPTSBz
cWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndGFibGUnIEFORCBuYW1lID0gJyIgKyB0YWJsZW5h
bWUgKyAiJzsiX3MpOwotICAgIHJldHVybiBzdGF0ZW1lbnQgJiYgc3RhdGVtZW50LT5zdGVwKCkg
PT0gU1FMSVRFX1JPVzsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlNF
TEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ3RhYmxlJyBBTkQgbmFt
ZSA9ID87Il9zKTsKKyAgICBpZiAoIXN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIHRhYmxlTmFtZSkgIT0gU1FMSVRFX09LKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0YXRlbWVudC0+c3RlcCgpID09IFNR
TElURV9ST1c7CiB9CiAKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKCkKQEAg
LTQwOSw3ICs0MDcsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcygpCiAg
ICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgdGFibGUgPSB0YWJsZXMuYmVnaW4oKTsg
dGFibGUgIT0gdGFibGVzLmVuZCgpOyArK3RhYmxlICkgewogICAgICAgICBpZiAoKnRhYmxlID09
ICJzcWxpdGVfc2VxdWVuY2UiKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICgh
ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgIiArICp0YWJsZSkpCisgICAgICAgIGlmICghZXhl
Y3V0ZUNvbW1hbmRTbG93KCJEUk9QIFRBQkxFICIgKyAqdGFibGUpKQogICAgICAgICAgICAgTE9H
KFNRTERhdGFiYXNlLCAiVW5hYmxlIHRvIGRyb3AgdGFibGUgJXMiLCAoKnRhYmxlKS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgfQogfQpAQCAtNjc3LDcgKzY3NSw3IEBAIHN0YXRpYyBFeHBlY3RlZDxz
cWxpdGUzX3N0bXQqLCBpbnQ+IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoU1FMaXRlRGF0
YWJhc2UmCiAgICAgcmV0dXJuIHN0YXRlbWVudDsKIH0KIAotRXhwZWN0ZWQ8U1FMaXRlU3RhdGVt
ZW50LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYg
cXVlcnlTdHJpbmcpCitFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gU1FMaXRlRGF0YWJh
c2U6OnByZXBhcmVTdGF0ZW1lbnRTbG93KGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCiB7CiAg
ICAgQ1N0cmluZyBxdWVyeSA9IHF1ZXJ5U3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpLnV0ZjgoKTsK
ICAgICBhdXRvIHNxbFN0YXRlbWVudCA9IGNvbnN0cnVjdEFuZFByZXBhcmVTdGF0ZW1lbnQoKnRo
aXMsIHF1ZXJ5LmRhdGEoKSwgcXVlcnkubGVuZ3RoKCkpOwpAQCAtNjk4LDcgKzY5Niw3IEBAIEV4
cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZVN0YXRl
bWVudChBU0NJSUxpdGVyYWwgcXVlCiAgICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudCB7ICp0aGlz
LCBzcWxTdGF0ZW1lbnQudmFsdWUoKSB9OwogfQogCi1FeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRl
U3RhdGVtZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoY29u
c3QgU3RyaW5nJiBxdWVyeVN0cmluZykKK0V4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1l
bnQ+LCBpbnQ+IFNRTGl0ZURhdGFiYXNlOjpwcmVwYXJlSGVhcFN0YXRlbWVudFNsb3coY29uc3Qg
U3RyaW5nJiBxdWVyeVN0cmluZykKIHsKICAgICBDU3RyaW5nIHF1ZXJ5ID0gcXVlcnlTdHJpbmcu
c3RyaXBXaGl0ZVNwYWNlKCkudXRmOCgpOwogICAgIGF1dG8gc3FsU3RhdGVtZW50ID0gY29uc3Ry
dWN0QW5kUHJlcGFyZVN0YXRlbWVudCgqdGhpcywgcXVlcnkuZGF0YSgpLCBxdWVyeS5sZW5ndGgo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4
IGMwNDVmZTU5M2Q3OTlkNTIwODBkZGI5Mzk2YzQ5MzQyMTNlN2NkODAuLjA5ZjU5MWUxYWU0NDU1
ZTdlZDkzZDUwZDk1ODdjZTU5NDRjNGJlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC02MiwxMCArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUxhc3RDaGFuZ2VzQ291bnQoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgZXhlY3V0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZFNsb3coY29uc3QgU3RyaW5nJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwpOwotCi0gICAgYm9v
bCByZXR1cm5zQXRMZWFzdE9uZVJlc3VsdChjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHRhYmxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXJBbGxUYWJsZXMoKTsKQEAgLTc0LDkgKzcyLDkgQEAgcHVibGljOgog
ICAgIAogICAgIGJvb2wgdHJhbnNhY3Rpb25JblByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3M7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNR
TGl0ZVN0YXRlbWVudCwgaW50PiBwcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgcXVlcnkp
OworICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFNRTGl0ZVN0YXRlbWVudCwgaW50PiBwcmVw
YXJlU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KTsKICAgICBXRUJDT1JFX0VYUE9S
VCBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gcHJlcGFyZVN0YXRlbWVudChBU0NJSUxp
dGVyYWwgcXVlcnkpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxp
dGVTdGF0ZW1lbnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgcXVl
cnkpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFVuaXF1ZVJlZjxTUUxpdGVTdGF0ZW1l
bnQ+LCBpbnQ+IHByZXBhcmVIZWFwU3RhdGVtZW50U2xvdyhjb25zdCBTdHJpbmcmIHF1ZXJ5KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50Piwg
aW50PiBwcmVwYXJlSGVhcFN0YXRlbWVudChBU0NJSUxpdGVyYWwgcXVlcnkpOwogCiAgICAgLy8g
QWJvcnRzIHRoZSBjdXJyZW50IGRhdGFiYXNlIG9wZXJhdGlvbi4gVGhpcyBpcyB0aHJlYWQgc2Fm
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDk3MWJiYTU2NzQ3NGViNjg5NmNlNTYxYzdlNjk5NzY2MDRkZGU3OGMuLjA4ZTll
YjczZGIyNGEwOTBhN2EwODBjMWE4MTU2OTMxOGU1YTI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApAQCAtNjIsOSArNjIsOSBA
QCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiAgICAgICAgIFNRTGl0ZURhdGFiYXNl
VHJhY2tlcjo6aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRpZgog
ICAgICAgICBpZiAobV9yZWFkT25seSkKLSAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIu
ZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIik7CisgICAgICAgICAgICBtX2luUHJvZ3Jlc3MgPSBtX2Ri
LmV4ZWN1dGVDb21tYW5kKCJCRUdJTiJfcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
aW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSIpOworICAg
ICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4gSU1NRURJ
QVRFIl9zKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1faW5Qcm9n
cmVzczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1faW5Qcm9ncmVz
cykKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6Y29tbWl0KCkKIHsK
ICAgICBpZiAobV9pblByb2dyZXNzKSB7CiAgICAgICAgIEFTU0VSVChtX2RiLm1fdHJhbnNhY3Rp
b25JblByb2dyZXNzKTsKLSAgICAgICAgbV9pblByb2dyZXNzID0gIW1fZGIuZXhlY3V0ZUNvbW1h
bmQoIkNPTU1JVCIpOworICAgICAgICBtX2luUHJvZ3Jlc3MgPSAhbV9kYi5leGVjdXRlQ29tbWFu
ZCgiQ09NTUlUIl9zKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1f
aW5Qcm9ncmVzczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAoIW1faW5Q
cm9ncmVzcykKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6cm9sbGJh
Y2soKQogICAgIC8vIGEgbm9uLXplcm8vdHJ1ZSByZXN1bHQgKGh0dHA6Ly93d3cuc3FsaXRlLm9y
Zy9sYW5nX3RyYW5zYWN0aW9uLmh0bWwpLgogICAgIGlmIChtX2luUHJvZ3Jlc3MpIHsKICAgICAg
ICAgQVNTRVJUKG1fZGIubV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MpOwotICAgICAgICBtX2RiLmV4
ZWN1dGVDb21tYW5kKCJST0xMQkFDSyIpOworICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJS
T0xMQkFDSyJfcyk7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICBtX2Ri
Lm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIu
Y3BwCmluZGV4IGExOTM5YWFkMWIwYzg2ZjAzNWRhMDA5MjVmZmVjZjE3OWQ5NjdkYmEuLjNkYzM4
NzI3ZTVjMzAwNDM2MmFhYTc2ZDc3ZGRlMjU5MjA3YWI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIGJvb2wgU2VhcmNoUG9wdXBNZW51REI6Om9wZW5EYXRhYmFzZSgpCiAKICAgICBib29sIGRh
dGFiYXNlVmFsaWRpdHkgPSB0cnVlOwogICAgIGlmICghZXhpc3RzRGF0YWJhc2VGaWxlIHx8ICFt
X2RhdGFiYXNlLnRhYmxlRXhpc3RzKCJTZWFyY2giKSkKLSAgICAgICAgZGF0YWJhc2VWYWxpZGl0
eSA9IGRhdGFiYXNlVmFsaWRpdHkgJiYgKGV4ZWN1dGVTaW1wbGVTcWwoY3JlYXRlU2VhcmNoVGFi
bGVTUUwpID09IFNRTElURV9ET05FKTsKKyAgICAgICAgZGF0YWJhc2VWYWxpZGl0eSA9IGRhdGFi
YXNlVmFsaWRpdHkgJiYgKGV4ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KGNyZWF0ZVNlYXJjaFRhYmxlU1FMKSkgPT0gU1FMSVRFX0RPTkUpOwogCiAgICAgaWYg
KCFkYXRhYmFzZVZhbGlkaXR5KSB7CiAgICAgICAgIC8vIGdpdmUgdXAgY3JlYXRlIGRhdGFiYXNl
IGF0IHRoaXMgdGltZSAoc2VhcmNoIHRlcm1zIHdpbGwgbm90IGJlIHNhdmVkKQpAQCAtMjU0LDcg
KzI1NCw4IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51REI6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQog
ICAgIH0KIAogICAgIC8vIFVwZGF0ZSB2ZXJzaW9uCi0gICAgZXhlY3V0ZVNpbXBsZVNxbChtYWtl
U3RyaW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKTsKKworICAgIGV4
ZWN1dGVTUUxTdGF0ZW1lbnQobV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3Ry
aW5nKCJQUkFHTUEgdXNlcl92ZXJzaW9uPSIsIHNjaGVtYVZlcnNpb24pKSk7CiB9CiAKIHZvaWQg
U2VhcmNoUG9wdXBNZW51REI6OmNoZWNrU1FMaXRlUmV0dXJuQ29kZShpbnQgYWN0dWFsKQpAQCAt
MjcxLDE2ICsyNzIsMTUgQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVEQjo6Y2hlY2tTUUxpdGVSZXR1
cm5Db2RlKGludCBhY3R1YWwpCiAgICAgfQogfQogCi1pbnQgU2VhcmNoUG9wdXBNZW51REI6OmV4
ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3JlRXJyb3IpCitpbnQg
U2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTUUxTdGF0ZW1lbnQoRXhwZWN0ZWQ8U1FMaXRlU3Rh
dGVtZW50LCBpbnQ+JiYgc3RhdGVtZW50KQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KHNxbCk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAg
ICAgY2hlY2tTUUxpdGVSZXR1cm5Db2RlKHN0YXRlbWVudC5lcnJvcigpKTsKICAgICAgICAgcmV0
dXJuIHN0YXRlbWVudC5lcnJvcigpOwogICAgIH0KIAogICAgIGludCByZXQgPSBzdGF0ZW1lbnQt
PnN0ZXAoKTsKLSAgICBpZiAocmV0ICE9IFNRTElURV9PSyAmJiByZXQgIT0gU1FMSVRFX0RPTkUg
JiYgcmV0ICE9IFNRTElURV9ST1cgJiYgIWlnbm9yZUVycm9yKQorICAgIGlmIChyZXQgIT0gU1FM
SVRFX09LICYmIHJldCAhPSBTUUxJVEVfRE9ORSAmJiByZXQgIT0gU1FMSVRFX1JPVykKICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZXhlY3V0ZSAlcyBlcnJvcjogJXMiLCBzcWwuYXNjaWko
KS5kYXRhKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgIHJldHVybiByZXQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
REIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oCmlu
ZGV4IGY5MTNmNDNlYTVkMGE0Zjc0MzFhNzkyYjE2ODM4MGQ3OWQ3MmE2MTcuLjA5M2RhODMwNzg0
ZjRlYjI2M2FiZjMxYzY1YzRmMzE4M2E4ZGMxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBjaGVja0RhdGFiYXNlVmFsaWRpdHkoKTsKICAgICB2b2lkIGRlbGV0ZUFsbERh
dGFiYXNlRmlsZXMoKTsKICAgICB2b2lkIHZlcmlmeVNjaGVtYVZlcnNpb24oKTsKLSAgICBpbnQg
ZXhlY3V0ZVNpbXBsZVNxbChjb25zdCBTdHJpbmcmIHNxbCwgYm9vbCBpZ25vcmVFcnJvciA9IGZh
bHNlKTsKKyAgICBpbnQgZXhlY3V0ZVNRTFN0YXRlbWVudChFeHBlY3RlZDxTUUxpdGVTdGF0ZW1l
bnQsIGludD4mJik7CiAgICAgdm9pZCBjaGVja1NRTGl0ZVJldHVybkNvZGUoaW50IGFjdHVhbCk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gY3JlYXRlUHJlcGFyZWRTdGF0
ZW1lbnQoQVNDSUlMaXRlcmFsIHNxbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5k
ZXggYjBjNzE2MWE4MDZhODY4ZWM0ZmY0NDc2NTNiYjg1M2ZjMDk2ODQ1Yi4uZWRmOGVhMmQwNDJi
ZGM4OTBhZDJlYTNmOTdjNjI4N2VkMWE5ZTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKQEAgLTUyLDM2ICs1MiwzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25z
dCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNjsKIAotc3RhdGljIGNvbnN0IFN0cmluZyByZWNv
cmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCisjZGVmaW5lIFJFQ09SRFNf
VEFCTEVfU0NIRU1BX1BSRUZJWCAiQ1JFQVRFIFRBQkxFICIKKyNkZWZpbmUgUkVDT1JEU19UQUJM
RV9TQ0hFTUFfU1VGRklYICIoIiBcCisgICAgImtleSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UiIFwKKyAgICAiLCBvcmlnaW4gVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIiBcCisgICAgIiwgc2NvcGVVUkwgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIiBcCisgICAgIiwgdG9wT3JpZ2luIFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCIgXAorICAgICIsIGxhc3RVcGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwiIFwKKyAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwiIFwKKyAgICAiLCBzY3JpcHRVUkwgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIiBcCisgICAgIiwgd29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiIFwKKyAgICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIiBcCisgICAgIiwgcmVmZXJyZXJQb2xpY3kgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIiBcCisgICAgIiwgc2NyaXB0UmVzb3VyY2VNYXAgQkxPQiBOT1Qg
TlVMTCBPTiBDT05GTElDVCBGQUlMIiBcCisgICAgIiwgY2VydGlmaWNhdGVJbmZvIEJMT0IgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIgXAorICAgICIpIl9zOworCitzdGF0aWMgQVNDSUlMaXRl
cmFsIHJlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNSRUFU
RSBUQUJMRSAiLCB0YWJsZU5hbWUsICIgKCIKLSAgICAgICAgImtleSBURVhUIE5PVCBOVUxMIE9O
IENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UiCi0gICAgICAgICIsIG9y
aWdpbiBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCi0gICAgICAgICIsIHNjb3BlVVJM
IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgdG9wT3JpZ2luIFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgbGFzdFVwZGF0ZUNoZWNr
VGltZSBET1VCTEUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgdXBkYXRl
VmlhQ2FjaGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgotICAgICAgICAiLCBzY3Jp
cHRVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgotICAgICAgICAiLCB3b3JrZXJU
eXBlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgY29udGVudFNl
Y3VyaXR5UG9saWN5IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAgICAgIiwg
cmVmZXJyZXJQb2xpY3kgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgotICAgICAgICAi
LCBzY3JpcHRSZXNvdXJjZU1hcCBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCi0gICAg
ICAgICIsIGNlcnRpZmljYXRlSW5mbyBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCi0g
ICAgICAgICIpIik7CisgICAgcmV0dXJuIFJFQ09SRFNfVEFCTEVfU0NIRU1BX1BSRUZJWCAiUmVj
b3JkcyIgUkVDT1JEU19UQUJMRV9TQ0hFTUFfU1VGRklYOwogfQogCi1zdGF0aWMgY29uc3QgU3Ry
aW5nIHJlY29yZHNUYWJsZVNjaGVtYSgpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHJlY29yZHNUYWJs
ZVNjaGVtYUFsdGVybmF0ZSgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2NoZW1hKHJlY29yZHNUYWJsZVNjaGVtYSgi
UmVjb3JkcyIpKTsKLSAgICByZXR1cm4gc2NoZW1hOwotfQotCi1zdGF0aWMgY29uc3QgU3RyaW5n
IHJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCi17Ci0gICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2NoZW1hKHJlY29yZHNU
YWJsZVNjaGVtYSgiXCJSZWNvcmRzXCIiKSk7Ci0gICAgcmV0dXJuIHNjaGVtYTsKKyAgICByZXR1
cm4gUkVDT1JEU19UQUJMRV9TQ0hFTUFfUFJFRklYICJcIlJlY29yZHNcIiIgUkVDT1JEU19UQUJM
RV9TQ0hFTUFfU1VGRklYOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBkYXRhYmFzZUZpbGVu
YW1lRnJvbVZlcnNpb24odWludDY0X3QgdmVyc2lvbikKQEAgLTYxMCw2ICs2MDQsOSBAQCB2b2lk
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkYXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgp
CiAgICAgICAgIG1fc3RvcmUtPmRhdGFiYXNlT3BlbmVkQW5kUmVjb3Jkc0ltcG9ydGVkKCk7CiB9
CiAKKyN1bmRlZiBSRUNPUkRTX1RBQkxFX1NDSEVNQV9QUkVGSVgKKyN1bmRlZiBSRUNPUkRTX1RB
QkxFX1NDSEVNQV9TVUZGSVgKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggYThhZWQ3MzE2NTE1NWUwY2YxZjJiZDM2
MmIxMWU4OWY5YjJkZTI5Yy4uODI4NzFjZTQ4YzgzYmY1NmYyM2MyMGE0ZjRjMjA4Y2UwZjU3MWQz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCkBAIC00MzYsMTMgKzQzNiwxOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjplbmFibGVGb3JlaWduS2V5cygpCiAKIFRhYmxlQW5kSW5kZXhQYWly
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRl
eFF1ZXJpZXMoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7Ci0gICAgYXV0byBnZXRUYWJsZVN0
YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJTRUxFQ1Qg
c3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0YmxfbmFtZT0nIiwgdGFibGVOYW1lLCAiJyBB
TkQgdHlwZSA9ICd0YWJsZSciKSk7CisgICAgYXV0byBnZXRUYWJsZVN0YXRlbWVudCA9IG1fZGF0
YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hF
UkUgdGJsX25hbWU9PyBBTkQgdHlwZSA9ICd0YWJsZSciX3MpOwogICAgIGlmICghZ2V0VGFibGVT
dGF0ZW1lbnQpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVl
cmllcyBVbmFibGUgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0aGUg
dGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIAorICAgIGlmIChnZXRUYWJsZVN0YXRlbWVudC0+Ymlu
ZFRleHQoMSwgdGFibGVOYW1lKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0ZW1lbnQgdG8g
ZmV0Y2ggc2NoZW1hIGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIGlmIChn
ZXRUYWJsZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmN1cnJlbnRUYWJsZUFuZEluZGV4UXVlcmllcyBlcnJvciBleGVjdXRpbmcgc3RhdGVt
ZW50IHRvIGZldGNoIHRhYmxlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0df
U1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC00NTEsMTMgKzQ1NywxOSBAQCBUYWJsZUFuZEluZGV4UGFpciBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3VycmVudFRhYmxlQW5kSW5kZXhR
dWVyaQogCiAgICAgU3RyaW5nIGNyZWF0ZVRhYmxlUXVlcnkgPSBnZXRUYWJsZVN0YXRlbWVudC0+
Z2V0Q29sdW1uVGV4dCgwKTsKIAotICAgIGF1dG8gZ2V0SW5kZXhTdGF0ZW1lbnQgPSBtX2RhdGFi
YXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9t
YXN0ZXIgV0hFUkUgdGJsX25hbWU9JyIsIHRhYmxlTmFtZSwgIicgQU5EIHR5cGUgPSAnaW5kZXgn
IikpOworICAgIGF1dG8gZ2V0SW5kZXhTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0
ZW1lbnQoIlNFTEVDVCBzcWwgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHRibF9uYW1lPT8gQU5E
IHR5cGUgPSAnaW5kZXgnIl9zKTsKICAgICBpZiAoIWdldEluZGV4U3RhdGVtZW50KSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMgVW5hYmxlIHRvIHBy
ZXBhcmUgc3RhdGVtZW50IHRvIGZldGNoIGluZGV4IGZvciB0aGUgdGFibGUsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAorICAgIGlmIChnZXRJbmRleFN0YXRlbWVudC0+YmluZFRleHQoMSwgdGFibGVOYW1l
KSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmN1cnJlbnRUYWJsZUFuZElu
ZGV4UXVlcmllcyBVbmFibGUgdG8gYmluZCBzdGF0ZW1lbnQgdG8gZmV0Y2ggaW5kZXggZm9yIHRo
ZSB0YWJsZSwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBpbmRleDsK
ICAgICBpZiAoZ2V0SW5kZXhTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAg
ICAgIGF1dG8gcmF3SW5kZXggPSBTdHJpbmcoZ2V0SW5kZXhTdGF0ZW1lbnQtPmdldENvbHVtblRl
eHQoMCkpOwpAQCAtNTIxLDI3ICs1MzMsMjcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bmVlZHNVcGRhdGVkU2NoZW1hKCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXN0YXRpYyBTdHJpbmcgaW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRhYmxlUXVlcnkoY29uc3Qg
U3RyaW5nJiB0YWJsZSkKK3N0YXRpYyBFeHBlY3RlZDxTUUxpdGVTdGF0ZW1lbnQsIGludD4gaW5z
ZXJ0RGlzdGluY3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFz
ZSwgY29uc3QgU3RyaW5nJiB0YWJsZSkKIHsKICAgICBpZiAodGFibGUgPT0gIlN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMiKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSU5TRVJUIElO
VE8gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3ViRnJhbWVEb21haW5JRCwg
TUFYKGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW5zIEdST1VQIEJZIHN1YkZyYW1lRG9tYWluSUQsIHRvcEZyYW1lRG9tYWluSUQi
KTsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRP
IFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgU0VMRUNUIHN1YkZyYW1lRG9tYWluSUQsIE1B
WChsYXN0VXBkYXRlZCksIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBfU3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWlucyBHUk9VUCBCWSBzdWJGcmFtZURvbWFpbklELCB0b3BGcmFtZURvbWFpbklEIl9z
KTsKIAogICAgIGlmICh0YWJsZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIp
Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBNQVgobGFzdFVwZGF0
ZWQpLCB0b3BGcmFtZURvbWFpbklEIEZST00gX1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFp
bnMgR1JPVVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCwgdG9wRnJhbWVEb21haW5JRCIpOworICAg
ICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gU3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyBTRUxFQ1Qgc3VicmVzb3VyY2VEb21haW5JRCwgTUFY
KGxhc3RVcGRhdGVkKSwgdG9wRnJhbWVEb21haW5JRCBGUk9NIF9TdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVEb21haW5zIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQsIHRvcEZyYW1lRG9tYWlu
SUQiX3MpOwogCiAgICAgaWYgKHRhYmxlID09ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
IikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPIFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8gU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIE1BWChsYXN0VXBkYXRl
ZCksIHRvRG9tYWluSUQgRlJPTSBfU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBHUk9VUCBC
WSBzdWJyZXNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEIik7CisgICAgICAgIHJldHVybiBkYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvIFNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklELCBNQVgobGFzdFVwZGF0ZWQpLCB0b0Rv
bWFpbklEIEZST00gX1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gR1JPVVAgQlkgc3VicmVz
b3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCJfcyk7CiAKICAgICBpZiAodGFibGUgPT0gIlRvcEZy
YW1lTGlua0RlY29yYXRpb25zRnJvbSIpCi0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJJTlNF
UlQgSU5UTyBUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gU0VMRUNUIHRvRG9tYWluSUQsIE1B
WChsYXN0VXBkYXRlZCksIGZyb21Eb21haW5JRCBGUk9NIF9Ub3BGcmFtZUxpbmtEZWNvcmF0aW9u
c0Zyb20gR1JPVVAgQlkgdG9Eb21haW5JRCwgZnJvbURvbWFpbklEIik7CisgICAgICAgIHJldHVy
biBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBUb3BGcmFtZUxpbmtEZWNv
cmF0aW9uc0Zyb20gU0VMRUNUIHRvRG9tYWluSUQsIE1BWChsYXN0VXBkYXRlZCksIGZyb21Eb21h
aW5JRCBGUk9NIF9Ub3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gR1JPVVAgQlkgdG9Eb21haW5J
RCwgZnJvbURvbWFpbklEIl9zKTsKIAogICAgIGlmICh0YWJsZSA9PSAiVW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQiKQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSU5TRVJU
IElOVE8gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgU0VMRUNUIHNvdXJjZVNp
dGVEb21haW5JRCwgZGVzdGluYXRpb25TaXRlRG9tYWluSUQsIHNvdXJjZUlELCBNQVgodGltZU9m
QWRDbGljayksIHRva2VuLCBzaWduYXR1cmUsIGtleUlEIEZST00gX1VuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IEdST1VQIEJZIHNvdXJjZVNpdGVEb21haW5JRCwgZGVzdGluYXRp
b25TaXRlRG9tYWluSUQiKTsKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnQoIklOU0VSVCBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFTEVD
VCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJRCwg
TUFYKHRpbWVPZkFkQ2xpY2spLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCBGUk9NIF9VbmF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBHUk9VUCBCWSBzb3VyY2VTaXRlRG9tYWluSUQs
IGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zKTsKIAogICAgIGlmICh0YWJsZSA9PSAiQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IikKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
IklOU0VSVCBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBTRUxFQ1Qgc291
cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgc291cmNlSUQsIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIHByaW9yaXR5LCBNQVgodGltZU9mQWRDbGljayksIGVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiBGUk9NIF9BdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgR1JPVVAgQlkgc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCIp
OworICAgICAgICByZXR1cm4gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8g
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFNFTEVDVCBzb3VyY2VTaXRlRG9tYWlu
SUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VJRCwgYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSwgcHJpb3JpdHksIE1BWCh0aW1lT2ZBZENsaWNrKSwgZWFybGllc3RUaW1lVG9TZW5kVG9T
b3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3Rp
bmF0aW9uIEZST00gX0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBHUk9VUCBCWSBz
b3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIl9zKTsKIAotICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJJTlNFUlQgSU5UTyAiLCB0YWJsZSwgIiBTRUxFQ1QgRElTVElOQ1Qg
KiBGUk9NIF8iLCB0YWJsZSk7CisgICAgcmV0dXJuIGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRT
bG93KG1ha2VTdHJpbmcoIklOU0VSVCBJTlRPICIsIHRhYmxlLCAiIFNFTEVDVCBESVNUSU5DVCAq
IEZST00gXyIsIHRhYmxlKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpCkBAIC01NTMsOCAr
NTY1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWlncmF0
ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwog
CiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5r
ZXlzKCkpIHsKLSAgICAgICAgYXV0byBxdWVyeSA9IG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIs
IHRhYmxlLCAiIFJFTkFNRSBUTyBfIiwgdGFibGUpOwotICAgICAgICBhdXRvIGFsdGVyVGFibGUg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQocXVlcnkpOworICAgICAgICBhdXRvIGFsdGVy
VGFibGUgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIkFMVEVS
IFRBQkxFICIsIHRhYmxlLCAiIFJFTkFNRSBUTyBfIiwgdGFibGUpKTsKICAgICAgICAgaWYgKCFh
bHRlclRhYmxlIHx8IGFsdGVyVGFibGUtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSBmYWls
ZWQgdG8gcmVuYW1lIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01
NjksMTYgKzU4MCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjptaWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKQogICAgIH0KIAogICAgIGZvciAo
YXV0byYgdGFibGUgOiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7Ci0g
ICAgICAgIGF1dG8gcXVlcnkgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVRdWVyeSh0YWJs
ZSk7Ci0gICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0
YXRlbWVudChxdWVyeSk7CisgICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGluc2VydERp
c3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChtX2RhdGFiYXNlLCB0YWJsZSk7CiAgICAgICAg
IGlmICghbWlncmF0ZVRhYmxlRGF0YSB8fCBtaWdyYXRlVGFibGVEYXRhLT5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFi
bGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1hLCBlcnJvciBtZXNzYWdlOiAl
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGRyb3BRdWVyeSA9IG1ha2VTdHJpbmcoIkRST1AgVEFCTEUgXyIsIHRhYmxlKTsKLSAg
ICAgICAgYXV0byBkcm9wVGFibGVRdWVyeSA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChk
cm9wUXVlcnkpOworICAgICAgICBhdXRvIGRyb3BUYWJsZVF1ZXJ5ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJEUk9QIFRBQkxFIF8iLCB0YWJsZSkpOwogICAg
ICAgICBpZiAoIWRyb3BUYWJsZVF1ZXJ5IHx8IGRyb3BUYWJsZVF1ZXJ5LT5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAt
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdyYXRlRGF0YVRvTmV3VGFi
bGVzSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGRyb3AgdGVtcG9yYXJ5IHRhYmxlcywgZXJyb3IgbWVz
c2FnZTogJXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTk3LDcgKzYwNiw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vz
c2FyeSgpCiAKIFZlY3RvcjxTdHJpbmc+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjb2x1bW5zRm9yVGFibGUoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7Ci0gICAgYXV0
byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiUFJB
R01BIHRhYmxlX2luZm8oIiwgdGFibGVOYW1lLCAiKSIpKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9
IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiUFJBR01BIHRhYmxl
X2luZm8oIiwgdGFibGVOYW1lLCAiKSIpKTsKIAogICAgIGlmICghc3RhdGVtZW50KSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpnZXRDb2x1bW5zRnJvbVRhYmxlSW5mb1N0YXRlbWVudCBVbmFibGUg
dG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZmV0Y2ggc2NoZW1hIGZvciB0YWJsZSwgZXJyb3IgbWVz
c2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKQEAgLTYyMiw3ICs2MzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjphZGRNaXNzaW5nQ29sdW1uc1RvVGFibGUoU3RyaW5nJiYgdGFibAogICAgICAg
ICBpZiAoZXhpc3RpbmdDb2x1bW5zLmNvbnRhaW5zKGNvbHVtbikpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCi0gICAgICAgIGF1dG8gc3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlTmFtZSwgIiBBREQg
Q09MVU1OICIsIGNvbHVtbikpOworICAgICAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiQUxURVIgVEFCTEUgIiwgdGFibGVOYW1l
LCAiIEFERCBDT0xVTU4gIiwgY29sdW1uKSk7CiAgICAgICAgIGlmICghc3RhdGVtZW50KSB7CiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0NvbHVtbnNUb1RhYmxlIFVuYWJsZSB0
byBwcmVwYXJlIHN0YXRlbWVudCB0byBhZGQgbWlzc2luZyBjb2x1bW5zIHRvIHRhYmxlLCBlcnJv
ciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NDgsNyAr
NjU3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlz
c2luZ0NvbHVtbnNJZk5lY2Vzc2FyeSgpCiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OnJlbmFtZUNvbHVtbkluVGFibGUoU3RyaW5nJiYgdGFibGVOYW1lLCBFeGlz
dGluZ0NvbHVtbk5hbWUmJiBleGlzdGluZ0NvbHVtbk5hbWUsIEV4cGVjdGVkQ29sdW1uTmFtZSYm
IGV4cGVjdGVkQ29sdW1uTmFtZSkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2Uu
cHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJBTFRFUiBUQUJMRSAiLCB0YWJsZU5hbWUsICIg
UkVOQU1FIENPTFVNTiAiLCBleGlzdGluZ0NvbHVtbk5hbWUsICIgVE8gIiwgZXhwZWN0ZWRDb2x1
bW5OYW1lKSk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1l
bnRTbG93KG1ha2VTdHJpbmcoIkFMVEVSIFRBQkxFICIsIHRhYmxlTmFtZSwgIiBSRU5BTUUgQ09M
VU1OICIsIGV4aXN0aW5nQ29sdW1uTmFtZSwgIiBUTyAiLCBleHBlY3RlZENvbHVtbk5hbWUpKTsK
ICAgICBpZiAoIXN0YXRlbWVudCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ0Nv
bHVtbnNUb1RhYmxlIFVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byByZW5hbWUgY29sdW1u
IGluIHRhYmxlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTY5Myw3ICs3MDIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjphZGRNaXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKQogCiAgICAgZm9yIChhdXRvJiB0YWJs
ZSA6ICptaXNzaW5nVGFibGVzKSB7CiAgICAgICAgIGF1dG8gY3JlYXRlVGFibGVRdWVyeSA9IGV4
cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5nZXQodGFibGUpLmZpcnN0OwotICAgICAgICBp
ZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVGFibGVRdWVyeSkpCisgICAgICAg
IGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZFNsb3coY3JlYXRlVGFibGVRdWVyeSkpCiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWRkTWlzc2luZ1RhYmxlcyBmYWlsZWQgdG8gZXhlY3V0
ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgIH0KIApAQCAtMTA0MCw3ICsxMDQ5LDcgQEAgU3RyaW5nIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVBbmRNYWtlRG9tYWluTGlz
dChjb25zdCBIYXNoU2UKIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6aW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25zdCBTdHJpbmcmIHN0YXRlbWVudCwg
Y29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbkxpc3QsIHVuc2lnbmVkIGRv
bWFpbklEKQogewotICAgIGF1dG8gaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50ID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoc3RhdGVtZW50LCBlbnN1cmVBbmRNYWtl
RG9tYWluTGlzdChkb21haW5MaXN0KSwgIiApOyIpKTsKKyAgICBhdXRvIGluc2VydFJlbGF0aW9u
c2hpcFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmlu
ZyhzdGF0ZW1lbnQsIGVuc3VyZUFuZE1ha2VEb21haW5MaXN0KGRvbWFpbkxpc3QpLCAiICk7Iikp
OwogICAgIAogICAgIGlmICghaW5zZXJ0UmVsYXRpb25zaGlwU3RhdGVtZW50CiAgICAgICAgIHx8
IGluc2VydFJlbGF0aW9uc2hpcFN0YXRlbWVudC0+YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FM
SVRFX09LKSB7CkBAIC0xMTgxLDkgKzExOTAsOSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjptZXJnZVN0YXRpc3RpY3MoVmVjdG9yPFJlc291cmNlTG9hZFN0YQog
ICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBzKHN0YXRpc3RpYyk7CiB9CiAKLXN0YXRp
YyBjb25zdCBTdHJpbmdWaWV3IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpCiB7Ci0gICAgcmV0dXJu
ICJkb21haW5JRCwiCisgICAgcmV0dXJuICJTRUxFQ1QgZG9tYWluSUQsIgogICAgICAgICAiKGNv
dW50U3ViRnJhbWVVbmRlclRvcEZyYW1lICsgY291bnRTdWJSZXNvdXJjZVVuZGVyVG9wRnJhbWUg
KyBjb3VudFVuaXF1ZVJlZGlyZWN0VG8pIGFzIHN1bSAgIgogICAgICAgICAiRlJPTSAoICIKICAg
ICAgICAgIlNFTEVDVCAiCkBAIC0xMTk4LDcgKzEyMDcsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5n
VmlldyBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKQogICAgICAgICAiTEVGVCBKT0lOIFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gdSBPTiBvLmRvbWFpbklEID0gdS5zdWJyZXNvdXJj
ZURvbWFpbklEICIKICAgICAgICAgIldIRVJFIGlzUHJldmFsZW50IExJS0UgPyAiCiAgICAgICAg
ICJhbmQgaGFkVXNlckludGVyYWN0aW9uIExJS0UgPyAiCi0gICAgICAgICJHUk9VUCBCWSBkb21h
aW5JRCkgT1JERVIgQlkgc3VtIERFU0MgIjsKKyAgICAgICAgIkdST1VQIEJZIGRvbWFpbklEKSBP
UkRFUiBCWSBzdW0gREVTQzsiX3M7CiB9CiAKIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHlEb21haW5zKHVuc2lnbmVkIHRoaXJkUGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4pIGNvbnN0CkBAIC0xMjMwLDcgKzEyMzksNyBA
QCBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdAogCiAgICAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhTGlzdDsKICAgICBj
b25zdCBhdXRvIHByZXZhbGVudERvbWFpbnNCaW5kUGFyYW1ldGVyID0gdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSgpID09IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCA/ICIl
IiA6ICIxIjsKLSAgICBhdXRvIHNvcnRlZFN0YXRpc3RpY3MgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQobWFrZVN0cmluZygiU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGlu
ZygpKSk7CisgICAgYXV0byBzb3J0ZWRTdGF0aXN0aWNzID0gbV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpKTsKICAgICBpZiAoIXNvcnRlZFN0
YXRpc3RpY3MKICAgICAgICAgfHwgc29ydGVkU3RhdGlzdGljcy0+YmluZFRleHQoMSwgcHJldmFs
ZW50RG9tYWluc0JpbmRQYXJhbWV0ZXIpCiAgICAgICAgIHx8IHNvcnRlZFN0YXRpc3RpY3MtPmJp
bmRUZXh0KDIsICIlIikgIT0gU1FMSVRFX09LKSB7CkBAIC0xMjY2LDcgKzEyNzUsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNyZW1lbnRSZWNvcmRzRGVs
ZXRlZENvdW50Rm9yRG9tYWlucwogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZGF0YVJlY29y
ZHNSZW1vdmVkID0gZGF0YVJlY29yZHNSZW1vdmVkICsgMSBXSEVSRSByZWdpc3RyYWJsZURvbWFp
biBJTiAoIiwgZG9tYWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsKKyAgICBhdXRvIGRvbWFp
bnNUb1VwZGF0ZVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFr
ZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgZGF0YVJlY29yZHNSZW1vdmVkID0g
ZGF0YVJlY29yZHNSZW1vdmVkICsgMSBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBJTiAoIiwgZG9t
YWluc1RvU3RyaW5nKGRvbWFpbnMpLCAiKSIpKTsKICAgICBpZiAoIWRvbWFpbnNUb1VwZGF0ZVN0
YXRlbWVudCB8fCBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9O
RSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jcmVtZW50U3RhdGlz
dGljc0ZvckRvbWFpbnMgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTEzNTIsNyArMTM2MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFs
CiAgICAgICAgICAgICBwcmV2YWxlbnREdWVUb1JlZGlyZWN0Lmluc2VydCh0b3BGcmFtZVJlZGly
ZWN0U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOwogICAgIH0KIAotICAgIGF1dG8gbWFya1By
ZXZhbGVudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5n
KCJVUERBVEUgT2JzZXJ2ZWREb21haW5zIFNFVCBpc1ByZXZhbGVudCA9IDEgV0hFUkUgZG9tYWlu
SUQgSU4gKCIsIGJ1aWxkTGlzdChXVEY6Okl0ZXJhdG9yUmFuZ2U8U3RkU2V0PHVuc2lnbmVkPjo6
aXRlcmF0b3I+KHByZXZhbGVudER1ZVRvUmVkaXJlY3QuYmVnaW4oKSwgcHJldmFsZW50RHVlVG9S
ZWRpcmVjdC5lbmQoKSkpLCAiKSIpKTsKKyAgICBhdXRvIG1hcmtQcmV2YWxlbnRTdGF0ZW1lbnQg
PSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFURSBPYnNl
cnZlZERvbWFpbnMgU0VUIGlzUHJldmFsZW50ID0gMSBXSEVSRSBkb21haW5JRCBJTiAoIiwgYnVp
bGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxTdGRTZXQ8dW5zaWduZWQ+OjppdGVyYXRvcj4ocHJl
dmFsZW50RHVlVG9SZWRpcmVjdC5iZWdpbigpLCBwcmV2YWxlbnREdWVUb1JlZGlyZWN0LmVuZCgp
KSksICIpIikpOwogICAgIGlmICghbWFya1ByZXZhbGVudFN0YXRlbWVudCB8fCBtYXJrUHJldmFs
ZW50U3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6Om1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFs
ZW50IGZhaWxlZCB0byBleGVjdXRlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTEzODQsNyArMTM5Myw3IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpOb3RWZXJ5UHJldmFsZW50UmVzb3VyY2Vz
CiAKICAgICBhdXRvIGRvbWFpbklEc09mSW50ZXJlc3QgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAK
LSAgICBhdXRvIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnNTdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiU0VMRUNUIHN1YnJlc291cmNlRG9t
YWluSUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZklu
dGVyZXN0LCAiKSBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklEIikpOworICAgIGF1dG8gc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFy
ZVN0YXRlbWVudFNsb3cobWFrZVN0cmluZygiU0VMRUNUIHN1YnJlc291cmNlRG9tYWluSUQsIENP
VU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
cyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVyZXN0LCAi
KSBHUk9VUCBCWSBzdWJyZXNvdXJjZURvbWFpbklEIikpOwogICAgIGlmIChzdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50KSB7CiAgICAgICAgIHdoaWxlIChzdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewog
ICAgICAgICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApKTsK
QEAgLTEzOTQsNyArMTQwMyw3IEBAIEhhc2hNYXA8dW5zaWduZWQsIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpOb3RWZXJ5UHJldmFsZW50UmVzb3VyY2VzCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBhdXRvIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudChtYWtlU3RyaW5nKCJTRUxFQ1Qgc3Vi
cmVzb3VyY2VEb21haW5JRCwgQ09VTlQodG9Eb21haW5JRCkgRlJPTSBTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09m
SW50ZXJlc3QsICIpIEdST1VQIEJZIHN1YnJlc291cmNlRG9tYWluSUQiKSk7CisgICAgYXV0byBz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlNFTEVDVCBzdWJyZXNvdXJjZURvbWFpbklE
LCBDT1VOVCh0b0RvbWFpbklEKSBGUk9NIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gV0hF
UkUgc3VicmVzb3VyY2VEb21haW5JRCBJTiAoIiwgZG9tYWluSURzT2ZJbnRlcmVzdCwgIikgR1JP
VVAgQlkgc3VicmVzb3VyY2VEb21haW5JRCIpKTsKICAgICBpZiAoc3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50KSB7CiAgICAgICAgIHdoaWxlIChzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBkb21haW5JRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSk7
CkBAIC0xNDA0LDcgKzE0MTMsNyBAQCBIYXNoTWFwPHVuc2lnbmVkLCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Tm90VmVyeVByZXZhbGVudFJlc291cmNlcwogICAgICAgICB9
CiAgICAgfQogCi0gICAgYXV0byBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zQ291bnRTdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiU0VMRUNUIHN1
YmZyYW1lRG9tYWluSUQsIENPVU5UKHRvcEZyYW1lRG9tYWluSUQpIEZST00gU3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJmcmFtZURvbWFpbklEIElOICgiLCBkb21haW5JRHNP
ZkludGVyZXN0LCAiKSBHUk9VUCBCWSBzdWJmcmFtZURvbWFpbklEIikpOworICAgIGF1dG8gc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJTRUxFQ1Qgc3ViZnJhbWVEb21haW5JRCwgQ09V
TlQodG9wRnJhbWVEb21haW5JRCkgRlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdI
RVJFIHN1YmZyYW1lRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09mSW50ZXJlc3QsICIpIEdST1VQ
IEJZIHN1YmZyYW1lRG9tYWluSUQiKSk7CiAgICAgaWYgKHN1YmZyYW1lVW5kZXJUb3BGcmFtZURv
bWFpbnNDb3VudFN0YXRlbWVudCkgewogICAgICAgICB3aGlsZSAoc3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWluc0NvdW50U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewogICAgICAg
ICAgICAgdW5zaWduZWQgZG9tYWluSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluc0NvdW50U3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkpOwpAQCAt
MTQxNCw3ICsxNDIzLDcgQEAgSGFzaE1hcDx1bnNpZ25lZCwgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Ok5vdFZlcnlQcmV2YWxlbnRSZXNvdXJjZXMKICAgICAgICAgfQogICAg
IH0KIAotICAgIGF1dG8gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb0NvdW50U3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KG1ha2VTdHJpbmcoIlNFTEVDVCBzb3VyY2VEb21h
aW5JRCwgQ09VTlQodG9Eb21haW5JRCkgRlJPTSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdI
RVJFIHNvdXJjZURvbWFpbklEIElOICgiLCBkb21haW5JRHNPZkludGVyZXN0LCAiKSBHUk9VUCBC
WSBzb3VyY2VEb21haW5JRCIpKTsKKyAgICBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9D
b3VudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudFNsb3cobWFrZVN0cmlu
ZygiU0VMRUNUIHNvdXJjZURvbWFpbklELCBDT1VOVCh0b0RvbWFpbklEKSBGUk9NIFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc291cmNlRG9tYWluSUQgSU4gKCIsIGRvbWFpbklEc09m
SW50ZXJlc3QsICIpIEdST1VQIEJZIHNvdXJjZURvbWFpbklEIikpOwogICAgIGlmICh0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvQ291bnRTdGF0ZW1lbnQpIHsKICAgICAgICAgd2hpbGUgKHRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9Db3VudFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDAp
KTsKQEAgLTE2NDQsNyArMTY1Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNlCiAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlu
cyB3YXMgbm90IGNvbXBsZXRlZCBkdWUgdG8gZmFpbGVkIGluc2VydCBhdHRlbXB0IiwgdGhpcyk7
CiAgICAgfQogCi0gICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQg
Z3JhbmRmYXRoZXJlZCA9IDEgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gSU4gKCIsIGRvbWFpbnNU
b1N0cmluZyhkb21haW5zKSwgIikiKSk7CisgICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1l
bnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFURSBP
YnNlcnZlZERvbWFpbnMgU0VUIGdyYW5kZmF0aGVyZWQgPSAxIFdIRVJFIHJlZ2lzdHJhYmxlRG9t
YWluIElOICgiLCBkb21haW5zVG9TdHJpbmcoZG9tYWlucyksICIpIikpOwogICAgIGlmICghZG9t
YWluc1RvVXBkYXRlU3RhdGVtZW50IHx8IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
bV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpn
cmFuZGZhdGhlckRhdGFGb3JEb21haW5zIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFJJVkFU
RV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTE1LDcgKzE5MjQsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXREb21haW5zQXNQcmV2YWxlbnQoU3RkU2V0
PHVuc2lnbmVkPgogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0
byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQo
bWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQgaXNQcmV2YWxlbnQgPSAxIFdI
RVJFIGRvbWFpbklEIElOICgiLCBidWlsZExpc3QoV1RGOjpJdGVyYXRvclJhbmdlPFN0ZFNldDx1
bnNpZ25lZD46Oml0ZXJhdG9yPihkb21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpKSwgIiki
KSk7CisgICAgYXV0byBkb21haW5zVG9VcGRhdGVTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBh
cmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VUIGlz
UHJldmFsZW50ID0gMSBXSEVSRSBkb21haW5JRCBJTiAoIiwgYnVpbGRMaXN0KFdURjo6SXRlcmF0
b3JSYW5nZTxTdGRTZXQ8dW5zaWduZWQ+OjppdGVyYXRvcj4oZG9tYWlucy5iZWdpbigpLCBkb21h
aW5zLmVuZCgpKSksICIpIikpOwogICAgIGlmICghZG9tYWluc1RvVXBkYXRlU3RhdGVtZW50IHx8
IGRvbWFpbnNUb1VwZGF0ZVN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzZXREb21haW5zQXNQcmV2YWxlbnQgZmFp
bGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI0
NjYsNyArMjQ3NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNsZWFyR3JhbmRmYXRoZXJpbmcoVmVjdG9yPHVuc2lnbmVkPiYmCiAKICAgICBhdXRvIGxpc3RU
b0NsZWFyID0gYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxWZWN0b3I8dW5zaWduZWQ+Ojpp
dGVyYXRvcj4oZG9tYWluSURzVG9DbGVhci5iZWdpbigpLCBkb21haW5JRHNUb0NsZWFyLmVuZCgp
KSk7CiAKLSAgICBhdXRvIGNsZWFyR3JhbmRmYXRoZXJpbmdTdGF0ZW1lbnQgPSBtX2RhdGFiYXNl
LnByZXBhcmVTdGF0ZW1lbnQobWFrZVN0cmluZygiVVBEQVRFIE9ic2VydmVkRG9tYWlucyBTRVQg
Z3JhbmRmYXRoZXJlZCA9IDAgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGxpc3RUb0NsZWFyLCAiKSIp
KTsKKyAgICBhdXRvIGNsZWFyR3JhbmRmYXRoZXJpbmdTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnBy
ZXBhcmVTdGF0ZW1lbnRTbG93KG1ha2VTdHJpbmcoIlVQREFURSBPYnNlcnZlZERvbWFpbnMgU0VU
IGdyYW5kZmF0aGVyZWQgPSAwIFdIRVJFIGRvbWFpbklEIElOICgiLCBsaXN0VG9DbGVhciwgIiki
KSk7CiAgICAgaWYgKCFjbGVhckdyYW5kZmF0aGVyaW5nU3RhdGVtZW50KQogICAgICAgICByZXR1
cm47CiAgICAgCkBAIC0yNjIzLDcgKzI2MzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpCiAKICAgICBhdXRvIGxp
c3RUb1BydW5lID0gYnVpbGRMaXN0KFdURjo6SXRlcmF0b3JSYW5nZTxWZWN0b3I8dW5zaWduZWQ+
OjppdGVyYXRvcj4oZW50cmllc1RvUHJ1bmUuYmVnaW4oKSwgZW50cmllc1RvUHJ1bmUuZW5kKCkp
KTsKIAotICAgIGF1dG8gcHJ1bmVDb21tYW5kID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50
KG1ha2VTdHJpbmcoIkRFTEVURSBmcm9tIE9ic2VydmVkRG9tYWlucyBXSEVSRSBkb21haW5JRCBJ
TiAoIiwgbGlzdFRvUHJ1bmUsICIpIikpOworICAgIGF1dG8gcHJ1bmVDb21tYW5kID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50U2xvdyhtYWtlU3RyaW5nKCJERUxFVEUgZnJvbSBPYnNlcnZl
ZERvbWFpbnMgV0hFUkUgZG9tYWluSUQgSU4gKCIsIGxpc3RUb1BydW5lLCAiKSIpKTsKICAgICBp
ZiAoIXBydW5lQ29tbWFuZCB8fCBwcnVuZUNvbW1hbmQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cHJ1bmVTdGF0aXN0aWNzSWZO
ZWVkZWQgZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcsIHRoaXMs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTI3NzAsMzUgKzI3NzksMzUgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQodW5zaWduZWQKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdldFN1YlN0YXRpc3RpY1N0YXRlbWVudChjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkg
Y29uc3QKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKSBjb25zdAog
ewogICAgIGlmICh0YWJsZU5hbWUgPT0gIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
cyIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIHRvcExldmVsRG9tYWluSUQgZnJvbSBTdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgZG9tYWluSUQgPSA/IjsKKyAgICAgICAg
cmV0dXJuICJTRUxFQ1QgdG9wTGV2ZWxEb21haW5JRCBmcm9tIFN0b3JhZ2VBY2Nlc3NVbmRlclRv
cEZyYW1lRG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9
PSAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIHRv
RG9tYWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFp
bklEID0gPyI7CisgICAgICAgIHJldHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHNvdXJjZURvbWFpbklEID0gPyJfczsKICAgICBpZiAo
dGFibGVOYW1lID09ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20iKQotICAgICAgICByZXR1
cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20g
V0hFUkUgdGFyZ2V0RG9tYWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURv
bWFpbklEIGZyb20gVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHRhcmdldERvbWFp
bklEID0gPyJfczsKICAgICBpZiAodGFibGVOYW1lID09ICJUb3BGcmFtZUxpbmtEZWNvcmF0aW9u
c0Zyb20iKQotICAgICAgICByZXR1cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFt
ZUxpbmtEZWNvcmF0aW9uc0Zyb20gV0hFUkUgdG9Eb21haW5JRCA9ID8iOworICAgICAgICByZXR1
cm4gIlNFTEVDVCBmcm9tRG9tYWluSUQgZnJvbSBUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20g
V0hFUkUgdG9Eb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiVG9wRnJhbWVM
b2FkZWRUaGlyZFBhcnR5U2NyaXB0cyIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIHN1YnJlc291
cmNlRG9tYWluSUQgZnJvbSBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzIFdIRVJFIHRv
cEZyYW1lRG9tYWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1Qgc3VicmVzb3VyY2VE
b21haW5JRCBmcm9tIFRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMgV0hFUkUgdG9wRnJh
bWVEb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWlucyIpCi0gICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQg
ZnJvbSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWluSUQg
PSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBmcm9tIFN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViRnJhbWVEb21haW5JRCA9ID8iX3M7CiAg
ICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyIpCi0g
ICAgICAgIHJldHVybiAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IjsKKyAgICAg
ICAgcmV0dXJuICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBmcm9tIFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7CiAgICAgaWYg
KHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIpCi0gICAgICAgIHJl
dHVybiAiU0VMRUNUIHRvRG9tYWluSUQgZnJvbSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
IFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1Qg
dG9Eb21haW5JRCBmcm9tIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUgc3VicmVz
b3VyY2VEb21haW5JRCA9ID8iX3M7CiAgICAgaWYgKHRhYmxlTmFtZSA9PSAiU3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tIikKLSAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklE
IGZyb20gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHN1YnJlc291cmNlRG9t
YWluSUQgPSA/IjsKKyAgICAgICAgcmV0dXJuICJTRUxFQ1QgZnJvbURvbWFpbklEIGZyb20gU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/
Il9zOwogICAgIAotICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiAiIl9zOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphcHBlbmRTdWJT
dGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikgY29uc3QKIHsKICAgICBhdXRvIHF1ZXJ5ID0gZ2V0
U3ViU3RhdGlzdGljU3RhdGVtZW50KHRhYmxlTmFtZSk7CiAgICAgCi0gICAgaWYgKHF1ZXJ5Lmlz
RW1wdHkoKSkKKyAgICBpZiAoIXF1ZXJ5Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgYXV0byBkYXRhID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KHF1ZXJ5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5k
ZXggYTFlMzUxNTM0NDZjNTdmZDM4ODU5YTZkY2Y4NjI0YjAxNjAzMDk3ZS4uZmQ3MWNjNWU3Yjk2
MDRjNzgxOGYxYjZhZTliYTVkMzE2ZTI4MTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eURvbWFpbnModW5zaWduZWQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Q7CiAgICAgdm9pZCBvcGVuQW5kVXBkYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBTdHJp
bmcgZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHVuc2lnbmVkKSBjb25zdDsKLSAgICBTdHJp
bmcgZ2V0U3ViU3RhdGlzdGljU3RhdGVtZW50KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIEFT
Q0lJTGl0ZXJhbCBnZXRTdWJTdGF0aXN0aWNTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAgICAgdm9pZCBhcHBlbmRTdWJTdGF0aXN0aWNMaXN0KFN0cmluZ0J1aWxkZXImLCBjb25zdCBT
dHJpbmcmIHRhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pIGNvbnN0OwogICAgIHZvaWQg
bWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQg
bWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50KiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNGM3OGZjZTk0Nzg5
Mjg3MmU1ZGExNjVkZTNmNWFjOTdkYzJlMGQ4YS4uMzY4MzY1ZmYxYjA4ODQzZDM2YWUwMjk3MzYw
OGQ3YmFhNGNiZmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC04MSwx
MSArODEsMTEgQEAgYm9vbCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6b3BlbkRhdGFiYXNlKFNob3Vs
ZENyZWF0ZURhdGFiYXNlIHNob3VsZENyZWF0ZURhdGFiYXMKICAgICBpZiAoIW1pZ3JhdGVJdGVt
VGFibGVJZk5lZWRlZCgpKSB7CiAgICAgICAgIC8vIFdlIGZhaWxlZCB0byBtaWdyYXRlIHRoZSBp
dGVtIHRhYmxlLiBJbiBvcmRlciB0byBhdm9pZCB0cnlpbmcgdG8gbWlncmF0ZSB0aGUgdGFibGUg
b3ZlciBhbmQgb3ZlciwKICAgICAgICAgLy8ganVzdCBkZWxldGUgaXQgYW5kIHN0YXJ0IGZyb20g
c2NyYXRjaC4KLSAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJEUk9QIFRB
QkxFIEl0ZW1UYWJsZSIpKQorICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQo
IkRST1AgVEFCTEUgSXRlbVRhYmxlIl9zKSkKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGRlbGV0ZSB0YWJsZSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2UiKTsKICAgICB9CiAK
LSAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZh
bHVlIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKSkgeworICAgIGlmICghbV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgSXRlbVRhYmxl
IChrZXkgVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKSJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtMTA2LDEzICsxMDYsMTMgQEAgYm9vbCBMb2NhbFN0b3JhZ2VE
YXRhYmFzZTo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgdGFibGUgd2l0aCB0aGUgcmlnaHQgdHlwZSwgY29weSBh
bGwgdGhlIGRhdGEgb3ZlciB0byBpdCBhbmQgdGhlbiByZXBsYWNlIHRoZSBuZXcgdGFibGUgd2l0
aCB0aGUgb2xkIHRhYmxlLgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb21tYW5kc1tdID0gewot
ICAgICAgICAiRFJPUCBUQUJMRSBJRiBFWElTVFMgSXRlbVRhYmxlMiIsCi0gICAgICAgICJDUkVB
VEUgVEFCTEUgSXRlbVRhYmxlMiAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0Us
IHZhbHVlIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiLAotICAgICAgICAiSU5TRVJU
IElOVE8gSXRlbVRhYmxlMiBTRUxFQ1QgKiBmcm9tIEl0ZW1UYWJsZSIsCi0gICAgICAgICJEUk9Q
IFRBQkxFIEl0ZW1UYWJsZSIsCi0gICAgICAgICJBTFRFUiBUQUJMRSBJdGVtVGFibGUyIFJFTkFN
RSBUTyBJdGVtVGFibGUiLAotICAgICAgICAwLAorICAgIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVy
YWwgY29tbWFuZHNbXSA9IHsKKyAgICAgICAgIkRST1AgVEFCTEUgSUYgRVhJU1RTIEl0ZW1UYWJs
ZTIiX3MsCisgICAgICAgICJDUkVBVEUgVEFCTEUgSXRlbVRhYmxlMiAoa2V5IFRFWFQgVU5JUVVF
IE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCkiX3MsCisgICAgICAgICJJTlNFUlQgSU5UTyBJdGVtVGFibGUyIFNFTEVDVCAqIGZyb20gSXRl
bVRhYmxlIl9zLAorICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUiX3MsCisgICAgICAgICJB
TFRFUiBUQUJMRSBJdGVtVGFibGUyIFJFTkFNRSBUTyBJdGVtVGFibGUiX3MsCisgICAgICAgIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpLAogICAgIH07CiAKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFu
c2FjdGlvbihtX2RhdGFiYXNlKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIExvY2FsU3RvcmFn
ZURhdGFiYXNlOjptaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKQogICAgICAgICBpZiAobV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZChjb21tYW5kc1tpXSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtaWdyYXRlIHRhYmxlIEl0ZW1UYWJsZSBm
b3IgbG9jYWwgc3RvcmFnZSB3aGVuIGV4ZWN1dGluZzogJXMiLCBjb21tYW5kc1tpXSk7CisgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1pZ3JhdGUgdGFibGUgSXRlbVRhYmxlIGZvciBsb2Nh
bCBzdG9yYWdlIHdoZW4gZXhlY3V0aW5nOiAlcyIsIGNvbW1hbmRzW2ldLmNoYXJhY3RlcnMoKSk7
CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDY1MDg4NmVlNTY2MTYyMGI4
ODMwYTYzNTA2Yjk3ZjM0NDBkN2Y3ODUuLjVlOTg1OTQzNzk2YTQxOTkzNDU3OTBiYjI2NGFhOTlh
MTZlZTcyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcApAQCAtMTI0LDQyICsxMjQsNDMgQEAgYm9vbCBJY29uRGF0YWJhc2U6OmNy
ZWF0ZVRhYmxlc0lmTmVlZGVkKCkKIAogICAgIG1fZGIuY2xlYXJBbGxUYWJsZXMoKTsKIAotICAg
IGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIFBhZ2VVUkwgKHVybCBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsaWNv
bklEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICBpZiAoIW1f
ZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBQYWdlVVJMICh1cmwgVEVYVCBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLGljb25JRCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZCBub3QgY3JlYXRlIFBhZ2VVUkwgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
bV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIuY2xv
c2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIuZXhlY3V0
ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBQYWdlVVJMSW5kZXggT04gUGFnZVVSTCAodXJsKTsiKSkg
eworICAgIGlmICghbV9kYi5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIElOREVYIFBhZ2VVUkxJbmRl
eCBPTiBQYWdlVVJMICh1cmwpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
Y3JlYXRlIFBhZ2VVUkwgaW5kZXggaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9kYi5sYXN0RXJy
b3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIuY2xvc2UoKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNS
RUFURSBUQUJMRSBJY29uSW5mbyAoaWNvbklEIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JF
TUVOVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdXJsIFRFWFQgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgRkFJTCwgc3RhbXAgSU5URUdFUik7IikpIHsK
KyAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJY29uSW5mbyAoaWNv
bklEIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSwgdXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09O
RkxJQ1QgRkFJTCwgc3RhbXAgSU5URUdFUik7Il9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCBjcmVhdGUgSWNvbkluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwgbV9k
Yi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIuY2xvc2Uo
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIuZXhlY3V0ZUNv
bW1hbmQoIkNSRUFURSBJTkRFWCBJY29uSW5mb0luZGV4IE9OIEljb25JbmZvICh1cmwsIGljb25J
RCk7IikpIHsKKyAgICBpZiAoIW1fZGIuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBJY29u
SW5mb0luZGV4IE9OIEljb25JbmZvICh1cmwsIGljb25JRCk7Il9zKSkgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgUGFnZVVSTCBpbmRleCBpbiBkYXRhYmFzZSAoJWkpIC0g
JXMiLCBtX2RiLmxhc3RFcnJvcigpLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgbV9k
Yi5jbG9zZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICghbV9kYi5l
eGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIEljb25EYXRhIChpY29uSUQgSU5URUdFUiBQUklN
QVJZIEtFWSBBVVRPSU5DUkVNRU5UIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBkYXRhIEJM
T0IpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgSWNv
bkRhdGEgKGljb25JRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQgVU5JUVVFIE9O
IENPTkZMSUNUIFJFUExBQ0UsIGRhdGEgQkxPQik7Il9zKSkgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBjcmVhdGUgSWNvbkRhdGEgdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
bV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIuY2xv
c2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIuZXhlY3V0
ZUNvbW1hbmQoIkNSRUFURSBJTkRFWCBJY29uRGF0YUluZGV4IE9OIEljb25EYXRhIChpY29uSUQp
OyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgSU5ERVggSWNvbkRh
dGFJbmRleCBPTiBJY29uRGF0YSAoaWNvbklEKTsiX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBQYWdlVVJMIGluZGV4IGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1f
ZGIubGFzdEVycm9yKCksIG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBtX2RiLmNsb3Nl
KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKCFtX2RiLmV4ZWN1dGVD
b21tYW5kKCJDUkVBVEUgVEFCTEUgSWNvbkRhdGFiYXNlSW5mbyAoa2V5IFRFWFQgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgaWYgKCFtX2RiLmV4ZWN1dGVDb21t
YW5kKCJDUkVBVEUgVEFCTEUgSWNvbkRhdGFiYXNlSW5mbyAoa2V5IFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2YWx1ZSBURVhUIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwpOyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgY3JlYXRlIEljb25EYXRhYmFzZUluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVpKSAtICVzIiwg
bV9kYi5sYXN0RXJyb3IoKSwgbV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIuY2xv
c2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIW1fZGIuZXhlY3V0
ZUNvbW1hbmQoU3RyaW5nKCJJTlNFUlQgSU5UTyBJY29uRGF0YWJhc2VJbmZvIFZBTFVFUyAoJ1Zl
cnNpb24nLCAiKSArIFN0cmluZzo6bnVtYmVyKGN1cnJlbnREYXRhYmFzZVZlcnNpb24pICsgIik7
IikpIHsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1fZGIucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJU
IElOVE8gSWNvbkRhdGFiYXNlSW5mbyBWQUxVRVMgKCdWZXJzaW9uJywgPyk7Il9zKTsKKyAgICBp
ZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQoMSwgY3VycmVudERhdGFiYXNlVmVy
c2lvbikgIT0gU1FMSVRFX09LIHx8ICFzdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgaW5zZXJ0IGljb24gZGF0YWJhc2UgdmVyc2lvbiBp
bnRvIEljb25EYXRhYmFzZUluZm8gdGFibGUgKCVpKSAtICVzIiwgbV9kYi5sYXN0RXJyb3IoKSwg
bV9kYi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIG1fZGIuY2xvc2UoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTc1LDEzICsxNzYsMTcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBvcHVs
YXRlUGFnZVVSTFRvSWNvblVSTE1hcCgpCiAgICAgaWYgKCFtX2RiLmlzT3BlbigpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTdHJpbmcgaW1wb3J0UXVlcnkgPSBtYWtlU3RyaW5nKCJTRUxFQ1Qg
UGFnZVVSTC51cmwsIEljb25JbmZvLnVybCwgSWNvbkluZm8uc3RhbXAgRlJPTSBQYWdlVVJMIElO
TkVSIEpPSU4gSWNvbkluZm8gT04gUGFnZVVSTC5pY29uSUQ9SWNvbkluZm8uaWNvbklEIFdIRVJF
IEljb25JbmZvLnN0YW1wID4gIiwgZmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIG5vdFVzZWRJY29u
RXhwaXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSwgJzsnKTsKLSAg
ICBhdXRvIHF1ZXJ5ID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KGltcG9ydFF1ZXJ5KTsKKyAgICBh
dXRvIHF1ZXJ5ID0gbV9kYi5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgUGFnZVVSTC51cmwsIElj
b25JbmZvLnVybCwgSWNvbkluZm8uc3RhbXAgRlJPTSBQYWdlVVJMIElOTkVSIEpPSU4gSWNvbklu
Zm8gT04gUGFnZVVSTC5pY29uSUQ9SWNvbkluZm8uaWNvbklEIFdIRVJFIEljb25JbmZvLnN0YW1w
ID4gKD8pOyJfcyk7CiAgICAgaWYgKCFxdWVyeSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBwcmVwYXJlIGljb24gdXJsIGltcG9ydCBxdWVyeSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgaWYgKHF1ZXJ5LT5iaW5kSW50NjQoMSwgZmxvb3IoKFdhbGxUaW1lOjpub3co
KSAtIG5vdFVzZWRJY29uRXhwaXJhdGlvblRpbWUpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25k
cygpKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIExPR19FUlJPUigiSWNvbkRhdGFiYXNlOjpw
b3B1bGF0ZVBhZ2VVUkxUb0ljb25VUkxNYXA6IGZhaWxlZCB0byBiaW5kIHN0YXRlbWVudDogJXMi
LCBtX2RiLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1
dG8gcmVzdWx0ID0gcXVlcnktPnN0ZXAoKTsKICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9w
YWdlVVJMVG9JY29uVVJMTWFwTG9jayk7CiAgICAgd2hpbGUgKHJlc3VsdCA9PSBTUUxJVEVfUk9X
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFT
eW5jLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3Bw
CmluZGV4IGNhZTA4MmYxM2RjZDM2OGM0ODE5NWJlMzExZjIwYTViNjY0NDhmYWIuLjVkYzIwYmNm
MGRmNWM5MDFiNzg1NzU3NzgxZTViNzBmMzA3NzNkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9p
ZCBTdG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFzZShPcGVuRGF0YWJhc2VQYXJhbVR5cGUgb3Bl
bmluZ1N0cmF0ZWd5KQogCiAgICAgbWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCk7CiAKLSAgICBp
ZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RT
IEl0ZW1UYWJsZSAoa2V5IFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExBQ0UsIHZhbHVlIEJM
T0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKSkgeworICAgIGlmICghbV9kYXRhYmFzZS5l
eGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgSXRlbVRhYmxlIChrZXkg
VEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBD
T05GTElDVCBGQUlMKSJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IHRhYmxlIEl0ZW1UYWJsZSBmb3IgbG9jYWwgc3RvcmFnZSIpOwogICAgICAgICBtYXJrSW1wb3J0
ZWQoKTsKICAgICAgICAgbV9kYXRhYmFzZU9wZW5GYWlsZWQgPSB0cnVlOwpAQCAtMjg1LDIwICsy
ODUsMjAgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgp
CiAgICAgfQogCiAgICAgLy8gYWx0ZXIgdGFibGUgZm9yIGJhY2t3YXJkIGNvbXBsaWFuY2UsIGNo
YW5nZSB0aGUgdmFsdWUgdHlwZSBmcm9tIFRFWFQgdG8gQkxPQi4KLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciogY29tbWFuZHNbXSA9IHsKLSAgICAgICAgIkRST1AgVEFCTEUgSUYgRVhJU1RTIEl0ZW1U
YWJsZTIiLAotICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1UYWJsZTIgKGtleSBURVhUIFVOSVFV
RSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwpIiwKLSAgICAgICAgIklOU0VSVCBJTlRPIEl0ZW1UYWJsZTIgU0VMRUNUICogZnJvbSBJdGVt
VGFibGUiLAotICAgICAgICAiRFJPUCBUQUJMRSBJdGVtVGFibGUiLAotICAgICAgICAiQUxURVIg
VEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRlbVRhYmxlIiwKLSAgICAgICAgMCwKKyAgICBz
dGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIGNvbW1hbmRzW10gPSB7CisgICAgICAgICJEUk9QIFRB
QkxFIElGIEVYSVNUUyBJdGVtVGFibGUyIl9zLAorICAgICAgICAiQ1JFQVRFIFRBQkxFIEl0ZW1U
YWJsZTIgKGtleSBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCB2YWx1ZSBCTE9CIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIl9zLAorICAgICAgICAiSU5TRVJUIElOVE8gSXRlbVRh
YmxlMiBTRUxFQ1QgKiBmcm9tIEl0ZW1UYWJsZSJfcywKKyAgICAgICAgIkRST1AgVEFCTEUgSXRl
bVRhYmxlIl9zLAorICAgICAgICAiQUxURVIgVEFCTEUgSXRlbVRhYmxlMiBSRU5BTUUgVE8gSXRl
bVRhYmxlIl9zLAorICAgICAgICBBU0NJSUxpdGVyYWw6Om51bGwoKSwKICAgICB9OwogCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24obV9kYXRhYmFzZSwgZmFsc2UpOwogICAgIHRy
YW5zYWN0aW9uLmJlZ2luKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGNvbW1hbmRzW2ldOyAr
K2kpIHsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmRzW2ld
KSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWlncmF0ZSB0YWJsZSBJdGVt
VGFibGUgZm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVzIiwgY29tbWFuZHNbaV0p
OworICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWlncmF0ZSB0YWJsZSBJdGVtVGFi
bGUgZm9yIGxvY2FsIHN0b3JhZ2Ugd2hlbiBleGVjdXRpbmc6ICVzIiwgY29tbWFuZHNbaV0uY2hh
cmFjdGVycygpKTsKICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAKICAgICAg
ICAgICAgIC8vIGZpbmFsbHkgaXQgd2lsbCB0cnkgdG8ga2VlcCBhIGJhY2t1cCBvZiBJdGVtVGFi
bGUgZm9yIHRoZSBmdXR1cmUgcmVzdG9yYXRpb24uCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBT
dG9yYWdlQXJlYVN5bmM6Om1pZ3JhdGVJdGVtVGFibGVJZk5lZWRlZCgpCiAgICAgICAgICAgICAv
LyB0aGFuIGNvbnRpbnVhbGx5IGhpdHRpbmcgdGhpcyBjYXNlIGFuZCBuZXZlciBiZWluZyBhYmxl
IHRvIHVzZSB0aGUgbG9jYWwgc3RvcmFnZS4KICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgZXZl
ciBoaXQsIGl0J3MgZGVmaW5pdGVseSBhIGJ1Zy4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKCJBTFRF
UiBUQUJMRSBJdGVtVGFibGUgUkVOQU1FIFRPIEJhY2t1cF9JdGVtVGFibGUiKSkKKyAgICAgICAg
ICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgSXRlbVRhYmxl
IFJFTkFNRSBUTyBCYWNrdXBfSXRlbVRhYmxlIl9zKSkKICAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBzYXZlIEl0ZW1UYWJsZSBhZnRlciBtaWdyYXRpb24gam9iIGZhaWxlZC4i
KTsKIAogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggM2VjY2ZhNzVkMjAyNmU1ZDMwZDk3YjAwMzZlM2Zl
MjM3ZDRiNzcwZC4uOGIxZTEwYjI0YjhhNDI3ZWQ2YjJiMTdiNDc0YTE0MmIxY2MyOTc2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShi
b29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogICAgIG1fZGF0YWJhc2UuZGlzYWJsZVRocmVhZGlu
Z0NoZWNrcygpOwogICAgIAogICAgIGlmICghbV9kYXRhYmFzZS50YWJsZUV4aXN0cygiT3JpZ2lu
cyIpKSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRB
QkxFIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBSRVBMQUNFLCBwYXRo
IFRFWFQpOyIpKQorICAgICAgICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFU
RSBUQUJMRSBPcmlnaW5zIChvcmlnaW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwg
cGF0aCBURVhUKTsiX3MpKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IE9yaWdpbnMgdGFibGUuIik7CiAgICAgfQogfQo=
</data>
<flag name="commit-queue"
          id="449913"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>