<?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>101684</bug_id>
          
          <creation_ts>2012-11-08 18:37:24 -0800</creation_ts>
          <short_desc>REGRESSION(r133984): windows build error. (Requested by hayato on #webkit).</short_desc>
          <delta_ts>2012-11-08 21:30:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100426</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>alecflett</cc>
    
    <cc>hayato</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>762415</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 18:37:24 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/133984 broke the build:
windows build error. (Requested by hayato on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762417</commentid>
    <comment_count>1</comment_count>
      <attachid>173169</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 18:38:04 -0800</bug_when>
    <thetext>Created attachment 173169
ROLLOUT of r133984

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762421</commentid>
    <comment_count>2</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-11-08 18:41:25 -0800</bug_when>
    <thetext>Windows build on canary started to fail.

http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20Builder/builds/32442/steps/compile/logs/stdio

13&gt;ClCompile:
13&gt;  IDBAbortOnCorruptTest.cpp
13&gt;  IDBDatabaseBackendTest.cpp
13&gt;  IDBRequestTest.cpp
13&gt;C:\b\build\slave\webkit-win-latest-rel\build\src\third_party\WebKit\Source\WTF\wtf/PassRefPtr.h(53): error C2027: use of undefined type &apos;WebCore::DOMStringList&apos;
13&gt;          C:\b\build\slave\webkit-win-latest-rel\build\src\third_party\WebKit\Source\WebCore\Modules\indexeddb\IDBDatabaseBackendInterface.h(37) : see declaration of &apos;WebCore::DOMStringList&apos;
13&gt;          C:\b\build\slave\webkit-win-latest-rel\build\src\third_party\WebKit\Source\WTF\wtf/PassRefPtr.h(68) : see reference to function template instantiation &apos;void WTF::derefIfNotNull&lt;T&gt;(T *)&apos; being compiled
13&gt;          with
13&gt;          [
13&gt;              T=WebCore::DOMStringList
13&gt;          ]
13&gt;          C:\b\build\slave\webkit-win-latest-rel\build\src\third_party\WebKit\Source\WTF\wtf/PassRefPtr.h(68) : while compiling class template member function &apos;WTF::PassRefPtr&lt;T&gt;::~PassRefPtr(void)&apos;
13&gt;          with
13&gt;          [
13&gt;              T=WebCore::DOMStringList
13&gt;          ]
13&gt;          tests\IDBAbortOnCorruptTest.cpp(55) : see reference to class template instantiation &apos;WTF::PassRefPtr&lt;T&gt;&apos; being compiled
13&gt;          with
13&gt;          [
13&gt;              T=WebCore::DOMStringList
13&gt;          ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762433</commentid>
    <comment_count>3</comment_count>
      <attachid>173169</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 18:52:58 -0800</bug_when>
    <thetext>Comment on attachment 173169
ROLLOUT of r133984

Clearing flags on attachment: 173169

Committed r133994: &lt;http://trac.webkit.org/changeset/133994&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762434</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 18:53:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762533</commentid>
    <comment_count>5</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-08 21:30:54 -0800</bug_when>
    <thetext>I think I got the correct fix in bug 100426, just an #include order issue. trying another commit-queue landing from there..</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173169</attachid>
            <date>2012-11-08 18:38:04 -0800</date>
            <delta_ts>2012-11-08 18:52:58 -0800</delta_ts>
            <desc>ROLLOUT of r133984</desc>
            <filename>bug-101684-20121109024425.patch</filename>
            <type>text/plain</type>
            <size>61442</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ExMTM4NmJmMDllMmFi
MDVkMjQxMmQ2MzIxNjE4N2MzYjI5YTk2OC4uYjVlNWFiNzdlZmM1ZDM0NGI1MzQ1YjQ1YTk5NmMy
OTU1MjJiZTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTExLTA4ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTMzOTg0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMzM5ODQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMTY4NAorCisgICAgICAgIHdpbmRvd3MgYnVpbGQgZXJyb3IuIChSZXF1ZXN0
ZWQgYnkgaGF5YXRvIG9uICN3ZWJraXQpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCQ2FsbGJhY2tzLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisgICAgICAgIChJREJEYXRhYmFzZSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpnZXRPYmplY3RTdG9yZUlkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKElEQkRh
dGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6Y29udGFpbnNJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhOjpmaW5kT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoSURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZU1ldGFkYXRhOjpjb250YWluc09iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpp
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgIChJREJPYmplY3RT
dG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpw
dXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0V2l0
aEluZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW5kZXhJZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbmRleElkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOgorICAgICAg
ICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaDoKKyAgICAgICAg
KElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oOgorCiAyMDEyLTExLTA4ICBBbGVjIEZs
ZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IHN3aXRj
aCBmcm9udGVuZCB0byB1c2UgaW50NjRfdC1iYXNlZCByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDAxMGYzNWI5YjIzMzI2Y2VmYWJjYjNkOGY2Nzc1M2RhYmE5OGMyNGIu
LjU1MTUzZGU0MTcxMDJiNWViMTY4NTUwNmQ5OWRiZWNmZGUyZDU3ZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMTEtMDggIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMzM5ODQuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzEzMzk4NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxNjg0CisKKyAgICAgICAgd2luZG93cyBidWlsZCBlcnJvci4gKFJlcXVlc3RlZCBieSBoYXlh
dG8gb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6cHV0
V2l0aEluZGV4S2V5cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eTo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYktpdDo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktp
dDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OnNldEluZGV4ZXNSZWFkeSk6CisgICAgICAg
IChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjppbmRleCk6CisgICAgICAgIChX
ZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpkZWxldGVJbmRleCk6CisgICAgICAg
ICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBs
Ojp0cmFuc2FjdGlvbik6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAg
ICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpwdXRX
aXRoSW5kZXhLZXlzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
T2JqZWN0U3RvcmVJbXBsOjpzZXRJbmRleGVzUmVhZHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJPYmplY3RTdG9yZUltcGw6OmluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0
U3RvcmVJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5oOgorICAgICAgICAoV2ViSURCT2JqZWN0U3RvcmVJbXBsKToKKyAgICAgICAgKiBzcmMv
V2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNh
Y3Rpb25JbXBsOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNy
Yy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaDoKKwogMjAxMi0xMS0wOCAgQWxlYyBGbGV0dCAgPGFs
ZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBzd2l0Y2ggZnJvbnRl
bmQgdG8gdXNlIGludDY0X3QtYmFzZWQgcmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaAppbmRleCBiM2VjNGIyNzBmM2E1NjhlM2Rm
OTk3NWJiMjkxODEyNTc5NWVkNzJlLi5kZmQ4ZTIwOTIwNGVjMGU0YmI5YWMyOTk5NzFjZjIyY2M0
ZjFmMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
YWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxs
YmFja3MuaApAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBJREJDYWxsYmFja3NfaAogI2RlZmlu
ZSBJREJDYWxsYmFja3NfaAogCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
IklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJy
b3IuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBiMjc1OTc1NGI3ZWZmMTBjM2M3NTY1MDIy
YjdkMjJiM2Y5MmVjY2Y4Li5mY2NiNDU2YzVkNjhhMjE0NjdmNThmMDljZGM2MjdmYzMwZmQ5Nzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0
YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY28KICAgICAgICAg
ICAgIGtleVBhdGggPSBJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcpOwogICAgIH0KIAotICAgIGlm
IChjb250YWluc09iamVjdFN0b3JlKG5hbWUpKSB7CisgICAgaWYgKG1fbWV0YWRhdGEuY29udGFp
bnNPYmplY3RTdG9yZShuYW1lKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpDT05TVFJBSU5UX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTg4LDEzICsx
ODgsMTMgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGludDY0IG9iamVjdFN0b3JlSWQgPSBmaW5kT2JqZWN0U3RvcmVJZChuYW1lKTsKKyAgICBpbnQ2
NCBvYmplY3RTdG9yZUlkID0gbV9tZXRhZGF0YS5maW5kT2JqZWN0U3RvcmUobmFtZSk7CiAgICAg
aWYgKG9iamVjdFN0b3JlSWQgPT0gSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW52YWxpZElkKSB7
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9y
ZShvYmplY3RTdG9yZUlkLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBl
Yyk7CisgICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCBtX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKCFlYykgewogICAgICAgICBt
X3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVEZWxldGVkKG5hbWUpOwogICAg
ICAgICBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5yZW1vdmUob2JqZWN0U3RvcmVJZCk7CkBAIC0y
NDMsMjEgKzI0MywxOCBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6
dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZHM7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdG9yZU5hbWVzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAg
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IGZpbmRPYmplY3RTdG9yZUlkKHN0b3JlTmFtZXMtPml0
ZW0oaSkpOwotICAgICAgICBpZiAob2JqZWN0U3RvcmVJZCA9PSBJREJPYmplY3RTdG9yZU1ldGFk
YXRhOjpJbnZhbGlkSWQpIHsKKyAgICAgICAgaWYgKCFtX21ldGFkYXRhLmNvbnRhaW5zT2JqZWN0
U3RvcmUoc3RvcmVOYW1lcy0+aXRlbShpKSkpIHsKICAgICAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJSOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIH0KLSAgICAgICAgb2JqZWN0U3RvcmVJZHMuYXBwZW5kKG9iamVjdFN0b3JlSWQpOwog
ICAgIH0KIAogICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IHRyYW5zYWN0aW9uIHN5bmNo
cm9ub3VzbHkuIExvY2tzIGFyZSBhY3F1aXJlZCBhc3luY2hyb25vdXNseS4gT3BlcmF0aW9ucwog
ICAgIC8vIGNhbiBiZSBxdWV1ZWQgYWdhaW5zdCB0aGUgdHJhbnNhY3Rpb24gYXQgYW55IHBvaW50
LiBUaGV5IHdpbGwgc3RhcnQgZXhlY3V0aW5nIGFzIHNvb24gYXMgdGhlCiAgICAgLy8gYXBwcm9w
cmlhdGUgbG9ja3MgaGF2ZSBiZWVuIGFjcXVpcmVkLgogICAgIC8vIEFsc28gbm90ZSB0aGF0IGVh
Y2ggYmFja2VuZCBvYmplY3QgY29ycmVzcG9uZHMgdG8gZXhhY3RseSBvbmUgSURCVHJhbnNhY3Rp
b24gb2JqZWN0LgotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRy
YW5zYWN0aW9uQmFja2VuZCA9IG1fYmFja2VuZC0+dHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVJZHMs
IG1vZGUpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uQmFja2VuZCA9IG1fYmFja2VuZC0+dHJhbnNhY3Rpb24oc3RvcmVOYW1lcy5nZXQoKSwg
bW9kZSwgZWMpOwogICAgIGlmICghdHJhbnNhY3Rpb25CYWNrZW5kKSB7CiAgICAgICAgIEFTU0VS
VChlYyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMzU3LDE3ICszNTQsNiBAQCBib29sIElEQkRh
dGFiYXNlOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIHJldHVy
biBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudC5nZXQoKSk7CiB9CiAKLWludDY0X3Qg
SURCRGF0YWJhc2U6OmZpbmRPYmplY3RTdG9yZUlkKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QK
LXsKLSAgICBmb3IgKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9iamVjdFN0b3JlTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1fbWV0
YWRhdGEub2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUu
bmFtZSA9PSBuYW1lKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXQtPmtleSAhPSBJREJPYmplY3RT
dG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQpOwotICAgICAgICAgICAgcmV0dXJuIGl0LT5rZXk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkludmFs
aWRJZDsKLX0KLQogdm9pZCBJREJEYXRhYmFzZTo6c3RvcCgpCiB7CiAgICAgQWN0aXZlRE9NT2Jq
ZWN0OjpzdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuaAppbmRleCAyYzFiZGJmMjA2ZDkwNmJkZWJjNDRhZWM2NGMyNjZmMzY2YmRiMTUzLi41
ODE2MTY3M2M1YjAzNDk2ZjYwNDA3NDdmMmUyYTVhNGU4ZWM5ZGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTkxLDEyICs5MSw2IEBA
IHB1YmxpYzoKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChl
dmVudCwgZWMpOyB9CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4pOwogCi0gICAgaW50NjRfdCBmaW5kT2JqZWN0U3RvcmVJZChjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0OwotICAgIGJvb2wgY29udGFpbnNPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZmluZE9iamVjdFN0b3JlSWQobmFtZSkg
IT0gSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW52YWxpZElkOwotICAgIH0KLQogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJE
YXRhYmFzZT46OmRlcmVmOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IGEwZWMxYjZmZjBh
YmJlYWY4ZjY3MmQ2NjRlZTY0N2Y5MjI5YzAwNGUuLjVjN2JiZDhmNjU0YTAyMmNhMTAzMjQzN2Fm
NTUzNjJkZDAwZTMxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yMTIsNiArMjEyLDE2
IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b2JqZWN0U3RvcmUoaW50NjRfCiAgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmVzLmdl
dChpZCk7CiB9CiAKK2ludDY0X3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Z2V0T2JqZWN0U3Rv
cmVJZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChPYmplY3RTdG9yZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0
b3Jlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFt
ZSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQo
bV9vYmplY3RTdG9yZXMuY29udGFpbnMoaWQpKTsKQEAgLTI2NCw4ICsyNzQsOCBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQ
YXNzUmVmUHRyPElEQkNhbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPGlu
dDY0X3Q+IG9iamVjdFN0b3JlSWRzOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHRyYW5zYWN0aW9uSW50ZXJmYWNlID0gdGhpcy0+dHJhbnNhY3Rpb24ob2JqZWN0
U3RvcmVJZHMsIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CisgICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbklu
dGVyZmFjZSA9IHRoaXMtPnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZXMuZ2V0KCksIElEQlRy
YW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgZWMpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZy
b20odHJhbnNhY3Rpb25JbnRlcmZhY2UuZ2V0KCkpOwogICAgIEFTU0VSVCghZWMpOwogCkBAIC00
MjQsMTMgKzQzNCwxOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5k
aW5nQ2FsbHMoKQogICAgIEFTU0VSVChtX3BlbmRpbmdPcGVuQ2FsbHMuaXNFbXB0eSgpKTsKIH0K
IAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3Rv
cmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb24oRE9NU3Ry
aW5nTGlzdCosIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKQogewotICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RTdG9yZUlkcywgbW9kZSwgdGhpcyk7CisgICAg
Ly8gRklYTUU6IEZpcnN0IHBhcmFtZXRlciBpc24ndCB1c2VkIGZvciBhbnl0aGluZyB5ZXQgYW55
d2F5LCBhbmQgdGhpcyBtZXRob2QgaXMgZ29pbmcgYXdheS4KKyAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjpjcmVhdGUoVmVjdG9yPGludDY0X3Q+KCksIG1vZGUsIHRoaXMpOwogICAgIG1fdHJhbnNhY3Rp
b25zLmFkZCh0cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVh
c2UoKTsKIH0KIAorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
b2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpCit7CisgICAgcmV0dXJuIHRyYW5z
YWN0aW9uKG9iamVjdFN0b3JlSWRzLCBtb2RlKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKIHsK
ICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUuZ2V0KCkpOwpAQCAtNDc4LDE1ICs0OTQsMTkgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24oaW50NjRfdCByZXF1ZXN0ZWRWZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZl
Y3RvcjxpbnQ2NF90PiBvYmplY3RTdG9yZUlkczsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkludGVyZmFjZSA9IHRyYW5zYWN0aW9uKG9iamVj
dFN0b3JlSWRzLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIFJlZlB0cjxE
T01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb25JbnRlcmZhY2UgPSB0cmFuc2FjdGlvbihvYmplY3RT
dG9yZU5hbWVzLmdldCgpLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGVjKTsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uSW50ZXJmYWNlLmdldCgpKTsKKyAg
ICBBU1NFUlQoIWVjKTsKIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRh
YmFzZSA9IHRoaXM7CiAgICAgT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGlu
dFZlcnNpb25UYXNrID0gY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNlLCByZXF1ZXN0ZWRWZXJzaW9uLCBjYWxs
YmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbik7CiAgICAgT3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHJlc2V0VmVyc2lvbk9uQWJvcnRUYXNrID0gY3JlYXRl
Q2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZXNldFZlcnNpb24sIGRhdGFi
YXNlLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbik7CiAgICAgaWYg
KCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGludFZlcnNpb25UYXNrLnJlbGVhc2UoKSwgcmVz
ZXRWZXJzaW9uT25BYm9ydFRhc2sucmVsZWFzZSgpKSkgeworICAgICAgICAvLyBGSVhNRTogUmVt
b3ZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSOwogICAgIH0KICAgICBBU1NFUlQoIW1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0
aFZlcnNpb24pOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2FsbGJh
Y2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCBmMGY0OTM4ZDE3YmVhZDhjZDFkNDI1NGEwNzk4
YjZkNmRlMzZiMTRmLi44MTRmMWRlMjFkZmJhODk1Y2Q4NWVmZWRlZTQ3NjI5MTE3YjQ4Mjk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02MiwxMiArNjIsMTUgQEAgcHVibGljOgogICAgIC8vIElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZQogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0
YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBkZWxldGVPYmplY3RTdG9yZShnZXRPYmplY3RTdG9yZUlkKG5hbWUpLCB0cmFuc2FjdGlv
blB0ciwgZWMpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3Qs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiB0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZU5hbWVzLCB1bnNp
Z25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oY29uc3QgVmVjdG9y
PGludDY0X3Q+JiwgdW5zaWduZWQgc2hvcnQpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKICAgICBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlKGludDY0X3QgaWQpOworICAgIGludDY0X3Qg
Z2V0T2JqZWN0U3RvcmVJZChjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KICAgICB2b2lkIHRyYW5zYWN0aW9uU3RhcnRl
ZChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKICAgICB2b2lkIHRyYW5z
YWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGM2OWJmM2I0N2RhMmFlYzk4ZWJjOGI2OWY2
YjcwMjgyNTRkMjFjYmUuLjBjNTNjZDdjZjE1ODkxYzA1MTdmZDkzMjQzOWNlMWI3YTE5MTk3YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC01NSw4ICs1NSwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
KGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3QqIHN0b3Jl
TmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b24oY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQg
bW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJNZXRhZGF0YS5oCmluZGV4IGMzYjMzMzQ2MzAxY2M3MWU2ZTBiMGI1ZWNhYzBhOGM2NTE1
MDQ4NGUuLjFiMDM4NGJkOTU2OTFlNGNmYTc3MWM0MTkyODU3MmM5YzJiMTYwNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaApAQCAtNzYsNiAr
NzYsMTQgQEAgc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgewogICAgIHR5cGVkZWYgSGFz
aE1hcDxpbnQ2NF90LCBJREJJbmRleE1ldGFkYXRhPiBJbmRleE1hcDsKICAgICBJbmRleE1hcCBp
bmRleGVzOwogCisgICAgYm9vbCBjb250YWluc0luZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW5k
ZXhlcy5iZWdpbigpOyBpdCAhPSBpbmRleGVzLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBp
ZiAoaXQtPnZhbHVlLm5hbWUgPT0gbmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfTsKIAogc3RydWN0IElE
QkRhdGFiYXNlTWV0YWRhdGEgewpAQCAtMTAwLDYgKzEwOCwyMiBAQCBzdHJ1Y3QgSURCRGF0YWJh
c2VNZXRhZGF0YSB7CiAgICAgewogICAgIH0KIAorICAgIGludDY0X3QgZmluZE9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAoT2JqZWN0U3Rv
cmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG9i
amVjdFN0b3Jlcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT52YWx1ZS5uYW1l
ID09IG5hbWUpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXQtPmtleSAhPSBJREJPYmplY3RT
dG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQpOworICAgICAgICAgICAgICAgIHJldHVybiBpdC0+a2V5
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhOjpJbnZhbGlkSWQ7CisgICAgfQorCisgICAgYm9vbCBjb250YWluc09iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBmaW5k
T2JqZWN0U3RvcmUobmFtZSkgIT0gSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW52YWxpZElkOwor
ICAgIH0KKwogICAgIFN0cmluZyBuYW1lOwogICAgIGludDY0X3QgaWQ7CiAgICAgU3RyaW5nIHZl
cnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggZjE1NzlkOWIzNzk3YjM1NDZhZWEyNzM0OWNkNGIwZWNiYTczOTI2
Mi4uZDlkMmVjMjgwNDk1OTRlMjcwODhkMWZmY2ZkMjMyMTY5NzY1MTY1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAt
MjA0LDE3ICsyMDQsMTggQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
cHV0KElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW8KICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCi0gICAgVmVjdG9yPGludDY0X3Q+IGluZGV4SWRzOworICAgIFZlY3RvcjxT
dHJpbmc+IGluZGV4TmFtZXM7CiAgICAgVmVjdG9yPEluZGV4S2V5cz4gaW5kZXhLZXlzOwogICAg
IGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9tZXRhZGF0YS5pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1fbWV0YWRhdGEuaW5kZXhlcy5l
bmQoKTsgKytpdCkgewogICAgICAgICBJbmRleEtleXMga2V5czsKICAgICAgICAgZ2VuZXJhdGVJ
bmRleEtleXNGb3JWYWx1ZShpdC0+dmFsdWUsIHZhbHVlLCAma2V5cyk7Ci0gICAgICAgIGluZGV4
SWRzLmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgaW5kZXhOYW1lcy5hcHBlbmQoaXQtPnZhbHVl
Lm5hbWUpOwogICAgICAgICBpbmRleEtleXMuYXBwZW5kKGtleXMpOwogICAgIH0KKyAgICBBU1NF
UlQoaW5kZXhLZXlzLnNpemUoKSA9PSBpbmRleE5hbWVzLnNpemUoKSk7CiAKICAgICBSZWZQdHI8
SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzb3VyY2Us
IG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fYmFja2VuZC0+cHV0KHNlcmlhbGl6ZWRWYWx1
ZS5yZWxlYXNlKCksIGtleS5yZWxlYXNlKCksIHB1dE1vZGUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgaW5kZXhJZHMsIGluZGV4S2V5cyk7CisgICAgbV9iYWNrZW5kLT5wdXRX
aXRoSW5kZXhLZXlzKHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlKCksIGtleS5yZWxlYXNlKCksIHB1
dE1vZGUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgaW5kZXhOYW1lcywgaW5k
ZXhLZXlzLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFz
ZSgpOwogfQpAQCAtMzE4LDggKzMxOSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChjdXJzb3JB
bnktPnR5cGUoKSA9PSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGUpCiAgICAgICAgICAg
ICBjdXJzb3IgPSBjdXJzb3JBbnktPmlkYkN1cnNvcldpdGhWYWx1ZSgpOwogCi0gICAgICAgIFZl
Y3RvcjxpbnQ2NF90LCAxPiBpbmRleElkczsKLSAgICAgICAgaW5kZXhJZHMuYXBwZW5kKG1faW5k
ZXhNZXRhZGF0YS5pZCk7CisgICAgICAgIFZlY3RvcjxTdHJpbmcsIDE+IGluZGV4TmFtZXM7Cisg
ICAgICAgIGluZGV4TmFtZXMuYXBwZW5kKG1faW5kZXhNZXRhZGF0YS5uYW1lKTsKICAgICAgICAg
aWYgKGN1cnNvcikgewogICAgICAgICAgICAgY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKGVjKTsK
ICAgICAgICAgICAgIEFTU0VSVCghZWMpOwpAQCAtMzMzLDEyICszMzQsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIFZlY3RvcjxJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzLCAxPiBpbmRleEtl
eXNMaXN0OwogICAgICAgICAgICAgaW5kZXhLZXlzTGlzdC5hcHBlbmQoaW5kZXhLZXlzKTsKIAot
ICAgICAgICAgICAgbV9vYmplY3RTdG9yZUJhY2tlbmQtPnNldEluZGV4S2V5cyhwcmltYXJ5S2V5
LCBpbmRleElkcywgaW5kZXhLZXlzTGlzdCwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgICAg
ICAgICBtX29iamVjdFN0b3JlQmFja2VuZC0+c2V0SW5kZXhLZXlzKHByaW1hcnlLZXksIGluZGV4
TmFtZXMsIGluZGV4S2V5c0xpc3QsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogCiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBhcmUgZG9uZSBpbmRleGluZywgdGVs
bCB0aGUgYmFja2VuZCB0byBnbwogICAgICAgICAgICAgLy8gYmFjayB0byBwcm9jZXNzaW5nIHRh
c2tzIG9mIHR5cGUgTm9ybWFsVGFzay4KLSAgICAgICAgICAgIG1fb2JqZWN0U3RvcmVCYWNrZW5k
LT5zZXRJbmRleGVzUmVhZHkoaW5kZXhJZHMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgICAg
ICAgICAgbV9vYmplY3RTdG9yZUJhY2tlbmQtPnNldEluZGV4ZXNSZWFkeShpbmRleE5hbWVzLCBt
X3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICAgICAgICAgIG1fb2JqZWN0U3RvcmVCYWNrZW5kLmNs
ZWFyKCk7CiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLmNsZWFyKCk7CiAgICAgICAgIH0KQEAg
LTM4MSw3ICszODIsNyBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgICAgICBlYyA9IE5B
VElWRV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChjb250YWlu
c0luZGV4KG5hbWUpKSB7CisgICAgaWYgKG1fbWV0YWRhdGEuY29udGFpbnNJbmRleChuYW1lKSkg
ewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDQzLDEzICs0NDQsMTIgQEAgUGFzc1JlZlB0cjxJ
REJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMKICAgICBpZiAoaXQgIT0gbV9pbmRleE1hcC5lbmQoKSkKICAgICAgICAgcmV0
dXJuIGl0LT52YWx1ZTsKIAotICAgIGludDY0X3QgaW5kZXhJZCA9IGZpbmRJbmRleElkKG5hbWUp
OwotICAgIGlmIChpbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgeworICAg
IGlmICghbV9tZXRhZGF0YS5jb250YWluc0luZGV4KG5hbWUpKSB7CiAgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJSOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleEJhY2tl
bmQgPSBtX2JhY2tlbmQtPmluZGV4KGluZGV4SWQpOworICAgIFJlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+aW5kZXgobmFtZSwgZWMpOwog
ICAgIEFTU0VSVCghZWMgJiYgaW5kZXhCYWNrZW5kKTsKIAogICAgIGNvbnN0IElEQkluZGV4TWV0
YWRhdGEqIGluZGV4TWV0YWRhdGEoMCk7CkBAIC00NzYsMTQgKzQ3NiwxNCBAQCB2b2lkIElEQk9i
amVjdFN0b3JlOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFD
VElWRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaW50NjRfdCBpbmRleElkID0g
ZmluZEluZGV4SWQobmFtZSk7Ci0gICAgaWYgKGluZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6
SW52YWxpZElkKSB7CisgICAgaWYgKCFtX21ldGFkYXRhLmNvbnRhaW5zSW5kZXgobmFtZSkpIHsK
ICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX05PVF9GT1VORF9FUlI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2JhY2tlbmQtPmRlbGV0ZUluZGV4KGluZGV4
SWQsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIG1fYmFja2VuZC0+ZGVsZXRl
SW5kZXgobmFtZSwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKCFlYykg
eworICAgICAgICBBU1NFUlQobV9tZXRhZGF0YS5jb250YWluc0luZGV4KG5hbWUpKTsKICAgICAg
ICAgSURCSW5kZXhNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbmRleE1hcC5maW5kKG5hbWUpOwogICAg
ICAgICBpZiAoaXQgIT0gbV9pbmRleE1hcC5lbmQoKSkgewogICAgICAgICAgICAgbV9tZXRhZGF0
YS5pbmRleGVzLnJlbW92ZShpdC0+dmFsdWUtPmlkKCkpOwpAQCAtNTU4LDE2ICs1NTgsNiBAQCB2
b2lkIElEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbkZpbmlzaGVkKCkKICAgICBtX2luZGV4TWFw
LmNsZWFyKCk7CiB9CiAKLWludDY0X3QgSURCT2JqZWN0U3RvcmU6OmZpbmRJbmRleElkKGNvbnN0
IFN0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6
OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWV0YWRhdGEuaW5kZXhlcy5iZWdpbigp
OyBpdCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0
LT52YWx1ZS5uYW1lID09IG5hbWUpIHsKLSAgICAgICAgICAgIEFTU0VSVChpdC0+a2V5ICE9IElE
QkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCk7Ci0gICAgICAgICAgICByZXR1cm4gaXQtPmtleTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElk
OwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IDljYjJhZDYzM2QzYmIzODdj
ZGMwNTViY2Y0ZDgwYTgxZGM3NjA0YTkuLjlmMDI3ZWEwYzY0NjI4ZjZkZGUwNzAxMjJkYTFhOGZh
ZTZmZWIyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaApAQCAtNjYsOSArNjYsOSBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IGFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBTY3JpcHRW
YWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGQoY29udGV4dCwgdmFs
dWUsIDAsIGVjKTsgIH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBwdXQoY29udGV4dCwgdmFsdWUsIDAsIGVjKTsgIH0KLSAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGlj
X2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1
cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsg
fQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBl
YykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNvcjo6ZGlyZWN0aW9u
TmV4dCgpLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9
IAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1
cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0gCisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRl
eHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfSAKICAgICBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCByYW5nZSwg
ZGlyZWN0aW9uLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIGVj
KTsgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0
aW9uLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
LCBFeGNlcHRpb25Db2RlJik7CkBAIC0xMDUsMTIgKzEwNSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgSURCT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiwgSURCVHJhbnNhY3Rpb24qKTsK
IAotICAgIGludDY0X3QgZmluZEluZGV4SWQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAg
ICBib29sIGNvbnRhaW5zSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZpbmRJbmRleElkKG5hbWUpICE9IElEQkluZGV4TWV0YWRhdGE6OkludmFs
aWRJZDsKLSAgICB9Ci0KICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1fbWV0YWRhdGE7CiAg
ICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHAKaW5kZXggYjU0ZjAwOGM2OWU5N2VhZWI5MmMyYzU4MjM3ZmM2NTM0MmZhODk2Mi4u
NDY0MGMxM2RkMmUzYzc3YjJkZTgwY2MwZGI3YWRiZjU5MDNlMDNmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PAogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1
dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykK
IHsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCIpOworICAg
IElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0V2l0aEluZGV4S2V5cyIp
OwogCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0g
dGhpczsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVl
OwpAQCAtMTI2LDYgKzEyNiwxMCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1
dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsCiAgICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OklEQl9BQk9SVF9FUlIpKTsKIH0KIAordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpwdXRXaXRoSW5kZXhLZXlzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBw
cnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW5kZXhOYW1l
cywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cywgRXhjZXB0aW9uQ29kZSYpCit7
CisgICAgcmV0dXJuIHB1dChwcnBWYWx1ZSwgcHJwS2V5LCBwdXRNb2RlLCBwcnBDYWxsYmFja3Ms
IHRyYW5zYWN0aW9uUHRyLCBnZXRJbmRleElkcyhpbmRleE5hbWVzKSwgaW5kZXhLZXlzKTsKK30K
IG5hbWVzcGFjZSB7CiBjbGFzcyBJbmRleFdyaXRlciB7CiBwdWJsaWM6CkBAIC0yNTUsNiArMjU5
LDEyIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKFBhc3NS
ZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjCiAgICAgfQogfQogCit2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJp
bWFyeUtleSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGluZGV4TmFtZXMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXM+JiBpbmRleEtleXMsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb25QdHIpCit7CisgICAgVmVjdG9yPGludDY0X3Q+IGluZGV4SWRzID0gZ2V0SW5kZXhJ
ZHMoaW5kZXhOYW1lcyk7CisgICAgcmV0dXJuIHNldEluZGV4S2V5cyhwcnBQcmltYXJ5S2V5LCBp
bmRleElkcywgaW5kZXhLZXlzLCB0cmFuc2FjdGlvblB0cik7Cit9CisKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5KGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
aW5kZXhJZHMsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25JbnRl
cmZhY2UpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJ
bmRleGVzUmVhZHkiKTsKQEAgLTI2OSw2ICsyNzksMjIgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElk
cywKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbmRl
eE5hbWVzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uSW50ZXJm
YWNlKQoreworICAgIFZlY3RvcjxpbnQ2NF90PiBpbmRleElkcyhpbmRleE5hbWVzLnNpemUoKSk7
CisgICAgLy8gRklYTUU6IFdlIG1hbnVhbGx5IGNvbnZlcnQgZWFjaCBuYW1lIHRvIGFuIGluZGV4
SWQsIGV2ZW4gaWYgdGhlIG5hbWUgaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLCBiZWNhdXNlIHdl
IGhhdmUgdG8gcmVtb3ZlIGV4YWN0bHkgdGhhdCBtYW55IHByZWVtcHRpdmUgZXZlbnRzLCBidXQg
dGhpcyB3aWxsIGdvIGF3YXkgd2hlbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAwNDI2IGxhbmRzLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhOYW1l
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpbmRleElkc1tpXSA9IEludmFsaWRJZDsKKyAgICAg
ICAgZm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsg
aXQgIT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoaXQtPnZhbHVl
LT5uYW1lKCkgPT0gaW5kZXhOYW1lc1tpXSkgeworICAgICAgICAgICAgICAgIGluZGV4SWRzW2ld
ID0gaXQtPmtleTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gc2V0SW5kZXhlc1JlYWR5KGluZGV4SWRzLCB0cmFuc2Fj
dGlvbkludGVyZmFjZSk7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0
SW5kZXhlc1JlYWR5SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NPd25QdHI8VmVjdG9y
PGludDY0X3Q+ID4gcG9wSW5kZXhJZHMsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpzZXRJbmRleGVzUmVhZHlJbnRlcm5hbCIpOwpAQCAtNDQ0LDYgKzQ3MCwyOSBAQCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6aW5kZXgoaW50NjRfdCBpbgogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CiAK
K1Bhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQoreworICAg
IHJldHVybiBpbmRleChnZXRJbmRleElkKG5hbWUpKTsKK30KKworaW50NjRfdCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpnZXRJbmRleElkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBm
b3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAh
PSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgp
ID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gaXQtPmtleTsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1ZlY3RvcjxpbnQ2NF90PiBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbmRleElkcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
bmFtZXMpCit7CisgICAgVmVjdG9yPGludDY0X3Q+IHJlc3VsdDsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG5hbWVzLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKGdldElu
ZGV4SWQobmFtZXNbaV0pKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGludDY0X3QgaW5kZXhJZCwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgQVNTRVJUKG1faW5kZXhlcy5jb250YWlucyhpbmRleElkKSk7CkBAIC00NjIsNiAr
NTExLDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXgoaW50
NjRfdCBpbmRleElkLCBJREJUcmFuc2FjdGlvbkJhY2tlCiAgICAgbV9pbmRleGVzLnJlbW92ZShp
bmRleElkKTsKIH0KIAordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHJldHVybiBkZWxldGVJbmRl
eChnZXRJbmRleElkKG5hbWUpLCB0cmFuc2FjdGlvblB0ciwgZWMpOworfQorCiB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3Rv
cmUsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgb2JqZWN0U3RvcmUt
PmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCks
IGluZGV4LT5pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCBjZmRlM2JlN2IzNDUx
YmIyYjYzMjZlZGFiNjA3ZWQyODBiNDM0MjA0Li5jMmVmZDNiMGUzYTIxYjYxMjRlMDQ5Y2IwMTIw
ZDdiZjI0ZjY4Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC02NCwxNSArNjQsMjAg
QEAgcHVibGljOgogCiAgICAgLy8gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlCiAgICAg
dmlydHVhbCB2b2lkIGdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdmlydHVhbCB2b2lkIHB1dFdpdGhJbmRleEtleXMoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIGNv
bnN0IFZlY3RvcjxJbmRleEtleXM+Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3QsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5
S2V5LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4
S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0
X3Q+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCB2
b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChp
bnQ2NF90KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29y
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJREJDdXJzb3I6OkRpcmVjdGlvbiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CkBAIC05
MSw2ICs5Niw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFj
a2luZ1N0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZS0+YmFja2luZ1N0b3JlKCk7IH0K
ICAgICBpbnQ2NF90IGRhdGFiYXNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlLT5pZCgp
OyB9CiAKKyAgICBpbnQ2NF90IGdldEluZGV4SWQoY29uc3QgU3RyaW5nJik7CisgICAgVmVjdG9y
PGludDY0X3Q+IGdldEluZGV4SWRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisKIHByaXZhdGU6
CiAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKiwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oCmluZGV4IDI3NTA1Y2VmMjRkMDhkMTllYzdiNDI2YmI4YzkxNmM1ZjFi
NDhlZWMuLjlhYmU4ODNjYmE4ZWVjZDE0MmMwY2M5YzY4MGU4NjhkNGFhZWIyNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCkBAIC02MiwxNSArNjIsMjAgQEAgcHVibGljOgog
CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBJbmRleEtleXM7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcHV0V2l0aEluZGV4S2V5cyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIGNvbnN0IFZl
Y3RvcjxJbmRleEtleXM+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4g
cHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8SW5kZXhL
ZXlzPiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25z
dCBWZWN0b3I8aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1Jl
YWR5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChpbnQ2NF90KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVJbmRleChpbnQ2NF90LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNTMxZjJmMDkxNThhMjc1Njk2NWU1MTNhMzZiNmEx
MmNkYjY2ZmNmOC4uNWQ4YWM1ZmNhNWYxZTU5Nzk0OWE4NmViZDA2MjRmZjJhMDNlMjlhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURC
VHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX05PVF9GT1VORF9FUlI7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KLQotICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IG1fZGF0YWJh
c2UtPmZpbmRPYmplY3RTdG9yZUlkKG5hbWUpOwotICAgIEFTU0VSVChvYmplY3RTdG9yZUlkICE9
IElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkludmFsaWRJZCk7Ci0gICAgUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmVCYWNrZW5kID0gbV9iYWNrZW5kLT5v
YmplY3RTdG9yZShvYmplY3RTdG9yZUlkLCBlYyk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmVCYWNrZW5kID0gbV9iYWNrZW5kLT5vYmplY3RT
dG9yZShuYW1lLCBlYyk7CiAgICAgQVNTRVJUKCFlYyAmJiBvYmplY3RTdG9yZUJhY2tlbmQpOwog
CiAgICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEgPSBtX2RhdGFiYXNlLT5t
ZXRhZGF0YSgpOworICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IG1ldGFkYXRhLmZpbmRPYmpl
Y3RTdG9yZShuYW1lKTsKKworICAgIEFTU0VSVChvYmplY3RTdG9yZUlkICE9IElEQk9iamVjdFN0
b3JlTWV0YWRhdGE6OkludmFsaWRJZCk7CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9i
amVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShtZXRhZGF0YS5vYmplY3RTdG9yZXMu
Z2V0KG9iamVjdFN0b3JlSWQpLCBvYmplY3RTdG9yZUJhY2tlbmQsIHRoaXMpOwogICAgIG9iamVj
dFN0b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
Y3BwCmluZGV4IGUzNzI2MmE0ZjI0OWI0MGMxM2FjMmIyMGMzNDQ3NGE1MjgzMzJiYWEuLmUxNjUy
ZDY5NWRmODUzNDFiMzYwODZkODY3OWIxMzc0NDAyZmY4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwuY3BwCkBAIC03Niw2ICs3NiwxMSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6b2JqZWN0U3RvcgogICAg
IHJldHVybiBvYmplY3RTdG9yZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpvYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHJldHVy
biBvYmplY3RTdG9yZShtX2RhdGFiYXNlLT5nZXRPYmplY3RTdG9yZUlkKG5hbWUpLCBlYyk7Cit9
CisKIGJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKFRhc2tUeXBl
IHR5cGUsIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2spCiB7CiAgICAg
aWYgKG1fc3RhdGUgPT0gRmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggZTYy
NGVkNDBjNThmOWY5NjBhY2I2NDkyNGExZTQzZDdkMWNhM2QwZS4uNGU0ZGRlY2MxMTIzNjk2Y2E0
NjU3NTNkYjVmMTI5MmJjM2NlMzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtNTIs
NiArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bCgpOwogCiAgICAgLy8gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoaW50NjRfdCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVRhc2tFdmVudHMo
KTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlLmgKaW5kZXggMmY0Y2YzMjdhMGI4MTY5ZmFhNTM3ZjRmNWUzNWQ1OTNiNTExYmNhOS4uZDEx
ZTE4MTFjZTQzNWJmNjdmMDgzM2QzZTU1ODA2Yjg4N2NlNGUzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBQcmVl
bXB0aXZlVGFzawogICAgIH07CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoaW50NjRfdCwgRXhjZXB0aW9uQ29kZSYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjb21taXQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggOGU4OWRlYjAzM2Yz
ZGVjOTg4YWE2N2FjM2NkZTRhNWQ5Njk1ZmJmZC4uNmEwZDAyNzcyYjg0NGM3ZWY2YWMyMGZiY2Vj
M2NjMzFkMWYzNjE0MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcApAQCAtNjcsNiArNjcsMTYgQEAgdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBQYXNzUmVmUHQKICAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5nZXQoa2V5UmFu
Z2UsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5
LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKK3ZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHk6OnB1dFdpdGhJbmRleEtleXMoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbmRleE5hbWVzLCBj
b25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9p
bnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAorICAgIC8vIGFsbCBp
bXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCisgICAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2Fz
dDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKKyAgICBXZWJWZWN0
b3I8V2ViU3RyaW5nPiB3ZWJJbmRleE5hbWVzKGluZGV4TmFtZXMpOworICAgIFdlYlZlY3RvcjxJ
bmRleEtleXM+IHdlYkluZGV4S2V5cyhpbmRleEtleXMpOworICAgIG1fd2ViSURCT2JqZWN0U3Rv
cmUtPnB1dFdpdGhJbmRleEtleXModmFsdWUsIGtleSwgc3RhdGljX2Nhc3Q8V2ViSURCT2JqZWN0
U3RvcmU6OlB1dE1vZGU+KHB1dE1vZGUpLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFj
a3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgd2ViSW5kZXhO
YW1lcywgd2ViSW5kZXhLZXlzLCBlYyk7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHk6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
biwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5
cz4mIGluZGV4S2V5cykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFy
YW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRl
cmVyLApAQCAtNzUsNiArODUsMTYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6
cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGEKICAgICBtX3dl
YklEQk9iamVjdFN0b3JlLT5wdXQodmFsdWUsIGtleSwgc3RhdGljX2Nhc3Q8V2ViSURCT2JqZWN0
U3RvcmU6OlB1dE1vZGU+KHB1dE1vZGUpLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFj
a3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgaW5kZXhJZHMs
IGluZGV4S2V5cyk7CiB9CiAKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OnNldElu
ZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGluZGV4TmFtZXMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCit7CisgICAgLy8gVGhl
IHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBw
cm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRp
b25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgV2ViVmVjdG9yPFdlYlN0cmlu
Zz4gd2ViSW5kZXhOYW1lcyhpbmRleE5hbWVzKTsKKyAgICBXZWJWZWN0b3I8SW5kZXhLZXlzPiB3
ZWJJbmRleEtleXMoaW5kZXhLZXlzKTsKKyAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5zZXRJbmRl
eEtleXMocHJwUHJpbWFyeUtleSwgd2ViSW5kZXhOYW1lcywgd2ViSW5kZXhLZXlzLCAqdHJhbnNh
Y3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSk7Cit9CisKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHk6OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJp
bWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElu
ZGV4S2V5cz4mIGluZGV4S2V5cywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvbikKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVk
IHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLApA
QCAtMTEwLDYgKzEzMCwyNSBAQCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGludAogICAgIHJldHVybiBJ
REJJbmRleEJhY2tlbmRQcm94eTo6Y3JlYXRlKGluZGV4LnJlbGVhc2UoKSk7CiB9CiAKK1Bhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94
eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBUaGUg
dHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHBy
b3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAorICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlv
bnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCisgICAgSURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKKyAgICBPd25QdHI8V2ViSURCSW5kZXg+
IGluZGV4ID0gYWRvcHRQdHIobV93ZWJJREJPYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwg
a2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURC
VHJhbnNhY3Rpb24oKSwgZWMpKTsKKyAgICBpZiAoIWluZGV4KQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gSURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRleC5yZWxlYXNlKCkp
OworfQorCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpzZXRJbmRleGVzUmVhZHko
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGluZGV4TmFtZXMsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24pCit7CisgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIg
aXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRo
ZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2Vz
IGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFu
c2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0
cmFuc2FjdGlvbik7CisgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+c2V0SW5kZXhlc1JlYWR5KFdl
YlZlY3RvcjxXZWJTdHJpbmc+KGluZGV4TmFtZXMpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2Vi
SURCVHJhbnNhY3Rpb24oKSk7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6
OnNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQogewogICAgIC8vIFRoZSB0cmFu
c2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkg
b2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCkBAIC0xMTgsNiArMTU3LDE0IEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OnNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGluZGV4SWRzCiAgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+c2V0SW5kZXhlc1JlYWR5
KFdlYlZlY3Rvcjxsb25nIGxvbmc+KGluZGV4SWRzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdl
YklEQlRyYW5zYWN0aW9uKCkpOwogfQogCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgT3duUHRyPFdlYklEQkluZGV4PiBpbmRleCA9
IGFkb3B0UHRyKG1fd2ViSURCT2JqZWN0U3RvcmUtPmluZGV4KG5hbWUsIGVjKSk7CisgICAgaWYg
KCFpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQkluZGV4QmFja2VuZFBy
b3h5OjpjcmVhdGUoaW5kZXgucmVsZWFzZSgpKTsKK30KKwogUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjppbmRleChpbnQ2NF90
IGluZGV4SWQpCiB7CiAgICAgT3duUHRyPFdlYklEQkluZGV4PiBpbmRleCA9IGFkb3B0UHRyKG1f
d2ViSURCT2JqZWN0U3RvcmUtPmluZGV4KGluZGV4SWQpKTsKQEAgLTEyNiw2ICsxNzMsMTQgQEAg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5OjppbmRleChpbnQ2NF90IGkKICAgICByZXR1cm4gSURCSW5kZXhCYWNrZW5kUHJveHk6
OmNyZWF0ZShpbmRleC5yZWxlYXNlKCkpOwogfQogCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5OjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8v
IFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRv
IGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVu
dGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCT2JqZWN0
U3RvcmUtPmRlbGV0ZUluZGV4KG5hbWUsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFu
c2FjdGlvbigpLCBlYyk7Cit9CisKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmRl
bGV0ZUluZGV4KGNvbnN0IGludDY0X3QgaW5kZXhJZCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRy
YW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94
eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCmluZGV4IGRhOGY2YmJk
ZDgyZDFmMmIwODk0M2U3ODMyZWU1OGFlYmUyMjU5ZWMuLjc5MTEzYWU5NTY1YTMxNGRjY2YyYmFj
NzgwZWJhNzUzOTRmNmNkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaApAQCAtNDQsMTUgKzQ0LDIxIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSgpOwogCiAgICAg
dmlydHVhbCB2b2lkIGdldChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lk
IHB1dFdpdGhJbmRleEtleXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8
SW5kZXhLZXlzPiYsIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cHV0KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxi
YWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIGNvbnN0IFdU
Rjo6VmVjdG9yPGludDY0X3Q+JiwgY29uc3QgV1RGOjpWZWN0b3I8SW5kZXhLZXlzPiYpOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZUluZGV4KGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwg
Ym9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHBycFByaW1hcnlLZXks
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+
JiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVh
bCB2b2lkIHNldEluZGV4S2V5cyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJwUHJpbWFy
eUtleSwgY29uc3QgV1RGOjpWZWN0b3I8aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlz
PiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5k
ZXhlc1JlYWR5KGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSopOwogCisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBpbmRleChpbnQ2NF90KTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCwgV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYp
OwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJL
ZXlSYW5nZT4sIFdlYkNvcmU6OklEQkN1cnNvcjo6RGlyZWN0aW9uLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZTo6VGFza1R5cGUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDU5YWJkNTMyOTI4MDFmMzA0OTNkYmQwYzQ3
ZjZlMDBkMzYwYmRkNDEuLjkwYzI2MjM4OTQ5ZTQ0YTA3NDI5OTU0Y2Y3ZDg5ZTE1NjUwZTFhYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcApAQCAtNzAsNiArNzAsMTEgQEAgV2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNl
SW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIGlkLCBjb25zdCBXZWIKICAgICByZXR1
cm4gbmV3IFdlYklEQk9iamVjdFN0b3JlSW1wbChvYmplY3RTdG9yZSk7CiB9CiAKK3ZvaWQgV2Vi
SURCRGF0YWJhc2VJbXBsOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgbV9kYXRhYmFzZUJhY2tlbmQtPmRlbGV0ZU9iamVjdFN0b3JlKG5hbWUsIHRy
YW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7Cit9CisK
IHZvaWQgV2ViSURCRGF0YWJhc2VJbXBsOjpkZWxldGVPYmplY3RTdG9yZShsb25nIGxvbmcgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBtX2RhdGFiYXNlQmFja2VuZC0+ZGVsZXRlT2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmVJZCwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKCksIGVjKTsKQEAgLTgwLDYgKzg1LDE3IEBAIHZvaWQgV2ViSURCRGF0YWJhc2VJbXBs
OjpzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBj
CiAgICAgbV9kYXRhYmFzZUJhY2tlbmQtPnNldFZlcnNpb24odmVyc2lvbiwgSURCQ2FsbGJhY2tz
UHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgbV9kYXRhYmFzZUNhbGxiYWNrcywg
ZWMpOwogfQogCitXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBsOjp0cmFuc2Fj
dGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwg
V2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG5hbWVM
aXN0ID0gUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PihuYW1lcyk7CisgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSBtX2RhdGFiYXNlQmFja2Vu
ZC0+dHJhbnNhY3Rpb24obmFtZUxpc3QuZ2V0KCksIG1vZGUsIGVjKTsKKyAgICBpZiAoIXRyYW5z
YWN0aW9uKSB7CisgICAgICAgIEFTU0VSVChlYyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICByZXR1cm4gbmV3IFdlYklEQlRyYW5zYWN0aW9uSW1wbCh0cmFuc2FjdGlvbik7Cit9CisK
IFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5zYWN0aW9uKGNvbnN0
IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9k
ZSkKIHsKICAgICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZExpc3Qob2JqZWN0U3RvcmVJ
ZHMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmgKaW5kZXggZTcyODc0MmM2NDc0ODQxMjZjZjNlYTdkZDk1NmVkZmYzMmM3MjgwZi4u
NjVhMTk2NjhhOWI3Mjk3NzQ3NzliNmJlNzQxNmI3Yjc0OGYyODE2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTUzLDggKzUzLDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYklEQk1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25n
IGxvbmcsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wg
YXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNr
cyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQg
bW9kZSwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiBuYW1lcywgdW5zaWduZWQg
c2hvcnQgbW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlQ2xvc2UoKTsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDEwMjgwNGJjODFkZjY0OGFlYmZiMDkyZTBjMTRh
ODkzMjJiOWQ1OTcuLjg1YmFjMTNiMzQ4MDBkNDIwZjFjZDE4NzYwYmQ5NTYzOGNkNjRlNWMgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmNwcApAQCAtNTgsNiArNTgsMjMgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6Omdl
dChjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5UmFuZ2UsIFdlYklEQkNhbGxiYWNrcyoKICAgICBt
X29iamVjdFN0b3JlLT5nZXQoa2V5UmFuZ2UsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRv
cHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSgpLCBlYyk7CiB9CiAKK3ZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpwdXRXaXRo
SW5kZXhLZXlzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFdl
YklEQktleSYga2V5LCBQdXRNb2RlIHB1dE1vZGUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tz
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IFdlYlZlY3RvcjxX
ZWJTdHJpbmc+JiB3ZWJJbmRleE5hbWVzLCBjb25zdCBXZWJWZWN0b3I8V2ViSW5kZXhLZXlzPiYg
d2ViSW5kZXhLZXlzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQod2ViSW5k
ZXhOYW1lcy5zaXplKCkgPT0gd2ViSW5kZXhLZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gaW5kZXhOYW1lcyh3ZWJJbmRleE5hbWVzLnNpemUoKSk7CisgICAgVmVjdG9yPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlzPiBpbmRleEtleXMod2ViSW5kZXhLZXlz
LnNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkluZGV4TmFtZXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgaW5kZXhOYW1lc1tpXSA9IHdlYkluZGV4TmFtZXNbaV07Cisg
ICAgICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGluZGV4S2V5TGlzdCh3ZWJJbmRleEtleXNb
aV0uc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB3ZWJJbmRleEtleXNb
aV0uc2l6ZSgpOyArK2opCisgICAgICAgICAgICBpbmRleEtleUxpc3Rbal0gPSB3ZWJJbmRleEtl
eXNbaV1bal07CisgICAgICAgIGluZGV4S2V5c1tpXSA9IGluZGV4S2V5TGlzdDsKKyAgICB9CisK
KyAgICBtX29iamVjdFN0b3JlLT5wdXRXaXRoSW5kZXhLZXlzKHZhbHVlLCBrZXksIHN0YXRpY19j
YXN0PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZT4ocHV0TW9kZSksIElE
QkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9u
LmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBpbmRleE5hbWVzLCBpbmRleEtl
eXMsIGVjKTsKK30KKwogdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OnB1dChjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtleSwgUHV0TW9k
ZSBwdXRNb2RlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYgd2ViSW5kZXhJ
ZHMsIGNvbnN0IFdlYlZlY3RvcjxXZWJJbmRleEtleXM+JiB3ZWJJbmRleEtleXMpCiB7CiAgICAg
QVNTRVJUKHdlYkluZGV4SWRzLnNpemUoKSA9PSB3ZWJJbmRleEtleXMuc2l6ZSgpKTsKQEAgLTc1
LDYgKzkyLDIyIEBAIHZvaWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpwdXQoY29uc3QgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViCiAgICAgbV9vYmplY3RTdG9yZS0+
cHV0KHZhbHVlLCBrZXksIHN0YXRpY19jYXN0PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZTo6UHV0TW9kZT4ocHV0TW9kZSksIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIo
Y2FsbGJhY2tzKSksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSgpLCBpbmRleElkcywgaW5kZXhLZXlzKTsKIH0KIAordm9pZCBXZWJJREJPYmplY3RTdG9yZUlt
cGw6OnNldEluZGV4S2V5cyhjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlZl
Y3RvcjxXZWJTdHJpbmc+JiB3ZWJJbmRleE5hbWVzLCBjb25zdCBXZWJWZWN0b3I8V2ViSW5kZXhL
ZXlzPiYgd2ViSW5kZXhLZXlzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24p
Cit7CisgICAgQVNTRVJUKHdlYkluZGV4TmFtZXMuc2l6ZSgpID09IHdlYkluZGV4S2V5cy5zaXpl
KCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGluZGV4TmFtZXMod2ViSW5kZXhOYW1lcy5zaXplKCkp
OworICAgIFZlY3RvcjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5cz4g
aW5kZXhLZXlzKHdlYkluZGV4S2V5cy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3ZWJJbmRleE5hbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGluZGV4TmFtZXNbaV0g
PSB3ZWJJbmRleE5hbWVzW2ldOworICAgICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBpbmRl
eEtleUxpc3Qod2ViSW5kZXhLZXlzW2ldLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgd2ViSW5kZXhLZXlzW2ldLnNpemUoKTsgKytqKQorICAgICAgICAgICAgaW5kZXhL
ZXlMaXN0W2pdID0gd2ViSW5kZXhLZXlzW2ldW2pdOworICAgICAgICBpbmRleEtleXNbaV0gPSBp
bmRleEtleUxpc3Q7CisgICAgfQorICAgIG1fb2JqZWN0U3RvcmUtPnNldEluZGV4S2V5cyhwcmlt
YXJ5S2V5LCBpbmRleE5hbWVzLCBpbmRleEtleXMsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSgpKTsKK30KKwogdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6
OnNldEluZGV4S2V5cyhjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlZlY3Rv
cjxsb25nIGxvbmc+JiB3ZWJJbmRleElkcywgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4m
IHdlYkluZGV4S2V5cywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewog
ICAgIEFTU0VSVCh3ZWJJbmRleElkcy5zaXplKCkgPT0gd2ViSW5kZXhLZXlzLnNpemUoKSk7CkBA
IC05MSw2ICsxMjQsMTQgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6OnNldEluZGV4S2V5
cyhjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlYKICAgICBtX29iamVjdFN0
b3JlLT5zZXRJbmRleEtleXMocHJpbWFyeUtleSwgaW5kZXhJZHMsIGluZGV4S2V5cywgdHJhbnNh
Y3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOwogfQogCit2b2lkIFdl
YklEQk9iamVjdFN0b3JlSW1wbDo6c2V0SW5kZXhlc1JlYWR5KGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JiB3ZWJJbmRleE5hbWVzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCit7CisgICAgVmVjdG9yPFN0cmluZz4gaW5kZXhOYW1lcyh3ZWJJbmRleE5hbWVzLnNpemUo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJJbmRleE5hbWVzLnNpemUoKTsgKytp
KQorICAgICAgICBpbmRleE5hbWVzW2ldID0gd2ViSW5kZXhOYW1lc1tpXTsKKyAgICBtX29iamVj
dFN0b3JlLT5zZXRJbmRleGVzUmVhZHkoaW5kZXhOYW1lcywgdHJhbnNhY3Rpb24uZ2V0SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCkpOworfQorCiB2b2lkIFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6c2V0SW5kZXhlc1JlYWR5KGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiB3ZWJJbmRl
eE5hbWVzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgVmVj
dG9yPGludDY0X3Q+IGluZGV4SWRzKHdlYkluZGV4TmFtZXMuc2l6ZSgpKTsKQEAgLTExNyw2ICsx
NTgsMTQgQEAgV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgo
bG9uZyBsb25nIGlkLCBjb25zdCBXZWJTdHJpbmcmIG4KICAgICByZXR1cm4gbmV3IFdlYklEQklu
ZGV4SW1wbChpbmRleCk7CiB9CiAKK1dlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6
OmluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3Jl
LT5pbmRleChuYW1lLCBlYyk7CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG5ldyBXZWJJREJJbmRleEltcGwoaW5kZXgpOworfQorCiBXZWJJREJJbmRleCog
V2ViSURCT2JqZWN0U3RvcmVJbXBsOjppbmRleChsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCkKIHsK
ICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3Rv
cmUtPmluZGV4KG9iamVjdFN0b3JlSWQpOwpAQCAtMTI1LDYgKzE3NCwxMSBAQCBXZWJJREJJbmRl
eCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjppbmRleChsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCkK
ICAgICByZXR1cm4gbmV3IFdlYklEQkluZGV4SW1wbChpbmRleCk7CiB9CiAKK3ZvaWQgV2ViSURC
T2JqZWN0U3RvcmVJbXBsOjpkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgbV9vYmplY3RTdG9yZS0+ZGVsZXRlSW5kZXgobmFtZSwgdHJhbnNhY3Rpb24uZ2V0SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKK30KKwogdm9pZCBXZWJJREJPYmpl
Y3RTdG9yZUltcGw6OmRlbGV0ZUluZGV4KGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIG1fb2JqZWN0U3RvcmUtPmRlbGV0ZUluZGV4KG9iamVjdFN0b3JlSWQsIHRyYW5zYWN0aW9u
LmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCmluZGV4IDcwZjE5
Y2M4ZmI3ZDk2MjZmMzA4YzY1MGY1NGQ4ZDJjMGViODRmOGQuLjVkZTNjOWExNWFkOGVmNWY0NjBh
ODg2YWMxY2RlYWJjY2JkNTgyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC00NiwxNCArNDYsMTkgQEAgcHVibGljOgog
ICAgIH5XZWJJREJPYmplY3RTdG9yZUltcGwoKTsKIAogICAgIHZvaWQgZ2V0KGNvbnN0IFdlYklE
QktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBwdXRXaXRoSW5kZXhLZXlzKGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklEQktleSYsIFB1dE1vZGUsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgY29uc3QgV2ViVmVjdG9yPFdlYlN0
cmluZz4mLCBjb25zdCBXZWJWZWN0b3I8V2ViSW5kZXhLZXlzPiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIHB1dChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBX
ZWJJREJLZXkmLCBQdXRNb2RlLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiwgY29uc3QgV2ViVmVjdG9yPFdlYklu
ZGV4S2V5cz4mKTsKKyAgICB2b2lkIHNldEluZGV4S2V5cyhjb25zdCBXZWJJREJLZXkmLCBjb25z
dCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgaW5kZXhOYW1lcywgY29uc3QgV2ViVmVjdG9yPFdlYklu
ZGV4S2V5cz4mLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpOwogICAgIHZvaWQgc2V0SW5kZXhL
ZXlzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiBpbmRleE5h
bWVzLCBjb25zdCBXZWJWZWN0b3I8V2ViSW5kZXhLZXlzPiYsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJik7CisgICAgdm9pZCBzZXRJbmRleGVzUmVhZHkoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmlu
Zz4mLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpOwogICAgIHZvaWQgc2V0SW5kZXhlc1JlYWR5
KGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKTsK
ICAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYs
IFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChsb25n
IGxvbmcsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhj
ZXB0aW9uQ29kZSYpOworICAgIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICBXZWJJREJJbmRleCogaW5kZXgobG9uZyBsb25n
KTsKKyAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRl
eChsb25nIGxvbmcsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYp
OwogCiAgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ3Vy
c29yOjpEaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYklEQlRyYW5zYWN0aW9uOjpUYXNr
VHlwZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNw
cAppbmRleCA0MGQ3ZDc1NjMxNmMzYzMxZWE4YWJjNTQ0MDA5YTAwNjYyNjljMjQ1Li42NjE2ZDY3
MWZjMzBjOTdlNjcyNjE0YzFhNDE5OWUzYTdkMDg4NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTQ3LDYgKzQ3
LDE0IEBAIFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6fldlYklEQlRyYW5zYWN0aW9uSW1wbCgpCiB7
CiB9CiAKK1dlYklEQk9iamVjdFN0b3JlKiBXZWJJREJUcmFuc2FjdGlvbkltcGw6Om9iamVjdFN0
b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2JhY2tl
bmQtPm9iamVjdFN0b3JlKG5hbWUsIGVjKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IFdlYklEQk9iamVjdFN0b3JlSW1wbChvYmplY3RT
dG9yZSk7Cit9CisKIFdlYklEQk9iamVjdFN0b3JlKiBXZWJJREJUcmFuc2FjdGlvbkltcGw6Om9i
amVjdFN0b3JlKGxvbmcgbG9uZyBpbmRleElkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fYmFj
a2VuZC0+b2JqZWN0U3RvcmUoaW5kZXhJZCwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaAppbmRleCAwZmI2NTM3Njc2MzE2Y2U3
MDBjZmJhYzhkZTg5OTNjZWM2NDY2YTc3Li4xZWU2YWI4MDE5N2VmNzhmYWZhMTNlOTZmZDA1Zjcw
ZjM3YmFkNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJU
cmFuc2FjdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJU
cmFuc2FjdGlvbkltcGwuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgV2ViSURCVHJh
bnNhY3Rpb25JbXBsKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIH5XZWJJREJUcmFuc2FjdGlvbkltcGwoKTsKIAor
ICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3Rv
cmUqIG9iamVjdFN0b3JlKGxvbmcgbG9uZyBpbmRleElkLCBXZWJFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>