<?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>123347</bug_id>
          
          <creation_ts>2013-10-25 10:56:55 -0700</creation_ts>
          <short_desc>Refactor IDB factory creation</short_desc>
          <delta_ts>2013-10-28 21:17:59 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>kling</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943658</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 10:56:55 -0700</bug_when>
    <thetext>Refactor how IDB databases get their disk locations

Contrary to a comment and unused static variable, IDBFactoryBackends are not global singletons.  They have a 1:1 relationship with IDBFactory.

And it doesn&apos;t make sense to have one factory support databases in different locations on disk.

So this patch moves the directory argument from IDBDatabaseBackend to IDBFactoryBackend.

It also adds the top-level security origin as an argument into database opening, as that should further differentiate the uniqueness of a database in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943693</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 12:35:42 -0700</bug_when>
    <thetext>Retitling to Refactor IDB factory creation:

-Rework directory location
-Make (some) SecurityOrigin arguments be references instead of pointers
-Add two SecurityOrigin arguments to opening databases for future use</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943705</commentid>
    <comment_count>2</comment_count>
      <attachid>215200</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 12:57:15 -0700</bug_when>
    <thetext>Created attachment 215200
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943709</commentid>
    <comment_count>3</comment_count>
      <attachid>215200</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2013-10-25 13:08:14 -0700</bug_when>
    <thetext>Comment on attachment 215200
Patch v1 

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

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:90
&gt; +    OwnPtr&lt;WebCore::IDBDatabaseMetadata&gt; m_metadata;

Is this being used somewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943742</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 14:13:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 215200 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215200&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:90
&gt; &gt; +    OwnPtr&lt;WebCore::IDBDatabaseMetadata&gt; m_metadata;
&gt; 
&gt; Is this being used somewhere?

Probably not, leaked through from a separate patch.  Thanks for catching it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943743</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-25 14:13:27 -0700</bug_when>
    <thetext>Fixed locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944191</commentid>
    <comment_count>6</comment_count>
      <attachid>215200</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-28 13:15:16 -0700</bug_when>
    <thetext>Comment on attachment 215200
Patch v1 

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

r=me

&gt; Source/WebCore/Modules/indexeddb/PageGroupIndexedDatabase.h:47
&gt; +    PageGroupIndexedDatabase(const String&amp; databaseDirectoryIdentifier);

explicit

&gt; Source/WebCore/Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.h:49
&gt; +    WorkerGlobalScopeIndexedDatabase(const String&amp; databaseDirectoryIdentifier);

explicit

&gt; Source/WebCore/Modules/indexeddb/leveldb/IDBFactoryBackendLevelDB.h:72
&gt; +    IDBFactoryBackendLevelDB(const String&amp; databaseDirectory);

explicit

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:51
&gt; +    WebIDBFactoryBackend(const String&amp; databaseDirectoryIdentifier);

explicit

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebProcessIDBDatabaseBackend.h:46
&gt; +    static PassRefPtr&lt;WebProcessIDBDatabaseBackend&gt; create(WebIDBFactoryBackend* factory, const String&amp; name) { return adoptRef(new WebProcessIDBDatabaseBackend(factory, name)); }

We should pass the WebIDBFactoryBackend by reference here, since null is not a valid input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944197</commentid>
    <comment_count>7</comment_count>
      <attachid>215326</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-28 13:29:37 -0700</bug_when>
    <thetext>Created attachment 215326
Patch for landing

Since it&apos;s been a few days, want to give EWS another shot at this before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944306</commentid>
    <comment_count>8</comment_count>
      <attachid>215326</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-28 21:17:57 -0700</bug_when>
    <thetext>Comment on attachment 215326
Patch for landing

Clearing flags on attachment: 215326

Committed r158170: &lt;http://trac.webkit.org/changeset/158170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944307</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-28 21:17:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215200</attachid>
            <date>2013-10-25 12:57:15 -0700</date>
            <delta_ts>2013-10-28 13:29:37 -0700</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43925</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiOTA1MWJkLi45ZjJmNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTMtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlZmFjdG9yIElEQiBmYWN0b3J5IGNyZWF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBSZXdvcmsgaG93IGRhdGFiYXNlIGRpcmVjdG9y
eSBsb2NhdGlvbiBpcyBwYXNzZWQgYXJvdW5kLgorICAgICAgICAtIE1ha2UgKHNvbWUpIFNlY3Vy
aXR5T3JpZ2luIGFyZ3VtZW50cyBiZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMuCisg
ICAgICAgIC0gQWRkIHR3byBTZWN1cml0eU9yaWdpbiBhcmd1bWVudHMgdG8gb3BlbmluZyBkYXRh
YmFzZXMgZm9yIGZ1dHVyZSB1c2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbCk6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cEluZGV4ZWREYXRhYmFzZTo6
UGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cElu
ZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXBJbmRleGVk
RGF0YWJhc2U6OmZhY3RvcnlCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9Q
YWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4
ZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWRE
YXRhYmFzZTo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4
ZWREYXRhYmFzZTo6aW5kZXhlZERCKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9Xb3Jr
ZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbkluTWVtb3J5KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaDoKKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaWxlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlVW5pcXVlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5
QmFja2VuZExldmVsREI6OklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQik6CisgICAgICAgIChXZWJD
b3JlOjpJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmdldERhdGFiYXNlTmFtZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW5CYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpvcGVuKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2
ZWxEQi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpjcmVh
dGUpOgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKKyAgICAgICAgKiBwbGF0Zm9ybS9E
YXRhYmFzZVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3k6
OmNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EYXRhYmFzZVN0
cmF0ZWd5Lmg6CisKIDIwMTMtMTAtMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgSURCQmFja2luZ1N0b3JlTGV2ZWxEQiBkZWZhdWx0
IGNvbnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcAppbmRleCA2MWEwOTNhLi5lN2RmZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIFBh
c3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBk
YXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCk7CiAg
ICAgaW50NjRfdCB0cmFuc2FjdGlvbklkID0gSURCRGF0YWJhc2U6Om5leHRUcmFuc2FjdGlvbklk
KCk7CiAgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1
ZXN0OjpjcmVhdGUoY29udGV4dCwgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZl
cnNpb24sIHZlcnNpb25OdWxsbmVzcyk7Ci0gICAgbV9iYWNrZW5kLT5vcGVuKG5hbWUsIHZlcnNp
b24sIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3QsIGRhdGFiYXNlQ2FsbGJhY2tzLCBjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29udGV4
dCkpOworICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCB0cmFuc2FjdGlvbklkLCBy
ZXF1ZXN0LCBkYXRhYmFzZUNhbGxiYWNrcywgKihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKSwg
Kihjb250ZXh0LT50b3BPcmlnaW4oKSkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZS5jcHAKaW5kZXggMDNjNDQ1Yi4uZDFjOWZiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlLmNwcApAQCAtMzUsOSArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IElEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlOjpjcmVhdGUoKQorUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZT4gSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmRhdGFiYXNlU3RyYXRlZ3koKS0+Y3JlYXRlSURCRmFjdG9yeUJhY2tlbmQo
KTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmRhdGFiYXNlU3RyYXRlZ3koKS0+
Y3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXgg
MmYwMTNkMy4uOTM0NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC01NSwxMSAr
NTUsMTEgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIC8vIHRyaWdnZXIgd29yayBvbiBh
IGJhY2tncm91bmQgdGhyZWFkIGlmIG5lY2Vzc2FyeS4KIGNsYXNzIElEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZT4gY3JlYXRlKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJp
bmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgZGF0YURpcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYg
bmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZy
YW1lT3JpZ2luKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBT
dHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuY3BwCmlu
ZGV4IDg0MGVmMDguLmE3Y2JjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmNwcApAQCAtMjgs
MTIgKzI4LDE0IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUg
Ikdyb3VwU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VH
cm91cEluZGV4ZWREYXRhYmFzZTo6UGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlKCkKK1BhZ2VHcm91
cEluZGV4ZWREYXRhYmFzZTo6UGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKQorICAgIDogbV9kYXRhYmFzZURpcmVjdG9yeUlk
ZW50aWZpZXIoZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKQogewogfQogCkBAIC01MCw3ICs1
Miw3IEBAIFBhZ2VHcm91cEluZGV4ZWREYXRhYmFzZSogUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNl
Ojpmcm9tKFBhZ2VHcm91cCYgZ3JvdXApCiB7CiAgICAgUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNl
KiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8UGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlKj4oU3Vw
cGxlbWVudDxQYWdlR3JvdXA+Ojpmcm9tKCZncm91cCwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBzdXBwbGVtZW50ID0gbmV3IFBhZ2VHcm91cElu
ZGV4ZWREYXRhYmFzZSgpOworICAgICAgICBzdXBwbGVtZW50ID0gbmV3IFBhZ2VHcm91cEluZGV4
ZWREYXRhYmFzZShncm91cC5ncm91cFNldHRpbmdzKCkuaW5kZXhlZERCRGF0YWJhc2VQYXRoKCkp
OwogICAgICAgICBwcm92aWRlVG8oJmdyb3VwLCBzdXBwbGVtZW50TmFtZSgpLCBhZG9wdFB0cihz
dXBwbGVtZW50KSk7CiAgICAgfQogICAgIHJldHVybiBzdXBwbGVtZW50OwpAQCAtNjEsNyArNjMs
NyBAQCBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNl
OjpmYWN0b3J5QmFja2VuZCgpCiAgICAgLy8gRG8gbm90IGFkZCBwYWdlIHNldHRpbmcgYmFzZWQg
YWNjZXNzIGNvbnRyb2wgaGVyZSBzaW5jZSB0aGlzIG9iamVjdCBpcyBzaGFyZWQgYnkgYWxsIHBh
Z2VzIGluCiAgICAgLy8gdGhlIGdyb3VwIGFuZCBoYXZpbmcgcGVyLXBhZ2UgY29udHJvbHMgaXMg
bWlzbGVhZGluZy4KICAgICBpZiAoIW1fZmFjdG9yeUJhY2tlbmQpCi0gICAgICAgIG1fZmFjdG9y
eUJhY2tlbmQgPSBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZTo6Y3JlYXRlKCk7CisgICAgICAg
IG1fZmFjdG9yeUJhY2tlbmQgPSBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZTo6Y3JlYXRlKG1f
ZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKICAgICByZXR1cm4gbV9mYWN0b3J5QmFja2Vu
ZC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuaAppbmRleCBmZjc4YTY1Li5iZjM2MDlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJ
bmRleGVkRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Q
YWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw5
ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGZhY3Rv
cnlCYWNrZW5kKCk7CiAKIHByaXZhdGU6Ci0gICAgUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlKCk7
CisgICAgUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJl
Y3RvcnlJZGVudGlmaWVyKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUo
KTsKIAorICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcjsKICAgICBSZWZQ
dHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IG1fZmFjdG9yeUJhY2tlbmQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxT
Y29wZUluZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggZjk3NzdhZC4uMjdl
YjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcApAQCAtMzgs
NyArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSgpCitXb3JrZXJH
bG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJh
c2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIpCisgICAgOiBtX2Rh
dGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcihkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIpCiB7
CiB9CiAKQEAgLTU1LDcgKzU2LDEzIEBAIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
KiBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbShTY3JpcHRFCiB7CiAgICAg
V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD46OmZyb20oY29udGV4dCwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBzdXBwbGVtZW50ID0gbmV3IFdvcmtlckdsb2JhbFNj
b3BlSW5kZXhlZERhdGFiYXNlKCk7CisgICAgICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeUlk
ZW50aWZpZXI7CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9
IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCk7CisgICAgICAgIGNvbnN0
IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MgPSB3b3JrZXJHbG9iYWxTY29wZS0+Z3JvdXBT
ZXR0aW5ncygpOworICAgICAgICBpZiAoZ3JvdXBTZXR0aW5ncykKKyAgICAgICAgICAgIGRhdGFi
YXNlRGlyZWN0b3J5SWRlbnRpZmllciA9IGdyb3VwU2V0dGluZ3MtPmluZGV4ZWREQkRhdGFiYXNl
UGF0aCgpOworCisgICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgV29ya2VyR2xvYmFsU2NvcGVJbmRl
eGVkRGF0YWJhc2UoZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKICAgICAgICAgcHJvdmlk
ZVRvKGNvbnRleHQsIHN1cHBsZW1lbnROYW1lKCksIGFkb3B0UHRyKHN1cHBsZW1lbnQpKTsKICAg
ICB9CiAgICAgcmV0dXJuIHN1cHBsZW1lbnQ7CkBAIC02OSw3ICs3Niw3IEBAIElEQkZhY3Rvcnkq
IFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjppbmRleGVkREIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCoKIElEQkZhY3RvcnkqIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
OjppbmRleGVkREIoKQogewogICAgIGlmICghbV9mYWN0b3J5QmFja2VuZCkKLSAgICAgICAgbV9m
YWN0b3J5QmFja2VuZCA9IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpjcmVhdGUoKTsKKyAg
ICAgICAgbV9mYWN0b3J5QmFja2VuZCA9IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpjcmVh
dGUobV9kYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIpOwogICAgIGlmICghbV9pZGJGYWN0b3J5
KQogICAgICAgICBtX2lkYkZhY3RvcnkgPSBJREJGYWN0b3J5OjpjcmVhdGUobV9mYWN0b3J5QmFj
a2VuZC5nZXQoKSk7CiAgICAgcmV0dXJuIG1faWRiRmFjdG9yeS5nZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhl
ZERhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9i
YWxTY29wZUluZGV4ZWREYXRhYmFzZS5oCmluZGV4IDQ5ZTAzOGUuLjI3OGNlYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29y
a2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuaApAQCAtMzAsNiArMzAsNyBAQAogI2lmIEVO
QUJMRShXT1JLRVJTKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIlN1
cHBsZW1lbnRhYmxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsMTEgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SURCRmFjdG9yeSogaW5kZXhlZERCKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogcHJpdmF0
ZToKLSAgICBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSgpOworICAgIFdvcmtlckds
b2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlJ
ZGVudGlmaWVyKTsKIAogICAgIElEQkZhY3RvcnkqIGluZGV4ZWREQigpOwogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCisgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJl
Y3RvcnlJZGVudGlmaWVyOwogICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4g
bV9mYWN0b3J5QmFja2VuZDsKICAgICBSZWZQdHI8SURCRmFjdG9yeT4gbV9pZGJGYWN0b3J5Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwCmluZGV4IGU3MGFlNWIuLmNm
YmYyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcApAQCAtMzY3LDEz
ICszNjcsMTMgQEAgZW51bSBJREJMZXZlbERCQmFja2luZ1N0b3JlT3BlblJlc3VsdCB7CiAgICAg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZU9wZW5NYXgsCiB9OwogCi1QYXNzUmVmUHRyPElEQkJhY2tp
bmdTdG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW4oU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBjb25zdCBTdHJp
bmcmIGZpbGVJZGVudGlmaWVyKQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJ
REJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZUFyZywgY29uc3QgU3RyaW5nJiBmaWxlSWRl
bnRpZmllcikKIHsKICAgICBEZWZhdWx0TGV2ZWxEQkZhY3RvcnkgbGV2ZWxEQkZhY3Rvcnk7CiAg
ICAgcmV0dXJuIElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW4oc2VjdXJpdHlPcmlnaW4sIHBh
dGhCYXNlQXJnLCBmaWxlSWRlbnRpZmllciwgJmxldmVsREJGYWN0b3J5KTsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVu
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZUFy
ZywgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgTGV2ZWxEQkZhY3RvcnkqIGxldmVsREJG
YWN0b3J5KQorUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJCYWNraW5nU3Rv
cmVMZXZlbERCOjpvcGVuKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwYXRoQmFzZUFyZywgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgTGV2
ZWxEQkZhY3RvcnkqIGxldmVsREJGYWN0b3J5KQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbiIpOwogICAgIEFTU0VSVCghcGF0aEJhc2VBcmcuaXNF
bXB0eSgpKTsKQEAgLTM5MCw3ICszOTAsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxl
dmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW4oU2VjdXJpdHlPcmlnaW4qCiAgICAg
ICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+KCk7CiAgICAgfQog
Ci0gICAgU3RyaW5nIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aEJhc2UsIHNl
Y3VyaXR5T3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIuaW5kZXhlZGRiLmxldmVsZGIi
KTsKKyAgICBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoQmFzZSwg
c2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkgKyAiLmluZGV4ZWRkYi5sZXZlbGRi
Iik7CiAKICAgICBkYiA9IGxldmVsREJGYWN0b3J5LT5vcGVuTGV2ZWxEQihwYXRoLCBjb21wYXJh
dG9yLmdldCgpKTsKICAgICBpZiAoZGIpIHsKQEAgLTQzNywxMyArNDM3LDEzIEBAIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbihT
ZWN1cml0eU9yaWdpbioKICAgICByZXR1cm4gY3JlYXRlKGZpbGVJZGVudGlmaWVyLCBkYi5yZWxl
YXNlKCksIGNvbXBhcmF0b3IucmVsZWFzZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmVMZXZlbERCPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5NZW1vcnkoU2VjdXJp
dHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCitQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9w
ZW5Jbk1lbW9yeShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiB7CiAgICAgRGVmYXVsdExldmVs
REJGYWN0b3J5IGxldmVsREJGYWN0b3J5OwotICAgIHJldHVybiBJREJCYWNraW5nU3RvcmVMZXZl
bERCOjpvcGVuSW5NZW1vcnkoc2VjdXJpdHlPcmlnaW4sIGlkZW50aWZpZXIsICZsZXZlbERCRmFj
dG9yeSk7CisgICAgcmV0dXJuIElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5Jbk1lbW9yeShp
ZGVudGlmaWVyLCAmbGV2ZWxEQkZhY3RvcnkpOwogfQogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5Jbk1lbW9yeShTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgTGV2ZWxEQkZhY3RvcnkqKQorUGFz
c1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpv
cGVuSW5NZW1vcnkoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSopCiB7
CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5NZW1v
cnkiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaAppbmRleCAxYWMwOThlLi4y
OWJhYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZl
bGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaApAQCAtNjEsMTAgKzYx
LDEwIEBAIHB1YmxpYzoKICAgICBjbGFzcyBUcmFuc2FjdGlvbjsKIAogICAgIHZpcnR1YWwgfklE
QkJhY2tpbmdTdG9yZUxldmVsREIoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmVMZXZlbERCPiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFz
ZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllcik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gb3BlbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmlu
ZyYgcGF0aEJhc2UsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIExldmVsREJGYWN0b3J5
Kik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gb3Blbklu
TWVtb3J5KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBvcGVuSW5NZW1vcnkoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIExldmVsREJGYWN0b3J5Kik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gb3Blbihjb25z
dCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGNvbnN0IFN0cmluZyYg
ZmlsZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxl
dmVsREI+IG9wZW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNl
LCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IG9wZW5Jbk1lbW9yeShjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZUxldmVsREI+IG9wZW5Jbk1lbW9yeShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIExldmVs
REJGYWN0b3J5Kik7CiAgICAgV2Vha1B0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBjcmVhdGVX
ZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KIAogICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZ2V0RGF0YWJhc2VOYW1lcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2Vu
ZExldmVsREIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCmluZGV4IDg2NDk2MWQuLjI1ZTQ5OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9y
eUJhY2tlbmRMZXZlbERCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKQEAgLTU2LDE4ICs1NiwxOSBA
QCBzdGF0aWMgdm9pZCBjbGVhbldlYWtNYXAoSGFzaE1hcDxLLCBXZWFrUHRyPE0+ID4mIG1hcCkK
ICAgICB9CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29tcHV0ZUZpbGVJZGVudGlmaWVyKFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKK3N0YXRpYyBTdHJpbmcgY29tcHV0ZUZpbGVJZGVudGlm
aWVyKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBzdGF0aWMg
Y29uc3QgY2hhciBsZXZlbERCRmlsZVN1ZmZpeFtdID0gIkAxIjsKLSAgICByZXR1cm4gc2VjdXJp
dHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpICsgbGV2ZWxEQkZpbGVTdWZmaXg7CisgICAg
cmV0dXJuIHNlY3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpICsgbGV2ZWxEQkZpbGVT
dWZmaXg7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCitzdGF0aWMgU3Ry
aW5nIGNvbXB1dGVVbmlxdWVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewogICAgIHJldHVybiBjb21wdXRlRmlsZUlk
ZW50aWZpZXIoc2VjdXJpdHlPcmlnaW4pICsgbmFtZTsKIH0KIAotSURCRmFjdG9yeUJhY2tlbmRM
ZXZlbERCOjpJREJGYWN0b3J5QmFja2VuZExldmVsREIoKQorSURCRmFjdG9yeUJhY2tlbmRMZXZl
bERCOjpJREJGYWN0b3J5QmFja2VuZExldmVsREIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVj
dG9yeSkKKyAgICA6IG1fZGF0YWJhc2VEaXJlY3RvcnkoZGF0YWJhc2VEaXJlY3RvcnkpCiB7CiB9
CiAKQEAgLTgzLDggKzg0LDkgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OnJlbW92
ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW4KIAogdm9pZCBJREJG
YWN0b3J5QmFja2VuZExldmVsREI6OmdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3Rvcnkp
CiB7CisgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsKICAgICBMT0coU3RvcmFnZUFQSSwgIklE
QkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6Z2V0RGF0YWJhc2VOYW1lcyIpOwotICAgIFJlZlB0cjxJ
REJCYWNraW5nU3RvcmVMZXZlbERCPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNl
Y3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3Jl
TGV2ZWxEQj4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZSgqc2VjdXJpdHlPcmlnaW4s
IGRhdGFEaXJlY3RvcnkpOwogICAgIGlmICghYmFja2luZ1N0b3JlKSB7CiAgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIG9wZW5pbmcgYmFja2luZyBzdG9yZSBm
b3IgaW5kZXhlZERCLndlYmtpdEdldERhdGFiYXNlTmFtZXMuIikpOwogICAgICAgICByZXR1cm47
CkBAIC0xMDIsNyArMTA0LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmdldERh
dGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWMKIHZvaWQgSURCRmFj
dG9yeUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyZWN0b3J5KQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRmFjdG9yeUJhY2tl
bmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZSIpOwotICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVu
dGlmaWVyID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0
KCkpOworICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0gY29tcHV0ZVVuaXF1ZUlk
ZW50aWZpZXIobmFtZSwgKnNlY3VyaXR5T3JpZ2luKTsKIAogICAgIElEQkRhdGFiYXNlQmFja2Vu
ZE1hcDo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQmFja2VuZE1hcC5maW5kKHVuaXF1ZUlkZW50
aWZpZXIpOwogICAgIGlmIChpdCAhPSBtX2RhdGFiYXNlQmFja2VuZE1hcC5lbmQoKSkgewpAQCAt
MTEzLDcgKzExNSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRh
YmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCCiAgICAgfQogCiAgICAgLy8g
RklYTUU6IEV2ZXJ5dGhpbmcgZnJvbSBub3cgb24gc2hvdWxkIGJlIGRvbmUgb24gYW5vdGhlciB0
aHJlYWQuCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IGJhY2tpbmdTdG9yZSA9
IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOworICAgIFJl
ZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0
b3JlKCpzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiAgICAgaWYgKCFiYWNraW5nU3Rv
cmUpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igb3Bl
bmluZyBiYWNraW5nIHN0b3JlIGZvciBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UuIikpOwogICAg
ICAgICByZXR1cm47CkBAIC0xMjgsOSArMTMwLDkgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZExl
dmVsREI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREIK
ICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgY3JlYXRpbmcg
ZGF0YWJhc2UgYmFja2VuZCBmb3IgaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlLiIpKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJGYWN0b3J5QmFja2VuZExldmVs
REI6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK1Bhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlTGV2ZWxEQj4gSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpvcGVuQmFja2luZ1N0b3Jl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRh
RGlyZWN0b3J5KQogewotICAgIGNvbnN0IFN0cmluZyBmaWxlSWRlbnRpZmllciA9IGNvbXB1dGVG
aWxlSWRlbnRpZmllcihzZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgY29uc3QgU3RyaW5nIGZp
bGVJZGVudGlmaWVyID0gY29tcHV0ZUZpbGVJZGVudGlmaWVyKHNlY3VyaXR5T3JpZ2luKTsKICAg
ICBjb25zdCBib29sIG9wZW5Jbk1lbW9yeSA9IGRhdGFEaXJlY3RvcnkuaXNFbXB0eSgpOwogCiAg
ICAgSURCQmFja2luZ1N0b3JlTGV2ZWxEQk1hcDo6aXRlcmF0b3IgaXQyID0gbV9iYWNraW5nU3Rv
cmVNYXAuZmluZChmaWxlSWRlbnRpZmllcik7CkBAIC0xMzksOSArMTQxLDkgQEAgUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW5C
YWNraW5nU3RvcmUoUGEKIAogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBiYWNr
aW5nU3RvcmU7CiAgICAgaWYgKG9wZW5Jbk1lbW9yeSkKLSAgICAgICAgYmFja2luZ1N0b3JlID0g
SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbkluTWVtb3J5KHNlY3VyaXR5T3JpZ2luLmdldCgp
LCBmaWxlSWRlbnRpZmllcik7CisgICAgICAgIGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9y
ZUxldmVsREI6Om9wZW5Jbk1lbW9yeShmaWxlSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAg
ICBiYWNraW5nU3RvcmUgPSBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuKHNlY3VyaXR5T3Jp
Z2luLmdldCgpLCBkYXRhRGlyZWN0b3J5LCBmaWxlSWRlbnRpZmllcik7CisgICAgICAgIGJhY2tp
bmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW4oc2VjdXJpdHlPcmlnaW4sIGRh
dGFEaXJlY3RvcnksIGZpbGVJZGVudGlmaWVyKTsKIAogICAgIGlmIChiYWNraW5nU3RvcmUpIHsK
ICAgICAgICAgY2xlYW5XZWFrTWFwKG1fYmFja2luZ1N0b3JlTWFwKTsKQEAgLTE1OSwxNiArMTYx
LDE1IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gSURCRmFjdG9yeUJhY2tl
bmRMZXZlbERCOjpvcGVuQmFja2luZ1N0b3JlKFBhCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRf
dCB2ZXJzaW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0eU9yaWdpbiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkKK3ZvaWQg
SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRf
dCB2ZXJzaW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2Fs
bGJhY2tzLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRmFjdG9yeUJhY2tlbmRMZXZl
bERCOjpvcGVuIik7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9
IHBycFNlY3VyaXR5T3JpZ2luOwotICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0g
Y29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAg
IGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlmaWVyID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIo
bmFtZSwgb3BlbmluZ09yaWdpbik7CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1w
bD4gZGF0YWJhc2VCYWNrZW5kOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcDo6aXRlcmF0b3Ig
aXQgPSBtX2RhdGFiYXNlQmFja2VuZE1hcC5maW5kKHVuaXF1ZUlkZW50aWZpZXIpOwogICAgIGlm
IChpdCA9PSBtX2RhdGFiYXNlQmFja2VuZE1hcC5lbmQoKSkgewotICAgICAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlTGV2ZWxEQj4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1
cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CisgICAgICAgIFJlZlB0cjxJREJCYWNraW5nU3Rv
cmVMZXZlbERCPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKG9wZW5pbmdPcmlnaW4s
IG1fZGF0YWJhc2VEaXJlY3RvcnkpOwogICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZSkgewogICAg
ICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igb3BlbmluZyBi
YWNraW5nIHN0b3JlIGZvciBpbmRleGVkREIub3Blbi4iKSk7CiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuaAppbmRleCAwM2NhYWRhLi40ODc2
ZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmgKQEAgLTQ5LDkgKzQ5
LDkgQEAgY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDsKIAogY2xhc3MgSURCRmFjdG9yeUJh
Y2tlbmRMZXZlbERCIDogcHVibGljIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZExldmVsREI+IGNyZWF0
ZSgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCKCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQihkYXRhYmFzZURpcmVjdG9y
eSkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2VuZExldmVsREIoKTsKIApA
QCAtNTksMTggKzU5LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSURCRGF0
YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikgT1ZFUlJJREUgRklO
QUw7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSBPVkVSUklERSBGSU5BTDsKLSAgICB2aXJ0dWFs
IHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgT1ZFUlJJREUgRklOQUw7CisgICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmln
aW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4pIE9WRVJSSURFIEZJTkFM
OwogCiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgT1ZFUlJJREUgRklO
QUw7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiBtYXliZUNyZWF0ZVRyYW5zYWN0aW9uQmFja2VuZChJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UqLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9k
ZSkgT1ZFUlJJREUgRklOQUw7CiAKLQogcHJvdGVjdGVkOgotICAgIElEQkZhY3RvcnlCYWNrZW5k
TGV2ZWxEQigpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERC
PiBvcGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJp
bmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZl
bERCPiBvcGVuQmFja2luZ1N0b3JlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5n
JiBkYXRhRGlyKTsKIAogcHJpdmF0ZToKKyAgICBJREJGYWN0b3J5QmFja2VuZExldmVsREIoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CisKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gPiBJREJEYXRhYmFzZUJhY2tlbmRN
YXA7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwIG1fZGF0YWJhc2VCYWNrZW5kTWFwOwogCkBA
IC03OSw4ICs3OSw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoU2V0PFJlZlB0cjxJREJCYWNraW5n
U3RvcmVMZXZlbERCPiA+IG1fc2Vzc2lvbk9ubHlCYWNraW5nU3RvcmVzOwogCi0gICAgLy8gT25s
eSBvbmUgaW5zdGFuY2Ugb2YgdGhlIGZhY3Rvcnkgc2hvdWxkIGV4aXN0IGF0IGFueSBnaXZlbiB0
aW1lLgotICAgIHN0YXRpYyBJREJGYWN0b3J5QmFja2VuZExldmVsREIqIGlkYkZhY3RvcnlCYWNr
ZW5kSW1wbDsKKyAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzcyNDQxOS4uNmI4OWJmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTU5NSw3ICs1OTUsNyBAQCBfX1pON1dlYkNvcmUxNkFw
cGxpY2F0aW9uQ2FjaGUxOGRpc2tVc2FnZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUK
IF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTIwZGVsZXRlQ2FjaGVGb3JPcmlnaW5FUE5T
XzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkNTU1BhcnNlckNvbnRleHRDMUVSTlNf
OERvY3VtZW50RVJLTlNfM1VSTEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2RGF0YWJh
c2VTdHJhdGVneTE3Z2V0RGF0YWJhc2VTZXJ2ZXJFdgotX19aTjdXZWJDb3JlMTZEYXRhYmFzZVN0
cmF0ZWd5MjNjcmVhdGVJREJGYWN0b3J5QmFja2VuZEV2CitfX1pON1dlYkNvcmUxNkRhdGFiYXNl
U3RyYXRlZ3kyM2NyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJBY2NlbGVyYXRpb242Y3JlYXRlRWJkYmRiZAogX19a
TjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJSb3RhdGlvblJhdGU2Y3JlYXRlRWJkYmRiZAog
X19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0cklO
UzBfMTJBY2NlbGVyYXRpb25FRUVTNF9OUzJfSU5TMF8xMlJvdGF0aW9uUmF0ZUVFRWJkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3kuY3BwCmluZGV4IGFjNzIxZmMu
LmZiODBlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3Ry
YXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3ku
Y3BwCkBAIC00MywxMiArNDMsMTMgQEAgQWJzdHJhY3REYXRhYmFzZVNlcnZlciogRGF0YWJhc2VT
dHJhdGVneTo6Z2V0RGF0YWJhc2VTZXJ2ZXIoKQogI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLVBhc3NSZWZQdHI8SURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2U+IERhdGFiYXNlU3RyYXRlZ3k6OmNyZWF0ZUlEQkZhY3RvcnlCYWNr
ZW5kKCkKK1Bhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IERhdGFiYXNlU3Ry
YXRlZ3k6OmNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJl
Y3RvcnlJZGVudGlmaWVyKQogewogICAgIC8vIEZJWE1FOiBOZWVkIGEgYmV0dGVyIHBsYXRmb3Jt
IGFic3RyYWN0aW9uIGhlcmUsIGJ1dCB0aGlzIHN0b3AgZ2FwIHdpbGwgd29yayBmb3Igbm93Lgog
I2lmIFVTRShMRVZFTERCKQotICAgIHJldHVybiBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmNy
ZWF0ZSgpOworICAgIHJldHVybiBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmNyZWF0ZShkYXRh
YmFzZURpcmVjdG9yeUlkZW50aWZpZXIpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0YWJh
c2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKICAgICByZXR1cm4gMDsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5oCmluZGV4IDk1Y2Q2NjEuLjZiMjky
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgKQEAgLTI3
LDYgKzI3LDggQEAKICNkZWZpbmUgRGF0YWJhc2VTdHJhdGVneV9oCiAKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXI7CkBAIC0zOSw3ICs0
MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJ
REJGYWN0b3J5QmFja2VuZCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZT4gY3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZURpcmVjdG9yeUlkZW50aWZpZXIpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBiZDlkYjJlLi5hNjQwNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTMt
MTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFj
dG9yIElEQiBmYWN0b3J5IGNyZWF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgLSBSZXdvcmsgaG93IGRhdGFiYXNlIGRpcmVjdG9yeSBsb2NhdGlv
biBpcyBwYXNzZWQgYXJvdW5kLgorICAgICAgICAtIE1ha2UgKHNvbWUpIFNlY3VyaXR5T3JpZ2lu
IGFyZ3VtZW50cyBiZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMuCisgICAgICAgIC0g
QWRkIHR3byBTZWN1cml0eU9yaWdpbiBhcmd1bWVudHMgdG8gb3BlbmluZyBkYXRhYmFzZXMgZm9y
IGZ1dHVyZSB1c2UuCisKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0Ojp1bmlxdWVEYXRhYmFzZUlkZW50aWZpZXIp
OgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL0lEQlV0aWxpdGllcy5oOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUJhY2tlbmQ6OldlYklE
QkZhY3RvcnlCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUJhY2tlbmQ6
Om9wZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJG
YWN0b3J5QmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5QmFja2VuZDo6
Y3JlYXRlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQ
cm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0lEQkRhdGFiYXNlQmFja2VuZDo6V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFz
ZUJhY2tlbmQuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjcmVhdGVJREJGYWN0b3J5QmFja2VuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxMy0xMC0yMyAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBIQVZFX1hQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIv
SURCVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhl
ZERCL0lEQlV0aWxpdGllcy5jcHAKaW5kZXggNmVlNTJjNi4uMDExZTI1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGls
aXRpZXMuY3BwCkBAIC0zMyw5ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TdHJp
bmcgdW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCitTdHJpbmcgdW5pcXVlRGF0
YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHNlY3VyaXR5
T3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSArIGRhdGFiYXNlTmFtZTsKKyAgICByZXR1cm4g
c2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkgKyBkYXRhYmFzZU5hbWU7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuaAppbmRleCBhNmQ0ZTJhLi4yZWRm
N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9JREJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9JREJVdGlsaXRpZXMuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVN0cmluZyB1bmlxdWVEYXRhYmFzZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
Kik7CitTdHJpbmcgdW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpOwogICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3Bw
CmluZGV4IGEzZThlZTIuLjliZTYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3Rv
cnlCYWNrZW5kLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgSURCRGF0YWJhc2VCYWNrZW5k
TWFwJiBzaGFyZWREYXRhYmFzZUJhY2tlbmRNYXAoKQogICAgIHJldHVybiBkYXRhYmFzZUJhY2tl
bmRNYXA7CiB9CiAKLVdlYklEQkZhY3RvcnlCYWNrZW5kOjpXZWJJREJGYWN0b3J5QmFja2VuZCgp
CitXZWJJREJGYWN0b3J5QmFja2VuZDo6V2ViSURCRmFjdG9yeUJhY2tlbmQoY29uc3QgU3RyaW5n
JikKIHsKIH0KIApAQCAtNjksMTkgKzY5LDE4IEBAIHZvaWQgV2ViSURCRmFjdG9yeUJhY2tlbmQ6
OmdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJJREJGYWN0b3J5QmFja2VuZDo6b3Bl
bihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBwcnBTZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYpCit2b2lkIFdlYklEQkZhY3RvcnlCYWNrZW5kOjpvcGVuKGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lLCBpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJXZWJJREJGYWN0b3J5QmFja2VuZDo6
b3BlbiIpOwogCi0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IHBy
cFNlY3VyaXR5T3JpZ2luOwotICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSB1bmlxdWVE
YXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VOYW1lLCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7Cisg
ICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IHVuaXF1ZURhdGFiYXNlSWRlbnRpZmllcihk
YXRhYmFzZU5hbWUsIHNlY3VyaXR5T3JpZ2luKTsKICAgICAKICAgICBSZWZQdHI8V2ViUHJvY2Vz
c0lEQkRhdGFiYXNlQmFja2VuZD4gd2ViUHJvY2Vzc0RhdGFiYXNlQmFja2VuZDsKICAgICBJREJE
YXRhYmFzZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gc2hhcmVkRGF0YWJhc2VCYWNrZW5kTWFw
KCkuZmluZChkYXRhYmFzZUlkZW50aWZpZXIpOwogCiAgICAgaWYgKGl0ID09IHNoYXJlZERhdGFi
YXNlQmFja2VuZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgIHdlYlByb2Nlc3NEYXRhYmFzZUJhY2tl
bmQgPSBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpjcmVhdGUoZGF0YWJhc2VOYW1lLCBz
ZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgICAgIHdlYlByb2Nlc3NEYXRhYmFzZUJhY2tlbmQg
PSBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpjcmVhdGUodGhpcywgZGF0YWJhc2VOYW1l
KTsKICAgICAgICAgd2ViUHJvY2Vzc0RhdGFiYXNlQmFja2VuZC0+ZXN0YWJsaXNoRGF0YWJhc2VQ
cm9jZXNzQmFja2VuZCgpOwogICAgICAgICBzaGFyZWREYXRhYmFzZUJhY2tlbmRNYXAoKS5zZXQo
ZGF0YWJhc2VJZGVudGlmaWVyLCB3ZWJQcm9jZXNzRGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKICAg
ICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmgKaW5kZXggZGQ1
MDQ2MS4uNzAzZjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmgK
QEAgLTM1LDEyICszNSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSURCRmFj
dG9yeUJhY2tlbmQgOiBwdWJsaWMgV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Ug
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYklEQkZhY3RvcnlCYWNrZW5kPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViSURCRmFjdG9yeUJhY2tlbmQpOyB9Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSURCRmFjdG9yeUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcikgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYklEQkZhY3RvcnlCYWNrZW5kKGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcikpOyB9CiAK
ICAgICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5QmFja2VuZCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpIE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3Jp
Z2luKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSBPVkVSUklERSBGSU5BTDsKIAogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJ
ZGVudGlmaWVyKSBPVkVSUklERSBGSU5BTDsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IG1heWJlQ3JlYXRlVHJhbnNhY3Rpb25CYWNrZW5kKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZSosIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIFdlYkNvcmU6
OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsKIAogcHJpdmF0ZToKLSAgICBXZWJJREJGYWN0
b3J5QmFja2VuZCgpOworICAgIFdlYklEQkZhY3RvcnlCYWNrZW5kKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuY3Bw
CmluZGV4IDM4NThmZDAuLjc5ZmFmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
UHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKQEAgLTI5LDggKzI5LDEwIEBACiAKICNpbmNs
dWRlICJEYXRhYmFzZVByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViSURCRmFjdG9yeUJhY2tlbmQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9J
REJNZXRhZGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtNDYsMTAgKzQ4LDEwIEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZUJhY2tlbmRJZGVudGlmaWVyKCkKICAgICByZXR1cm4gaWRlbnRpZmllcisr
OwogfQogCi1XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpXZWJQcm9jZXNzSURCRGF0YWJh
c2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKK1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OldlYlByb2Nlc3NJREJEYXRhYmFz
ZUJhY2tlbmQoV2ViSURCRmFjdG9yeUJhY2tlbmQqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICA6IG1fZGF0YWJhc2VOYW1lKG5hbWUpCi0gICAgLCBtX3NlY3VyaXR5T3JpZ2luKG9y
aWdpbikKICAgICAsIG1fYmFja2VuZElkZW50aWZpZXIoZ2VuZXJhdGVCYWNrZW5kSWRlbnRpZmll
cigpKQorICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0
YWJhc2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oCmluZGV4IGVmNzRhNmYuLjlkYzJl
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tl
bmQuaApAQCAtMzksNDEgKzM5LDQzIEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZCA6IHB1Ymxp
YyBXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UsIHB1YmxpYyBDb3JlSVBDOjpN
ZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdlYklEQkZhY3RvcnlCYWNrZW5kOworCitjbGFzcyBXZWJQ
cm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kIEZJTkFMIDogcHVibGljIFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZSwgcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKG5h
bWUsIG9yaWdpbikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc0lEQkRhdGFi
YXNlQmFja2VuZD4gY3JlYXRlKFdlYklEQkZhY3RvcnlCYWNrZW5kKiBmYWN0b3J5LCBjb25zdCBT
dHJpbmcmIG5hbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzSURCRGF0YWJhc2VC
YWNrZW5kKGZhY3RvcnksIG5hbWUpKTsgfQogCiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc0lEQkRh
dGFiYXNlQmFja2VuZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0
aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFz
ZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2ln
bmVkIHNob3J0IG1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVj
dFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNy
ZW1lbnQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJh
Y2tzPikgT1ZFUlJJREU7CiAKICAgICAvLyBUcmFuc2FjdGlvbi1zcGVjaWZpYyBvcGVyYXRpb25z
LgotICAgIHZpcnR1YWwgdm9pZCBjb21taXQoaW50NjRfdCB0cmFuc2FjdGlvbklkKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlRXJyb3I+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFib3J0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFib3J0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPikgT1ZFUlJJREU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktl
eVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHks
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGdl
dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgYm9vbCBrZXlPbmx5LCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogICAgIC8vIE5vdGUg
dGhhdCAndmFsdWUnIG1heSBiZSBjb25zdW1lZC9hZG9wdGVkIGJ5IHRoaXMgY2FsbC4KLSAgICB2
aXJ0dWFsIHZvaWQgcHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFj
a3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW5kZXhLZXlzPiYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW5kZXhLZXlzPiYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVu
Q3Vyc29yKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBXZWJDb3JlOjpJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IHB1dChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkluZGV4S2V5
cz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkluZGV4S2V5cz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJh
bmdlPiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwg
VGFza1R5cGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGNvdW50KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFu
Z2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOwogCiAgICAgdm9pZCBvcGVuQ29ubmVj
dGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qg
dmVyc2lvbik7CiAKICAgICB2b2lkIGVzdGFibGlzaERhdGFiYXNlUHJvY2Vzc0JhY2tlbmQoKTsK
IAogcHJpdmF0ZToKLSAgICBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICBXZWJQcm9jZXNzSURCRGF0
YWJhc2VCYWNrZW5kKFdlYklEQkZhY3RvcnlCYWNrZW5kKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAogICAgIFN0cmluZyBtX2RhdGFiYXNlTmFtZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CkBAIC04Myw2ICs4NSw5IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIE9WRVJSSURF
IHsgcmV0dXJuIG1fYmFja2VuZElkZW50aWZpZXI7IH0KIAogICAgIHVpbnQ2NF90IG1fYmFja2Vu
ZElkZW50aWZpZXI7CisKKyAgICBSZWZQdHI8V2ViSURCRmFjdG9yeUJhY2tlbmQ+IG1fZmFjdG9y
eTsKKyAgICBPd25QdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YT4gbV9tZXRhZGF0YTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCmluZGV4IDlmMjc4NWMuLjhjMjZkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTIxNywxMyArMjE3LDEzIEBAIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RGF0YWJhc2VTZXJ2ZXIoKQogI2VuZGlmIC8vIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLVBhc3NS
ZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoKQorUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZElu
dGVyZmFjZT4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVJREJGYWN0b3J5QmFja2VuZChj
b25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcikKIHsKICNpZiAhRU5BQkxF
KERBVEFCQVNFX1BST0NFU1MpCi0gICAgcmV0dXJuIERhdGFiYXNlU3RyYXRlZ3k6OmNyZWF0ZUlE
QkZhY3RvcnlCYWNrZW5kKCk7CisgICAgcmV0dXJuIERhdGFiYXNlU3RyYXRlZ3k6OmNyZWF0ZUlE
QkZhY3RvcnlCYWNrZW5kKGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBXZWJJREJGYWN0b3J5QmFja2VuZDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFdl
YklEQkZhY3RvcnlCYWNrZW5kOjpjcmVhdGUoZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKaW5kZXggZGYwYjc3Yi4uMTllMTEwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBnZXREYXRhYmFzZVNlcnZlcigpIE9WRVJS
SURFOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJREJG
YWN0b3J5QmFja2VuZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIpIE9WRVJSSURFOwogI2VuZGlm
CiAKICAgICAvLyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneQo=
</data>
<flag name="review"
          id="237879"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215326</attachid>
            <date>2013-10-28 13:29:37 -0700</date>
            <delta_ts>2013-10-28 21:17:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43904</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYWJiMzJlLi45MjU0NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTMtMTAtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlZmFjdG9yIElEQiBmYWN0b3J5IGNyZWF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kcmVhcyBLbGluZy4KKworICAgICAgICAtIFJld29yayBob3cgZGF0YWJhc2UgZGlyZWN0b3J5
IGxvY2F0aW9uIGlzIHBhc3NlZCBhcm91bmQuCisgICAgICAgIC0gTWFrZSAoc29tZSkgU2VjdXJp
dHlPcmlnaW4gYXJndW1lbnRzIGJlIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycy4KKyAg
ICAgICAgLSBBZGQgdHdvIFNlY3VyaXR5T3JpZ2luIGFyZ3VtZW50cyB0byBvcGVuaW5nIGRhdGFi
YXNlcyBmb3IgZnV0dXJlIHVzZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJm
YWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlOjpQ
YWdlR3JvdXBJbmRleGVkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwSW5k
ZXhlZERhdGFiYXNlOjpmcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cEluZGV4ZWRE
YXRhYmFzZTo6ZmFjdG9yeUJhY2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL1Bh
Z2VHcm91cEluZGV4ZWREYXRhYmFzZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6Oldvcmtlckdsb2JhbFNjb3BlSW5kZXhl
ZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERh
dGFiYXNlOjpmcm9tKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlSW5kZXhl
ZERhdGFiYXNlOjppbmRleGVkREIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL1dvcmtl
ckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJC
YWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5NZW1vcnkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcHV0ZUZpbGVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVVbmlxdWVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlC
YWNrZW5kTGV2ZWxEQjo6SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6Z2V0RGF0YWJhc2VOYW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmRlbGV0ZURhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6b3BlbkJhY2tpbmdTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW4pOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZl
bERCLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmNyZWF0
ZSk6CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKworICAgICAgICAqIHBsYXRmb3JtL0Rh
dGFiYXNlU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneTo6
Y3JlYXRlSURCRmFjdG9yeUJhY2tlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL0RhdGFiYXNlU3Ry
YXRlZ3kuaDoKKwogMjAxMy0xMC0yOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVuZGVyRWxlbWVudDo6bV9zdHlsZSBzaG91bGQgYmUgYSBSZWYuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDYx
YTA5M2EuLmU3ZGZlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y28KICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0g
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoKTsKICAgICBpbnQ2NF90IHRyYW5zYWN0
aW9uSWQgPSBJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0aW9uSWQoKTsKICAgICBSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0
LCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbiwgdmVyc2lvbk51bGxu
ZXNzKTsKLSAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgdHJhbnNhY3Rpb25JZCwg
cmVxdWVzdCwgZGF0YWJhc2VDYWxsYmFja3MsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNv
bnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CisgICAgbV9iYWNrZW5k
LT5vcGVuKG5hbWUsIHZlcnNpb24sIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3QsIGRhdGFiYXNlQ2Fs
bGJhY2tzLCAqKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpLCAqKGNvbnRleHQtPnRvcE9yaWdp
bigpKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
LmNwcAppbmRleCAwM2M0NDViLi5kMWM5ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Uu
Y3BwCkBAIC0zNSw5ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U6
OmNyZWF0ZSgpCitQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rv
cnlJZGVudGlmaWVyKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+ZGF0YWJh
c2VTdHJhdGVneSgpLT5jcmVhdGVJREJGYWN0b3J5QmFja2VuZCgpOworICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+ZGF0YWJhc2VTdHJhdGVneSgpLT5jcmVhdGVJREJGYWN0b3J5QmFj
a2VuZChkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCAyZjAxM2QzLi45MzQ2NjYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU1LDExICs1NSwxMSBAQCB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwogLy8gdHJpZ2dlciB3b3JrIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQg
aWYgbmVjZXNzYXJ5LgogY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldERh
dGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2
ZXJzaW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNp
b24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5p
bmdPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4pID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRp
ZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
UGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggODQwZWYwOC4uYTdjYmNk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvUGFnZUdyb3Vw
SW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiR3JvdXBTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiUGFnZUdy
b3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNl
OjpQYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UoKQorUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlOjpQ
YWdlR3JvdXBJbmRleGVkRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeUlk
ZW50aWZpZXIpCisgICAgOiBtX2RhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcihkYXRhYmFzZURp
cmVjdG9yeUlkZW50aWZpZXIpCiB7CiB9CiAKQEAgLTUwLDcgKzUyLDcgQEAgUGFnZUdyb3VwSW5k
ZXhlZERhdGFiYXNlKiBQYWdlR3JvdXBJbmRleGVkRGF0YWJhc2U6OmZyb20oUGFnZUdyb3VwJiBn
cm91cCkKIHsKICAgICBQYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UqIHN1cHBsZW1lbnQgPSBzdGF0
aWNfY2FzdDxQYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UqPihTdXBwbGVtZW50PFBhZ2VHcm91cD46
OmZyb20oJmdyb3VwLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlKCk7Cisg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlKGdyb3VwLmdy
b3VwU2V0dGluZ3MoKS5pbmRleGVkREJEYXRhYmFzZVBhdGgoKSk7CiAgICAgICAgIHByb3ZpZGVU
bygmZ3JvdXAsIHN1cHBsZW1lbnROYW1lKCksIGFkb3B0UHRyKHN1cHBsZW1lbnQpKTsKICAgICB9
CiAgICAgcmV0dXJuIHN1cHBsZW1lbnQ7CkBAIC02MSw3ICs2Myw3IEBAIElEQkZhY3RvcnlCYWNr
ZW5kSW50ZXJmYWNlKiBQYWdlR3JvdXBJbmRleGVkRGF0YWJhc2U6OmZhY3RvcnlCYWNrZW5kKCkK
ICAgICAvLyBEbyBub3QgYWRkIHBhZ2Ugc2V0dGluZyBiYXNlZCBhY2Nlc3MgY29udHJvbCBoZXJl
IHNpbmNlIHRoaXMgb2JqZWN0IGlzIHNoYXJlZCBieSBhbGwgcGFnZXMgaW4KICAgICAvLyB0aGUg
Z3JvdXAgYW5kIGhhdmluZyBwZXItcGFnZSBjb250cm9scyBpcyBtaXNsZWFkaW5nLgogICAgIGlm
ICghbV9mYWN0b3J5QmFja2VuZCkKLSAgICAgICAgbV9mYWN0b3J5QmFja2VuZCA9IElEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlOjpjcmVhdGUoKTsKKyAgICAgICAgbV9mYWN0b3J5QmFja2VuZCA9
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpjcmVhdGUobV9kYXRhYmFzZURpcmVjdG9yeUlk
ZW50aWZpZXIpOwogICAgIHJldHVybiBtX2ZhY3RvcnlCYWNrZW5kLmdldCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVk
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cElu
ZGV4ZWREYXRhYmFzZS5oCmluZGV4IGZmNzhhNjUuLjkyYTI1NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWREYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWREYXRh
YmFzZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
ICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDkgKzQ0LDEwIEBAIHB1YmxpYzoK
ICAgICBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogZmFjdG9yeUJhY2tlbmQoKTsKIAogcHJp
dmF0ZToKLSAgICBQYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UoKTsKKyAgICBleHBsaWNpdCBQYWdl
R3JvdXBJbmRleGVkRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeUlkZW50
aWZpZXIpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCisgICAg
U3RyaW5nIG1fZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyOwogICAgIFJlZlB0cjxJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZT4gbV9mYWN0b3J5QmFja2VuZDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhl
ZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckds
b2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBmOTc3N2FkLi4yN2ViNWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29w
ZUluZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC0zOCw3ICszOCw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJh
c2U6Oldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKCkKK1dvcmtlckdsb2JhbFNjb3Bl
SW5kZXhlZERhdGFiYXNlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZShjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcikKKyAgICA6IG1fZGF0YWJhc2VEaXJl
Y3RvcnlJZGVudGlmaWVyKGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcikKIHsKIH0KIApAQCAt
NTUsNyArNTYsMTMgQEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckds
b2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKFNjcmlwdEUKIHsKICAgICBXb3JrZXJHbG9i
YWxTY29wZUluZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlckds
b2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKj4oU3VwcGxlbWVudDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0Pjo6ZnJvbShjb250ZXh0LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVt
ZW50KSB7Ci0gICAgICAgIHN1cHBsZW1lbnQgPSBuZXcgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVk
RGF0YWJhc2UoKTsKKyAgICAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcjsK
KyAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gc3RhdGljX2Nh
c3Q8V29ya2VyR2xvYmFsU2NvcGUqPihjb250ZXh0KTsKKyAgICAgICAgY29uc3QgR3JvdXBTZXR0
aW5ncyogZ3JvdXBTZXR0aW5ncyA9IHdvcmtlckdsb2JhbFNjb3BlLT5ncm91cFNldHRpbmdzKCk7
CisgICAgICAgIGlmIChncm91cFNldHRpbmdzKQorICAgICAgICAgICAgZGF0YWJhc2VEaXJlY3Rv
cnlJZGVudGlmaWVyID0gZ3JvdXBTZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCk7CisK
KyAgICAgICAgc3VwcGxlbWVudCA9IG5ldyBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFz
ZShkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIpOwogICAgICAgICBwcm92aWRlVG8oY29udGV4
dCwgc3VwcGxlbWVudE5hbWUoKSwgYWRvcHRQdHIoc3VwcGxlbWVudCkpOwogICAgIH0KICAgICBy
ZXR1cm4gc3VwcGxlbWVudDsKQEAgLTY5LDcgKzc2LDcgQEAgSURCRmFjdG9yeSogV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmluZGV4ZWREQihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KgogSURCRmFjdG9yeSogV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmluZGV4ZWRE
QigpCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnlCYWNrZW5kKQotICAgICAgICBtX2ZhY3RvcnlCYWNr
ZW5kID0gSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U6OmNyZWF0ZSgpOworICAgICAgICBtX2Zh
Y3RvcnlCYWNrZW5kID0gSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U6OmNyZWF0ZShtX2RhdGFi
YXNlRGlyZWN0b3J5SWRlbnRpZmllcik7CiAgICAgaWYgKCFtX2lkYkZhY3RvcnkpCiAgICAgICAg
IG1faWRiRmFjdG9yeSA9IElEQkZhY3Rvcnk6OmNyZWF0ZShtX2ZhY3RvcnlCYWNrZW5kLmdldCgp
KTsKICAgICByZXR1cm4gbV9pZGJGYWN0b3J5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlLmgKaW5kZXggNDllMDM4ZS4uM2Y2ODllZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxT
Y29wZUluZGV4ZWREYXRhYmFzZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgRU5BQkxFKFdPUktF
UlMpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFi
bGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00NSwxMSArNDYsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBJREJGYWN0b3J5
KiBpbmRleGVkREIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiBwcml2YXRlOgotICAgIFdv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKCk7CisgICAgZXhwbGljaXQgV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeUlk
ZW50aWZpZXIpOwogCiAgICAgSURCRmFjdG9yeSogaW5kZXhlZERCKCk7CiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKKyAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVj
dG9yeUlkZW50aWZpZXI7CiAgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBt
X2ZhY3RvcnlCYWNrZW5kOwogICAgIFJlZlB0cjxJREJGYWN0b3J5PiBtX2lkYkZhY3Rvcnk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJCYWNraW5nU3RvcmVMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAKaW5kZXggZTcwYWU1Yi4uY2Zi
ZjI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxk
Yi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwCkBAIC0zNjcsMTMg
KzM2NywxMyBAQCBlbnVtIElEQkxldmVsREJCYWNraW5nU3RvcmVPcGVuUmVzdWx0IHsKICAgICBJ
REJMZXZlbERCQmFja2luZ1N0b3JlT3Blbk1heCwKIH07CiAKLVBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlTGV2ZWxEQj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbihTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0IFN0cmlu
ZyYgZmlsZUlkZW50aWZpZXIpCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElE
QkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5
T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVu
dGlmaWVyKQogewogICAgIERlZmF1bHRMZXZlbERCRmFjdG9yeSBsZXZlbERCRmFjdG9yeTsKICAg
ICByZXR1cm4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbihzZWN1cml0eU9yaWdpbiwgcGF0
aEJhc2VBcmcsIGZpbGVJZGVudGlmaWVyLCAmbGV2ZWxEQkZhY3RvcnkpOwogfQogCi1QYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW4o
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlQXJn
LCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSogbGV2ZWxEQkZh
Y3RvcnkpCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9y
ZUxldmVsREI6Om9wZW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBTdHJpbmcmIHBhdGhCYXNlQXJnLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBMZXZl
bERCRmFjdG9yeSogbGV2ZWxEQkZhY3RvcnkpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJC
YWNraW5nU3RvcmVMZXZlbERCOjpvcGVuIik7CiAgICAgQVNTRVJUKCFwYXRoQmFzZUFyZy5pc0Vt
cHR5KCkpOwpAQCAtMzkwLDcgKzM5MCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2
ZWxEQj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbihTZWN1cml0eU9yaWdpbioKICAgICAg
ICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4oKTsKICAgICB9CiAK
LSAgICBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoQmFzZSwgc2Vj
dXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpICsgIi5pbmRleGVkZGIubGV2ZWxkYiIp
OworICAgIFN0cmluZyBwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhCYXNlLCBz
ZWN1cml0eU9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIuaW5kZXhlZGRiLmxldmVsZGIi
KTsKIAogICAgIGRiID0gbGV2ZWxEQkZhY3RvcnktPm9wZW5MZXZlbERCKHBhdGgsIGNvbXBhcmF0
b3IuZ2V0KCkpOwogICAgIGlmIChkYikgewpAQCAtNDM3LDEzICs0MzcsMTMgQEAgUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuKFNl
Y3VyaXR5T3JpZ2luKgogICAgIHJldHVybiBjcmVhdGUoZmlsZUlkZW50aWZpZXIsIGRiLnJlbGVh
c2UoKSwgY29tcGFyYXRvci5yZWxlYXNlKCkpOwogfQogCi1QYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5Jbk1lbW9yeShTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK1Bhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Bl
bkluTWVtb3J5KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBEZWZhdWx0TGV2ZWxE
QkZhY3RvcnkgbGV2ZWxEQkZhY3Rvcnk7Ci0gICAgcmV0dXJuIElEQkJhY2tpbmdTdG9yZUxldmVs
REI6Om9wZW5Jbk1lbW9yeShzZWN1cml0eU9yaWdpbiwgaWRlbnRpZmllciwgJmxldmVsREJGYWN0
b3J5KTsKKyAgICByZXR1cm4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbkluTWVtb3J5KGlk
ZW50aWZpZXIsICZsZXZlbERCRmFjdG9yeSk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlTGV2ZWxEQj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbkluTWVtb3J5KFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSopCitQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9w
ZW5Jbk1lbW9yeShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIExldmVsREJGYWN0b3J5KikKIHsK
ICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5Jbk1lbW9y
eSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZl
bGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oCmluZGV4IDFhYzA5OGUuLjI5
YmFjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oCkBAIC02MSwxMCArNjEs
MTAgQEAgcHVibGljOgogICAgIGNsYXNzIFRyYW5zYWN0aW9uOwogCiAgICAgdmlydHVhbCB+SURC
QmFja2luZ1N0b3JlTGV2ZWxEQigpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZUxldmVsREI+IG9wZW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNl
LCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmVMZXZlbERCPiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5n
JiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgTGV2ZWxEQkZhY3Rvcnkq
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBvcGVuSW5N
ZW1vcnkoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IG9wZW5Jbk1lbW9yeShTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgTGV2ZWxEQkZhY3RvcnkqKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBvcGVuKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBm
aWxlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2
ZWxEQj4gb3Blbihjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgcGF0aEJhc2Us
IGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIExldmVsREJGYWN0b3J5Kik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gb3BlbkluTWVtb3J5KGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlTGV2ZWxEQj4gb3BlbkluTWVtb3J5KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgTGV2ZWxE
QkZhY3RvcnkqKTsKICAgICBXZWFrUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IGNyZWF0ZVdl
YWtQdHIoKSB7IHJldHVybiBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXREYXRhYmFzZU5hbWVzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5k
TGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggODY0OTYxZC4uMjVlNDk4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5
QmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcApAQCAtNTYsMTggKzU2LDE5IEBA
IHN0YXRpYyB2b2lkIGNsZWFuV2Vha01hcChIYXNoTWFwPEssIFdlYWtQdHI8TT4gPiYgbWFwKQog
ICAgIH0KIH0KIAotc3RhdGljIFN0cmluZyBjb21wdXRlRmlsZUlkZW50aWZpZXIoU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luKQorc3RhdGljIFN0cmluZyBjb21wdXRlRmlsZUlkZW50aWZp
ZXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewogICAgIHN0YXRpYyBj
b25zdCBjaGFyIGxldmVsREJGaWxlU3VmZml4W10gPSAiQDEiOwotICAgIHJldHVybiBzZWN1cml0
eU9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkgKyBsZXZlbERCRmlsZVN1ZmZpeDsKKyAgICBy
ZXR1cm4gc2VjdXJpdHlPcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkgKyBsZXZlbERCRmlsZVN1
ZmZpeDsKIH0KIAotc3RhdGljIFN0cmluZyBjb21wdXRlVW5pcXVlSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIG5hbWUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKK3N0YXRpYyBTdHJp
bmcgY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTZWN1
cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgcmV0dXJuIGNvbXB1dGVGaWxlSWRl
bnRpZmllcihzZWN1cml0eU9yaWdpbikgKyBuYW1lOwogfQogCi1JREJGYWN0b3J5QmFja2VuZExl
dmVsREI6OklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQigpCitJREJGYWN0b3J5QmFja2VuZExldmVs
REI6OklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQihjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5KQorICAgIDogbV9kYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSkKIHsKIH0K
IApAQCAtODMsOCArODQsOSBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6cmVtb3Zl
SURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbgogCiB2b2lkIElEQkZh
Y3RvcnlCYWNrZW5kTGV2ZWxEQjo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
biwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcmVjdG9yeSkK
IHsKKyAgICBBU1NFUlQoc2VjdXJpdHlPcmlnaW4pOwogICAgIExPRyhTdG9yYWdlQVBJLCAiSURC
RmFjdG9yeUJhY2tlbmRMZXZlbERCOjpnZXREYXRhYmFzZU5hbWVzIik7Ci0gICAgUmVmUHRyPElE
QkJhY2tpbmdTdG9yZUxldmVsREI+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2Vj
dXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVM
ZXZlbERCPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKCpzZWN1cml0eU9yaWdpbiwg
ZGF0YURpcmVjdG9yeSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKICAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igb3BlbmluZyBiYWNraW5nIHN0b3JlIGZv
ciBpbmRleGVkREIud2Via2l0R2V0RGF0YWJhc2VOYW1lcy4iKSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEwMiw3ICsxMDQsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6Z2V0RGF0
YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhYwogdm9pZCBJREJGYWN0
b3J5QmFja2VuZExldmVsREI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXJlY3RvcnkpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJGYWN0b3J5QmFja2Vu
ZExldmVsREI6OmRlbGV0ZURhdGFiYXNlIik7Ci0gICAgY29uc3QgU3RyaW5nIHVuaXF1ZUlkZW50
aWZpZXIgPSBjb21wdXRlVW5pcXVlSWRlbnRpZmllcihuYW1lLCBzZWN1cml0eU9yaWdpbi5nZXQo
KSk7CisgICAgY29uc3QgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBjb21wdXRlVW5pcXVlSWRl
bnRpZmllcihuYW1lLCAqc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgSURCRGF0YWJhc2VCYWNrZW5k
TWFwOjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmZpbmQodW5pcXVlSWRlbnRp
Zmllcik7CiAgICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CkBAIC0x
MTMsNyArMTE1LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmRlbGV0ZURhdGFi
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREIKICAgICB9CiAKICAgICAvLyBG
SVhNRTogRXZlcnl0aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRo
cmVhZC4KLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gYmFja2luZ1N0b3JlID0g
b3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CisgICAgUmVm
UHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3Rv
cmUoKnNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKICAgICBpZiAoIWJhY2tpbmdTdG9y
ZSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBvcGVu
aW5nIGJhY2tpbmcgc3RvcmUgZm9yIGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZS4iKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTEyOCw5ICsxMzAsOSBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kTGV2
ZWxEQjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQgog
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBk
YXRhYmFzZSBiYWNrZW5kIGZvciBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UuIikpOwogfQogCi1Q
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxE
Qjo6b3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQorUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmVMZXZlbERCPiBJREJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW5CYWNraW5nU3RvcmUo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFE
aXJlY3RvcnkpCiB7Ci0gICAgY29uc3QgU3RyaW5nIGZpbGVJZGVudGlmaWVyID0gY29tcHV0ZUZp
bGVJZGVudGlmaWVyKHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICBjb25zdCBTdHJpbmcgZmls
ZUlkZW50aWZpZXIgPSBjb21wdXRlRmlsZUlkZW50aWZpZXIoc2VjdXJpdHlPcmlnaW4pOwogICAg
IGNvbnN0IGJvb2wgb3BlbkluTWVtb3J5ID0gZGF0YURpcmVjdG9yeS5pc0VtcHR5KCk7CiAKICAg
ICBJREJCYWNraW5nU3RvcmVMZXZlbERCTWFwOjppdGVyYXRvciBpdDIgPSBtX2JhY2tpbmdTdG9y
ZU1hcC5maW5kKGZpbGVJZGVudGlmaWVyKTsKQEAgLTEzOSw5ICsxNDEsOSBAQCBQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6b3BlbkJh
Y2tpbmdTdG9yZShQYQogCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IGJhY2tp
bmdTdG9yZTsKICAgICBpZiAob3BlbkluTWVtb3J5KQotICAgICAgICBiYWNraW5nU3RvcmUgPSBJ
REJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5NZW1vcnkoc2VjdXJpdHlPcmlnaW4uZ2V0KCks
IGZpbGVJZGVudGlmaWVyKTsKKyAgICAgICAgYmFja2luZ1N0b3JlID0gSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6b3BlbkluTWVtb3J5KGZpbGVJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW4oc2VjdXJpdHlPcmln
aW4uZ2V0KCksIGRhdGFEaXJlY3RvcnksIGZpbGVJZGVudGlmaWVyKTsKKyAgICAgICAgYmFja2lu
Z1N0b3JlID0gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbihzZWN1cml0eU9yaWdpbiwgZGF0
YURpcmVjdG9yeSwgZmlsZUlkZW50aWZpZXIpOwogCiAgICAgaWYgKGJhY2tpbmdTdG9yZSkgewog
ICAgICAgICBjbGVhbldlYWtNYXAobV9iYWNraW5nU3RvcmVNYXApOwpAQCAtMTU5LDE2ICsxNjEs
MTUgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJGYWN0b3J5QmFja2Vu
ZExldmVsREI6Om9wZW5CYWNraW5nU3RvcmUoUGEKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBJ
REJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxs
YmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycFNlY3VyaXR5T3JpZ2luLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0b3J5KQordm9pZCBJ
REJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxs
YmFja3MsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTZWN1cml0
eU9yaWdpbiYpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJGYWN0b3J5QmFja2VuZExldmVs
REI6Om9wZW4iKTsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0g
cHJwU2VjdXJpdHlPcmlnaW47Ci0gICAgY29uc3QgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBj
b21wdXRlVW5pcXVlSWRlbnRpZmllcihuYW1lLCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAg
Y29uc3QgU3RyaW5nIHVuaXF1ZUlkZW50aWZpZXIgPSBjb21wdXRlVW5pcXVlSWRlbnRpZmllcihu
YW1lLCBvcGVuaW5nT3JpZ2luKTsKIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBs
PiBkYXRhYmFzZUJhY2tlbmQ7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwOjppdGVyYXRvciBp
dCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmZpbmQodW5pcXVlSWRlbnRpZmllcik7CiAgICAgaWYg
KGl0ID09IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7Ci0gICAgICAgIFJlZlB0cjxJREJC
YWNraW5nU3RvcmVMZXZlbERCPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNlY3Vy
aXR5T3JpZ2luLCBkYXRhRGlyZWN0b3J5KTsKKyAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZUxldmVsREI+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUob3BlbmluZ09yaWdpbiwg
bV9kYXRhYmFzZURpcmVjdG9yeSk7CiAgICAgICAgIGlmICghYmFja2luZ1N0b3JlKSB7CiAgICAg
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBvcGVuaW5nIGJh
Y2tpbmcgc3RvcmUgZm9yIGluZGV4ZWREQi5vcGVuLiIpKTsKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
RmFjdG9yeUJhY2tlbmRMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDAzY2FhZGEuLjdkYzhi
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuaApAQCAtNDksOSArNDks
OSBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwogCiBjbGFzcyBJREJGYWN0b3J5QmFj
a2VuZExldmVsREIgOiBwdWJsaWMgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQj4gY3JlYXRl
KCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZExldmVsREI+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJGYWN0b3J5QmFja2VuZExldmVsREIoKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCKGRhdGFiYXNlRGlyZWN0b3J5
KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQigpOwogCkBA
IC01OSwxOCArNTksMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJREJEYXRh
YmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKSBPVkVSUklERSBGSU5B
TDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpIE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwg
dm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSBPVkVSUklERSBGSU5BTDsKKyAgICB2
aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdp
biwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbikgT1ZFUlJJREUgRklOQUw7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSBPVkVSUklERSBGSU5B
TDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IG1heWJlQ3JlYXRlVHJhbnNhY3Rpb25CYWNrZW5kKElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZSosIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2Rl
KSBPVkVSUklERSBGSU5BTDsKIAotCiBwcm90ZWN0ZWQ6Ci0gICAgSURCRmFjdG9yeUJhY2tlbmRM
ZXZlbERCKCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+
IG9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIGNvbnN0IFN0cmlu
ZyYgZGF0YURpcik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVs
REI+IG9wZW5CYWNraW5nU3RvcmUoY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBTdHJpbmcm
IGRhdGFEaXIpOwogCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IElEQkZhY3RvcnlCYWNrZW5kTGV2
ZWxEQihjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKKwogICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiA+IElEQkRhdGFiYXNl
QmFja2VuZE1hcDsKICAgICBJREJEYXRhYmFzZUJhY2tlbmRNYXAgbV9kYXRhYmFzZUJhY2tlbmRN
YXA7CiAKQEAgLTc5LDggKzc5LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8UmVmUHRyPElE
QkJhY2tpbmdTdG9yZUxldmVsREI+ID4gbV9zZXNzaW9uT25seUJhY2tpbmdTdG9yZXM7CiAKLSAg
ICAvLyBPbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeSBzaG91bGQgZXhpc3QgYXQgYW55
IGdpdmVuIHRpbWUuCi0gICAgc3RhdGljIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQiogaWRiRmFj
dG9yeUJhY2tlbmRJbXBsOworICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwOWNkY2RmLi40
MDhhOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTk1LDcgKzU5NSw3IEBAIF9fWk43V2Vi
Q29yZTE2QXBwbGljYXRpb25DYWNoZTE4ZGlza1VzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5
T3JpZ2luRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZvck9y
aWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTE2Q1NTUGFyc2VyQ29udGV4
dEMxRVJOU184RG9jdW1lbnRFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTZEYXRhYmFzZVN0cmF0ZWd5MTdnZXREYXRhYmFzZVNlcnZlckV2Ci1fX1pON1dlYkNvcmUxNkRh
dGFiYXNlU3RyYXRlZ3kyM2NyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kRXYKK19fWk43V2ViQ29yZTE2
RGF0YWJhc2VTdHJhdGVneTIzY3JlYXRlSURCRmFjdG9yeUJhY2tlbmRFUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGExMkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRi
ZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGExMlJvdGF0aW9uUmF0ZTZjcmVhdGVF
YmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGE2Y3JlYXRlRU4zV1RGMTBQYXNz
UmVmUHRySU5TMF8xMkFjY2VsZXJhdGlvbkVFRVM0X05TMl9JTlMwXzEyUm90YXRpb25SYXRlRUVF
YmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3ku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VTdHJhdGVneS5jcHAKaW5kZXgg
YWM3MjFmYy4uZmI4MGU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0
YWJhc2VTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VT
dHJhdGVneS5jcHAKQEAgLTQzLDEyICs0MywxMyBAQCBBYnN0cmFjdERhdGFiYXNlU2VydmVyKiBE
YXRhYmFzZVN0cmF0ZWd5OjpnZXREYXRhYmFzZVNlcnZlcigpCiAjZW5kaWYgLy8gRU5BQkxFKFNR
TF9EQVRBQkFTRSkKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotUGFzc1JlZlB0cjxJ
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gRGF0YWJhc2VTdHJhdGVneTo6Y3JlYXRlSURCRmFj
dG9yeUJhY2tlbmQoKQorUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gRGF0
YWJhc2VTdHJhdGVneTo6Y3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZURpcmVjdG9yeUlkZW50aWZpZXIpCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgYSBiZXR0ZXIg
cGxhdGZvcm0gYWJzdHJhY3Rpb24gaGVyZSwgYnV0IHRoaXMgc3RvcCBnYXAgd2lsbCB3b3JrIGZv
ciBub3cuCiAjaWYgVVNFKExFVkVMREIpCi0gICAgcmV0dXJuIElEQkZhY3RvcnlCYWNrZW5kTGV2
ZWxEQjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6Y3Jl
YXRlKGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcik7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIpOwogICAgIHJldHVybiAwOwogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRhYmFzZVN0cmF0ZWd5LmgKaW5kZXggOTVjZDY2
MS4uNmIyOTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0YWJhc2VT
dHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGFiYXNlU3RyYXRlZ3ku
aApAQCAtMjcsNiArMjcsOCBAQAogI2RlZmluZSBEYXRhYmFzZVN0cmF0ZWd5X2gKIAogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJhY3REYXRhYmFzZVNlcnZlcjsKQEAg
LTM5LDcgKzQxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJREJGYWN0b3J5QmFja2VuZChjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5SWRlbnRpZmllcik7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGI2MDRkYzAuLjk3OGI4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBA
QAorMjAxMy0xMC0yOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVmYWN0b3IgSURCIGZhY3RvcnkgY3JlYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzNDcKKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIC0gUmV3b3JrIGhvdyBkYXRhYmFzZSBkaXJlY3Rvcnkg
bG9jYXRpb24gaXMgcGFzc2VkIGFyb3VuZC4KKyAgICAgICAgLSBNYWtlIChzb21lKSBTZWN1cml0
eU9yaWdpbiBhcmd1bWVudHMgYmUgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzLgorICAg
ICAgICAtIEFkZCB0d28gU2VjdXJpdHlPcmlnaW4gYXJndW1lbnRzIHRvIG9wZW5pbmcgZGF0YWJh
c2VzIGZvciBmdXR1cmUgdXNlLgorCisgICAgICAgICogU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVk
REIvSURCVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dW5pcXVlRGF0YWJhc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRp
ZXMuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJG
YWN0b3J5QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlCYWNrZW5k
OjpXZWJJREJGYWN0b3J5QmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlC
YWNrZW5kOjpvcGVuKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCRmFjdG9yeUJhY2tlbmQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUJh
Y2tlbmQ6OmNyZWF0ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OldlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURC
RGF0YWJhc2VCYWNrZW5kLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlSURCRmFjdG9yeUJhY2tlbmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTMtMTAtMjgg
IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KIAogICAgICAgICBOYW1lIGFsbCB0
aGUgR0xpYiB0aW1lb3V0IHNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9EYXRhYmFzZXMvSW5kZXhlZERCL0lEQlV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuY3BwCmluZGV4IDZlZTUyYzYu
LjAxMWUyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvSW5k
ZXhlZERCL0lEQlV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFi
YXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmNwcApAQCAtMzMsOSArMzMsOSBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotU3RyaW5nIHVuaXF1ZURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKQorU3RyaW5nIHVuaXF1ZURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQog
ewotICAgIHJldHVybiBzZWN1cml0eU9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkgKyBkYXRh
YmFzZU5hbWU7CisgICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
ICsgZGF0YWJhc2VOYW1lOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL0lEQlV0aWxpdGllcy5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVz
LmgKaW5kZXggYTZkNGUyYS4uMmVkZjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TdHJp
bmcgdW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworU3RyaW5nIHVuaXF1ZURhdGFiYXNlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkZhY3RvcnlCYWNrZW5kLmNwcAppbmRleCBhM2U4ZWUyLi41MmJlMWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFj
dG9yeUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3Rh
dGljIElEQkRhdGFiYXNlQmFja2VuZE1hcCYgc2hhcmVkRGF0YWJhc2VCYWNrZW5kTWFwKCkKICAg
ICByZXR1cm4gZGF0YWJhc2VCYWNrZW5kTWFwOwogfQogCi1XZWJJREJGYWN0b3J5QmFja2VuZDo6
V2ViSURCRmFjdG9yeUJhY2tlbmQoKQorV2ViSURCRmFjdG9yeUJhY2tlbmQ6OldlYklEQkZhY3Rv
cnlCYWNrZW5kKGNvbnN0IFN0cmluZyYpCiB7CiB9CiAKQEAgLTY5LDE5ICs2OSwxOCBAQCB2b2lk
IFdlYklEQkZhY3RvcnlCYWNrZW5kOjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgUGFzc1JlZlB0cgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2Vi
SURCRmFjdG9yeUJhY2tlbmQ6Om9wZW4oY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGludDY0
X3QgdmVyc2lvbiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNh
bGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwU2VjdXJpdHlPcmlnaW4sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKQordm9pZCBXZWJJREJGYWN0b3J5
QmFja2VuZDo6b3Blbihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgaW50NjRfdCB2ZXJzaW9u
LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBj
b25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhTdG9yYWdlQVBJLCAi
V2ViSURCRmFjdG9yeUJhY2tlbmQ6Om9wZW4iKTsKIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4gPSBwcnBTZWN1cml0eU9yaWdpbjsKLSAgICBTdHJpbmcgZGF0YWJh
c2VJZGVudGlmaWVyID0gdW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlTmFtZSwgc2Vj
dXJpdHlPcmlnaW4uZ2V0KCkpOworICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSB1bmlx
dWVEYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VOYW1lLCBzZWN1cml0eU9yaWdpbik7CiAgICAg
CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ+IHdlYlByb2Nlc3NEYXRh
YmFzZUJhY2tlbmQ7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwOjppdGVyYXRvciBpdCA9IHNo
YXJlZERhdGFiYXNlQmFja2VuZE1hcCgpLmZpbmQoZGF0YWJhc2VJZGVudGlmaWVyKTsKIAogICAg
IGlmIChpdCA9PSBzaGFyZWREYXRhYmFzZUJhY2tlbmRNYXAoKS5lbmQoKSkgewotICAgICAgICB3
ZWJQcm9jZXNzRGF0YWJhc2VCYWNrZW5kID0gV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6
Y3JlYXRlKGRhdGFiYXNlTmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICAgICB3ZWJQ
cm9jZXNzRGF0YWJhc2VCYWNrZW5kID0gV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6Y3Jl
YXRlKCp0aGlzLCBkYXRhYmFzZU5hbWUpOwogICAgICAgICB3ZWJQcm9jZXNzRGF0YWJhc2VCYWNr
ZW5kLT5lc3RhYmxpc2hEYXRhYmFzZVByb2Nlc3NCYWNrZW5kKCk7CiAgICAgICAgIHNoYXJlZERh
dGFiYXNlQmFja2VuZE1hcCgpLnNldChkYXRhYmFzZUlkZW50aWZpZXIsIHdlYlByb2Nlc3NEYXRh
YmFzZUJhY2tlbmQuZ2V0KCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFj
dG9yeUJhY2tlbmQuaAppbmRleCBkZDUwNDYxLi4wY2RmOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCRmFjdG9yeUJhY2tlbmQuaApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJJREJGYWN0b3J5QmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViSURCRmFjdG9yeUJhY2tlbmQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJ
REJGYWN0b3J5QmFja2VuZCk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJREJGYWN0b3J5
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVy
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViSURCRmFjdG9yeUJhY2tlbmQoZGF0YWJhc2VEaXJl
Y3RvcnlJZGVudGlmaWVyKSk7IH0KIAogICAgIHZpcnR1YWwgfldlYklEQkZhY3RvcnlCYWNrZW5k
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSBP
VkVSUklERSBGSU5BTDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IGludDY0X3QgdmVyc2lvbiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiwgV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgT1ZFUlJJREUgRklOQUw7
CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNp
b24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4pIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpIE9W
RVJSSURFIEZJTkFMOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUlEQkRhdGFiYXNlQmFja2Vu
ZChjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpIE9WRVJSSURFIEZJTkFMOwpAQCAtNDgs
NyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbWF5YmVDcmVhdGVUcmFuc2FjdGlvbkJhY2tlbmQo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiwgaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiwgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUpOwogCiBw
cml2YXRlOgotICAgIFdlYklEQkZhY3RvcnlCYWNrZW5kKCk7CisgICAgZXhwbGljaXQgV2ViSURC
RmFjdG9yeUJhY2tlbmQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeUlkZW50aWZpZXIp
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKaW5kZXggMzg1OGZkMC4uYmJhNzFmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5k
LmNwcApAQCAtMjksOCArMjksMTAgQEAKIAogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0lEQkRh
dGFiYXNlQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJREJGYWN0b3J5QmFja2VuZC5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQk1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CkBAIC00NiwxMCArNDgsMTAgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQmFja2VuZElkZW50
aWZpZXIoKQogICAgIHJldHVybiBpZGVudGlmaWVyKys7CiB9CiAKLVdlYlByb2Nlc3NJREJEYXRh
YmFzZUJhY2tlbmQ6OldlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorV2ViUHJvY2Vzc0lEQkRhdGFi
YXNlQmFja2VuZDo6V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZChXZWJJREJGYWN0b3J5QmFj
a2VuZCYgZmFjdG9yeSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIDogbV9kYXRhYmFzZU5hbWUo
bmFtZSkKLSAgICAsIG1fc2VjdXJpdHlPcmlnaW4ob3JpZ2luKQogICAgICwgbV9iYWNrZW5kSWRl
bnRpZmllcihnZW5lcmF0ZUJhY2tlbmRJZGVudGlmaWVyKCkpCisgICAgLCBtX2ZhY3RvcnkoJmZh
Y3RvcnkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFi
YXNlQmFja2VuZC5oCmluZGV4IGVmNzRhNmYuLjFhMWQyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJh
c2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuaApAQCAtMzksNDEgKzM5LDQzIEBA
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2Vi
UHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UsIHB1YmxpYyBDb3JlSVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdl
YklEQkZhY3RvcnlCYWNrZW5kOworCitjbGFzcyBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5k
IEZJTkFMIDogcHVibGljIFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSwgcHVi
bGljIENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKG5hbWUsIG9yaWdpbikpOyB9CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZD4gY3JlYXRlKFdlYklE
QkZhY3RvcnlCYWNrZW5kJiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKGZhY3RvcnksIG5hbWUpKTsg
fQogCiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklE
QktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVP
YmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpOwotICAgIHZp
cnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tz
Pik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5z
YWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVu
c2lnbmVkIHNob3J0IG1vZGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAKICAgICAv
LyBUcmFuc2FjdGlvbi1zcGVjaWZpYyBvcGVyYXRpb25zLgotICAgIHZpcnR1YWwgdm9pZCBjb21t
aXQoaW50NjRfdCB0cmFuc2FjdGlvbklkKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRf
dCB0cmFuc2FjdGlvbklkKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUVycm9yPikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
SW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRo
JiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQpOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9v
bCBtdWx0aUVudHJ5KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0KGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGdldChpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQktleVJhbmdlPiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNh
bGxiYWNrcz4pIE9WRVJSSURFOwogICAgIC8vIE5vdGUgdGhhdCAndmFsdWUnIG1heSBiZSBjb25z
dW1lZC9hZG9wdGVkIGJ5IHRoaXMgY2FsbC4KLSAgICB2aXJ0dWFsIHZvaWQgcHV0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUHV0TW9k
ZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW5kZXhLZXlzPiYpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW5k
ZXhLZXlzPiYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
aW5kZXhJZHMpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFj
a3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPik7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHB1dChpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHZhbHVlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElk
cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkluZGV4S2V5cz4mKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJwUHJpbWFyeUtleSwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkluZGV4
S2V5cz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGluZGV4SWRzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgV2ViQ29yZTo6SW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvdW50KGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4p
IE9WRVJSSURFOwogCiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+
LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbik7CiAKICAgICB2b2lkIGVz
dGFibGlzaERhdGFiYXNlUHJvY2Vzc0JhY2tlbmQoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJQcm9j
ZXNzSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qKTsKKyAgICBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kKFdlYklEQkZhY3Rv
cnlCYWNrZW5kJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIFN0cmluZyBtX2RhdGFiYXNl
TmFtZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmln
aW47CkBAIC04Myw2ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fYmFja2VuZElkZW50
aWZpZXI7IH0KIAogICAgIHVpbnQ2NF90IG1fYmFja2VuZElkZW50aWZpZXI7CisKKyAgICBSZWZQ
dHI8V2ViSURCRmFjdG9yeUJhY2tlbmQ+IG1fZmFjdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDlmMjc4NWMu
LjhjMjZkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTIxNywx
MyArMjE3LDEzIEBAIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIqIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0RGF0YWJhc2VTZXJ2ZXIoKQogI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLVBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2U+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlSURCRmFjdG9yeUJhY2tl
bmQoKQorUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVJREJGYWN0b3J5QmFja2VuZChjb25zdCBTdHJpbmcmIGRhdGFiYXNl
RGlyZWN0b3J5SWRlbnRpZmllcikKIHsKICNpZiAhRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCi0g
ICAgcmV0dXJuIERhdGFiYXNlU3RyYXRlZ3k6OmNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKCk7Cisg
ICAgcmV0dXJuIERhdGFiYXNlU3RyYXRlZ3k6OmNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKGRhdGFi
YXNlRGlyZWN0b3J5SWRlbnRpZmllcik7CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJJREJGYWN0
b3J5QmFja2VuZDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFdlYklEQkZhY3RvcnlCYWNrZW5kOjpj
cmVhdGUoZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXgg
ZGYwYjc3Yi4uMTllMTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC02
OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpBYnN0cmFjdERhdGFi
YXNlU2VydmVyKiBnZXREYXRhYmFzZVNlcnZlcigpIE9WRVJSSURFOwogI2VuZGlmCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJREJGYWN0b3J5QmFja2VuZCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZElu
dGVyZmFjZT4gY3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURp
cmVjdG9yeUlkZW50aWZpZXIpIE9WRVJSSURFOwogI2VuZGlmCiAKICAgICAvLyBXZWJDb3JlOjpM
b2FkZXJTdHJhdGVneQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>