<?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>163738</bug_id>
          
          <creation_ts>2016-10-20 09:56:38 -0700</creation_ts>
          <short_desc>The tracking of the coarse-grain Heap state (allocating or not, collector or not, eden vs full) should respect the orthogonality between allocating and collecting</short_desc>
          <delta_ts>2016-10-20 19:23:43 -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>JavaScriptCore</component>
          <version>WebKit 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>
          
          <blocked>163562</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1242452</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 09:56:38 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242453</commentid>
    <comment_count>1</comment_count>
      <attachid>292213</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 09:57:22 -0700</bug_when>
    <thetext>Created attachment 292213
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242460</commentid>
    <comment_count>2</comment_count>
      <attachid>292215</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 10:07:33 -0700</bug_when>
    <thetext>Created attachment 292215
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242495</commentid>
    <comment_count>3</comment_count>
      <attachid>292227</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 11:25:36 -0700</bug_when>
    <thetext>Created attachment 292227
maybe it&apos;s done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242507</commentid>
    <comment_count>4</comment_count>
      <attachid>292232</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 11:44:03 -0700</bug_when>
    <thetext>Created attachment 292232
more

More things are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242562</commentid>
    <comment_count>5</comment_count>
      <attachid>292242</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 13:17:22 -0700</bug_when>
    <thetext>Created attachment 292242
getting closer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242607</commentid>
    <comment_count>6</comment_count>
      <attachid>292265</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 15:00:18 -0700</bug_when>
    <thetext>Created attachment 292265
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242608</commentid>
    <comment_count>7</comment_count>
      <attachid>292266</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 15:08:41 -0700</bug_when>
    <thetext>Created attachment 292266
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242622</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 15:34:16 -0700</bug_when>
    <thetext>I&apos;m fixing the WebCore build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242626</commentid>
    <comment_count>9</comment_count>
      <attachid>292266</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-20 15:39:05 -0700</bug_when>
    <thetext>Comment on attachment 292266
the patch

r=me when it builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242632</commentid>
    <comment_count>10</comment_count>
      <attachid>292272</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 15:42:43 -0700</bug_when>
    <thetext>Created attachment 292272
possible patch for landing

Fixing WebCore things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242635</commentid>
    <comment_count>11</comment_count>
      <attachid>292275</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 15:49:37 -0700</bug_when>
    <thetext>Created attachment 292275
possible patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242643</commentid>
    <comment_count>12</comment_count>
      <attachid>292277</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 16:20:01 -0700</bug_when>
    <thetext>Created attachment 292277
possible patch for landing

I think it might build now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242672</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 17:01:33 -0700</bug_when>
    <thetext>I&apos;ll run JetStream and then land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242741</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 19:18:05 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;ll run JetStream and then land.

It&apos;s neutral (0.3% slower with 54% confidence).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242743</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-20 19:23:43 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/207653</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292213</attachid>
            <date>2016-10-20 09:57:22 -0700</date>
            <delta_ts>2016-10-20 10:07:33 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>54188</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDc2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTEwLDcgKzUxMCw2IEBACiAJCTBGODMzNUI3MTYzOUMx
RTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovOyB9OwotCQkw
Rjg2QTI2RDFENkY3OTY1MDBDQjBDOTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QTI2QzFENkY3OTYyMDBDQjBD
OTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgKi87IH07CiAJCTBGODZBMjZGMUQ2RjdCMzMwMENCMEM5
MiAvKiBHQ1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODZBMjZFMUQ2RjdCMzEwMENCMEM5MiAvKiBHQ1R5cGVNYXAuaCAqLzsgfTsKIAkJ
MEY4NkFFMjAxQzUzMTFDNTAwNkJFOEVDIC8qIEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODZBRTFGMUM1MzEx
QzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi87IH07CiAJCTBGODg1RTEx
MTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5
dGVjb2RlVXNlRGVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTU5Miw2ICs1OTEsMTEgQEAKIAkJMEZBNTgxQkExNTBFOTUyQzAwQjlBMkQ5IC8q
IERGR05vZGVGbGFncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLzsg
fTsKIAkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjgxNTBFOTUyQTAw
QjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovOyB9OwogCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEy
RDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTU4MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovOyB9
OworCQkwRkE3NjIwNDFEQjkyNDI2MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAwMURCOTI0
MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwICovOyB9OworCQkwRkE3NjIwNTFEQjky
NDI5MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVj
dGlvblNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZBNzYyMDYxREI5MjQzMTAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMjFEQjkyNDIz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLzsgfTsKKwkJMEZBNzYyMDcxREI5MjQzMzAw
QjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZBNzYyMDMxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQTc2
MjA5MURCOTI4M0UwMEI3QTJGRCAvKiBIZWxwaW5nSGVhcFNjb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwODFEQjkyODNDMDBCN0EyRkQg
LyogSGVscGluZ0hlYXBTY29wZS5oICovOyB9OwogCQkwRkE3QThFQjE4QjQxM0M4MDA1MjM3MUQg
LyogUmVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovOyB9OwogCQkwRkE3QThFQzE4
QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZBN0E4RUUxOENFNEZE
ODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3QThFRDE4Q0U0RkQ4MDA1MjM3MUQg
LyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcCAqLzsgfTsKQEAgLTYyMyw3ICs2MjcsNiBA
QAogCQkwRkI0RkI3MzFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcwMUJDODQz
MTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovOyB9OwogCQkwRkI0RkI3NDFCQzg0
MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6
eVNsb3dQYXRoLmggKi87IH07CiAJCTBGQjRGQjc1MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5
U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoQ2FsbC5oICov
OyB9OwotCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1MzAzODFEOTA0
MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi87IH07CiAJCTBGQjU0Njc3MTRGNTlC
NUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8q
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgKi87IH07CiAJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTU2LDcgKzExNTksNiBAQAogCQkyQTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0QgLyog
SlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVl
SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFy
cmllckJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCAq
LzsgfTsKIAkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0RUM5MEEx
ODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5
OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBN0E1OEVG
MTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdD
LmNwcCAqLzsgfTsKIAkJMkE4MzYzODUxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkE4MzYzODMxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
ICovOyB9OwogCQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4
MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjgzNCw3ICsyODM2
LDYgQEAKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERp
cmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCcmFuY2hEaXJl
Y3Rpb24uaDsgcGF0aCA9IGRmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEY4NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcE9wZXJhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODZBMjZFMUQ2RjdCMzEwMENCMEM5
MiAvKiBHQ1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUeXBl
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODZBRTFGMUM1MzExQzUwMDZC
RThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaDsgcGF0aCA9IGIzL0IzQ29tcHV0ZURp
dmlzaW9uTWFnaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4ODVFMTAxODQ5
QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ5dGVjb2RlVXNlRGVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yOTE1LDYgKzI5MTYsMTEgQEAKIAkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2Rl
RmxhZ3MuY3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsYWdzLmg7IHBhdGggPSBk
ZmcvREZHTm9kZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTU4MUI5
MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdOb2RlVHlwZS5oOyBwYXRoID0gZGZnL0RGR05vZGVUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTc2MjAwMURCOTI0MjMwMEI3QTJGRCAvKiBDb2xs
ZWN0aW9uU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29s
bGVjdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzYyMDEx
REI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb2xsZWN0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZBNzYyMDIxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdG9yU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMzFEQjkyNDIzMDBCN0EyRkQgLyogTXV0YXRv
clN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0b3JTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwODFEQjkyODNDMDBCN0EyRkQg
LyogSGVscGluZ0hlYXBTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
ZWxwaW5nSGVhcFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEU5
MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBN0E4RUEx
OEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBN0E4RUQxOENFNEZEODAw
NTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk1Niw3ICsyOTYyLDYgQEAKIAkJMEZCNEZCNzAxQkM4
NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGguY3BwOyBwYXRoID0gZnRsL0ZUTExhenlT
bG93UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRGQjcxMUJDODQz
MTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRGQjcyMUJDODQzMTQwMDI1Q0E1QSAv
KiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZUTExhenlTbG93UGF0aENhbGwuaDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAv
KiBBbGxvY2F0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxs
b2NhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0Njc2MTRG
NTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDUwLDcgKzM0NTUs
NiBAQAogCQkyQTRCQjdGMjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01hbmFnZWRWYWx1ZUludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNEVDOTA5MTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkE0RUM5MEExODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJCdWZmZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8q
IEhlYXBPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcE9w
ZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTdBNThFRTE4MDhBNEM0
MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEZWZlckdDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE4MzYzODMx
OEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU0NDcsNyArNTQ1MSw2IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwRkI1MzAzODFE
OTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi8sCiAJCQkJMEY5NjMwMzUxRDQx
OTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2
MUQ0MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmggKi8sCiAJCQkJMEYwNzBB
NDIxRDU0M0E4OTAwNkU3MjMyIC8qIENlbGxDb250YWluZXIuaCAqLywKQEAgLTU0NTYsNiArNTQ1
OSw4IEBACiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5jcHAg
Ki8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oICovLAog
CQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVzLmggKi8s
CisJCQkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgKi8s
CisJCQkJMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovLAog
CQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8s
CiAJCQkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmggKi8s
CiAJCQkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovLApAQCAtNTUw
MCw4ICs1NTA1LDYgQEAKIAkJCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGlu
ZXMuaCAqLywKIAkJCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNj
b3BlLmggKi8sCiAJCQkJQTUzMzlFQzgxQkI0QjQ1MTAwNTRGMDA1IC8qIEhlYXBPYnNlcnZlci5o
ICovLAotCQkJCTBGODZBMjZDMUQ2Rjc5NjIwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCAq
LywKLQkJCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICovLAog
CQkJCUE1Mzk4RkE5MUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuY3BwICovLAogCQkJ
CUE1Mzk4RkFBMUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuaCAqLywKIAkJCQkxNEY5
NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8sCkBAIC01NTE2LDYg
KzU1MTksNyBAQAogCQkJCTBGQURFNjcyMUQ0RDIzQkMwMDc2ODQ1NyAvKiBIZWFwVXRpbC5oICov
LAogCQkJCUZFN0JBNjBEMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwICovLAog
CQkJCUZFN0JBNjBFMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCAqLywKKwkJCQkw
RkE3NjIwODFEQjkyODNDMDBCN0EyRkQgLyogSGVscGluZ0hlYXBTY29wZS5oICovLAogCQkJCUMy
NUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJ
CUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJ
CQkwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLApA
QCAtNTU0MSw2ICs1NTQ1LDggQEAKIAkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFy
a2VkU3BhY2VJbmxpbmVzLmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1h
cmtTdGFjay5jcHAgKi8sCiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFj
ay5oICovLAorCQkJCTBGQTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3Bw
ICovLAorCQkJCTBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLywK
IAkJCQlBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLAogCQkJ
CUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJCQkJMTRC
QTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCkBAIC03NTAwLDYgKzc1
MDYsNyBAQAogCQkJCTBGRUM4NTAzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tVdGls
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxv
Y2tXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDYxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzQ2hlY2tTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNzFEQjkyNDMz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwODFC
REFDREFDMDA4MEZGNzQgLyogQjNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVD
ODUwQTFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURD
NDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCkBA
IC03NjAwLDcgKzc2MDcsNiBAQAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxs
RnJhbWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1
QjRGIC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RD
NTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1MzAz
OTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2Mjc2NzMyNDFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywKQEAgLTc5MDUsNiArNzkxMSw3IEBACiAJCQkJ
MkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZBNzYyMDkxREI5MjgzRTAwQjdBMkZEIC8qIEhlbHBpbmdIZWFw
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBF
cnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDJFOThEMEUxODNFMzgw
MDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkwRjBF
MTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtODA1
NCw3ICs4MDYxLDYgQEAKIAkJCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJh
dGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMzOUVDOTFCQjRCNDYwMDA1NEYwMDUg
LyogSGVhcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JFQjFEQjU4REFEMDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkyQTZGNDYy
NjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRGOTc0NDcxMzhDODUzRTAwREExQzY3IC8qIEhlYXBSb290VmlzaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkU1MjZCRTE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTgxMTcsNiArODEyMyw3IEBACiAJCQkJQTE4MTkzRTMxQjRFMENE
QjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFCOUUyM0UxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTE4MTkzRTQxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTc2MjA1MURCOTI0Mjkw
MEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3RDZF
MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMTg3QTBGMUMwMzBENkMwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk0ODEsNyArOTQ4OCw2IEBACiAJCQkJ
QTc4QTk3N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZCRTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY4NkEy
NkQxRDZGNzk2NTAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYzRTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRUMxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYyMTk2QjhGOUUwMDkx
MDUyQSAvKiBERkdQdXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjI4LDYgKzk2MzQs
NyBAQAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyMDE4N0I3Qjg2
MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZBNzYyMDQxREI5MjQyNjAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDhBN0JFRjFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTU1MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVD
YWxsRnJhbWVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVDRUVFMTQxODdGM0JBRDAwRTU1
Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTc4Miw2ICs5Nzg5
LDcgQEAKIAkJCQlEQzE3RTgxNzFDOUM5MUQ2MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzI5OUQ5RDE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc5MERENkYxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZBNzYyMDYxREI5MjQzMTAwQjdBMkZEIC8q
IE11dGF0b3JTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgzQTEwN0VDMDc1MDAx
M0U3QjIgLyogQ0xvb3BTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENTEwN0VD
Mzc2MDA0MjdBNDggLyogSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQzBFQzIx
QUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkocmV2
aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNj
b3BlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSGVh
cC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQWxsb2NhdGlvblNjb3BlIHsKLXB1Ymxp
YzoKLSAgICBBbGxvY2F0aW9uU2NvcGUoSGVhcCYgaGVhcCkKLSAgICAgICAgOiBtX2hlYXAoaGVh
cCkKLSAgICAgICAgLCBtX2xhc3RPcGVyYXRpb24obV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVz
cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xhc3RPcGVyYXRpb24gPT0gTm9PcGVyYXRpb24g
fHwgbV9sYXN0T3BlcmF0aW9uID09IEFsbG9jYXRpb24pOwotICAgICAgICBtX2hlYXAubV9vcGVy
YXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKLSAgICB9Ci0gICAgCi0gICAgfkFsbG9jYXRp
b25TY29wZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBBbGxvY2F0aW9uKTsKLSAgICAgICAgbV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9IG1fbGFzdE9wZXJhdGlvbjsKLSAgICB9Ci1wcml2YXRlOgotICAgIEhlYXAmIG1faGVhcDsK
LSAgICBIZWFwT3BlcmF0aW9uIG1fbGFzdE9wZXJhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25T
Y29wZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29s
bGVjdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgor
CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Q29sbGVjdGlvblNjb3BlIHNjb3BlKQoreworICAgIHN3aXRjaCAoc2NvcGUpIHsKKyAgICBjYXNl
IENvbGxlY3Rpb25TY29wZTo6RWRlbjoKKyAgICAgICAgb3V0LnByaW50KCJFZGVuIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIENvbGxlY3Rpb25TY29wZTo6RnVsbDoKKyAgICAgICAgb3V0
LnByaW50KCJGdWxsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgQ29sbGVjdGlvblNjb3BlIHsgRWRlbiwgRnVsbCB9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50
U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpDb2xs
ZWN0aW9uU2NvcGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMTUgKzE0MCwxNSBAQCBI
YXNoTWFwPGNvbnN0IGNoYXIqLCBHQ1R5cGVNYXA8U2ltcGxlU3RhCiAgICAgcmV0dXJuICpyZXN1
bHQ7CiB9CiAKLVNpbXBsZVN0YXRzJiB0aW1pbmdTdGF0cyhjb25zdCBjaGFyKiBuYW1lLCBIZWFw
T3BlcmF0aW9uIG9wZXJhdGlvbikKK1NpbXBsZVN0YXRzJiB0aW1pbmdTdGF0cyhjb25zdCBjaGFy
KiBuYW1lLCBDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiB7Ci0gICAgcmV0dXJuIHRpbWluZ1N0YXRz
KCkuYWRkKG5hbWUsIEdDVHlwZU1hcDxTaW1wbGVTdGF0cz4oKSkuaXRlcmF0b3ItPnZhbHVlW29w
ZXJhdGlvbl07CisgICAgcmV0dXJuIHRpbWluZ1N0YXRzKCkuYWRkKG5hbWUsIEdDVHlwZU1hcDxT
aW1wbGVTdGF0cz4oKSkuaXRlcmF0b3ItPnZhbHVlW3Njb3BlXTsKIH0KIAogY2xhc3MgVGltaW5n
U2NvcGUgewogcHVibGljOgotICAgIFRpbWluZ1Njb3BlKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9u
LCBjb25zdCBjaGFyKiBuYW1lKQotICAgICAgICA6IG1fb3BlcmF0aW9uKG9wZXJhdGlvbikKKyAg
ICBUaW1pbmdTY29wZShDb2xsZWN0aW9uU2NvcGUgc2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCisg
ICAgICAgIDogbV9zY29wZShzY29wZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7CiAg
ICAgICAgIGlmIChtZWFzdXJlUGhhc2VUaW1pbmcoKSkKQEAgLTE1NiwxOCArMTU2LDE4IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiAgICAgVGltaW5nU2NvcGUoSGVhcCYgaGVhcCwgY29uc3QgY2hh
ciogbmFtZSkKLSAgICAgICAgOiBUaW1pbmdTY29wZShoZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3Mo
KSwgbmFtZSkKKyAgICAgICAgOiBUaW1pbmdTY29wZShoZWFwLmNvbGxlY3Rpb25TY29wZSgpLCBu
YW1lKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRPcGVyYXRpb24oSGVhcE9wZXJh
dGlvbiBvcGVyYXRpb24pCisgICAgdm9pZCBzZXRTY29wZShDb2xsZWN0aW9uU2NvcGUgc2NvcGUp
CiAgICAgewotICAgICAgICBtX29wZXJhdGlvbiA9IG9wZXJhdGlvbjsKKyAgICAgICAgbV9zY29w
ZSA9IHNjb3BlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldE9wZXJhdGlvbihIZWFwJiBoZWFw
KQorICAgIHZvaWQgc2V0U2NvcGUoSGVhcCYgaGVhcCkKICAgICB7Ci0gICAgICAgIHNldE9wZXJh
dGlvbihoZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgICAgIHNldFNjb3BlKGhlYXAu
Y29sbGVjdGlvblNjb3BlKCkpOwogICAgIH0KICAgICAKICAgICB+VGltaW5nU2NvcGUoKQpAQCAt
MTc3LDExICsxNzcsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZG91YmxlIHRpbWluZyA9IGFm
dGVyIC0gbV9iZWZvcmU7CiAgICAgICAgICAgICBTaW1wbGVTdGF0cyYgc3RhdHMgPSB0aW1pbmdT
dGF0cyhtX25hbWUsIG1fb3BlcmF0aW9uKTsKICAgICAgICAgICAgIHN0YXRzLmFkZCh0aW1pbmcp
OwotICAgICAgICAgICAgZGF0YUxvZygiW0dDOiIsIG1fb3BlcmF0aW9uLCAiXSAiLCBtX25hbWUs
ICIgdG9vazogIiwgdGltaW5nLCAiIG1zIChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcyku
XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIltHQzoiLCBtX3Njb3BlLCAiXSAiLCBtX25hbWUs
ICIgdG9vazogIiwgdGltaW5nLCAiIG1zIChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcyku
XG4iKTsKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgSGVhcE9wZXJhdGlvbiBtX29w
ZXJhdGlvbjsKKyAgICBDb2xsZWN0aW9uU2NvcGUgbV9zY29wZTsKICAgICBkb3VibGUgbV9iZWZv
cmU7CiAgICAgY29uc3QgY2hhciogbV9uYW1lOwogfTsKQEAgLTk1NSwyOSArOTU1LDI5IEBAIHZv
aWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlX
ZWFrQmxvY2tzKCk7CiB9CiAKLXZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxl
Y3Rpb25UeXBlKQordm9pZCBIZWFwOjpjb2xsZWN0KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4g
c2NvcGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNv
bGxlY3RXaXRob3V0QW55U3dlZXAoY29sbGVjdGlvblR5cGUpOworICAgIGNvbGxlY3RXaXRob3V0
QW55U3dlZXAoc2NvcGUpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0V2l0
aG91dEFueVN3ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCitORVZFUl9JTkxJTkUg
dm9pZCBIZWFwOjpjb2xsZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29w
ZT4gc2NvcGUpCiB7CiAgICAgdm9pZCogc3RhY2tUb3A7CiAgICAgQUxMT0NBVEVfQU5EX0dFVF9S
RUdJU1RFUl9TVEFURShyZWdpc3RlcnMpOwogCi0gICAgY29sbGVjdEltcGwoY29sbGVjdGlvblR5
cGUsIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3RhY2tUb3AsIHJlZ2lzdGVy
cyk7CisgICAgY29sbGVjdEltcGwoc2NvcGUsIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdp
bigpLCAmc3RhY2tUb3AsIHJlZ2lzdGVycyk7CiAKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0obV92
bSk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXBPcGVyYXRp
b24gY29sbGVjdGlvblR5cGUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFj
aGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQorTkVWRVJf
SU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBz
Y29wZSwgdm9pZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6
UmVnaXN0ZXJTdGF0ZSYgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpCiB7CiAgICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIFRpbWluZ1Njb3BlIGNvbGxlY3RJ
bXBsVGltaW5nU2NvcGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCIpOworICAg
IFRpbWluZ1Njb3BlIGNvbGxlY3RJbXBsVGltaW5nU2NvcGUoc2NvcGUsICJIZWFwOjpjb2xsZWN0
SW1wbCIpOwogICAgIAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxv
Z0YoIkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CkBAIC05OTEsNyArOTkxLDcgQEAg
TkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIAogICAgIGRvdWJs
ZSBnY1N0YXJ0VGltZTsKICAgICB7Ci0gICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGltaW5nU2Nv
cGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCBiZWZvcmUgbWFya1Jvb3RzIik7
CisgICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGltaW5nU2NvcGUoc2NvcGUsICJIZWFwOjpjb2xs
ZWN0SW1wbCBiZWZvcmUgbWFya1Jvb3RzIik7CiAKICAgICAgICAgaWYgKHZtKCktPnR5cGVQcm9m
aWxlcigpKSB7CiAgICAgICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7CkBA
IC0xMDE0LDcgKzEwMTQsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChI
ZWFwCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09w
ZXJhdGlvbik7CiAKICAgICAgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgICAgICB3
aWxsU3RhcnRDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKTsKKyAgICAgICAgd2lsbFN0YXJ0Q29s
bGVjdGlvbihzY29wZSk7CiAgICAgICAgIAogICAgICAgICBjb2xsZWN0SW1wbFRpbWluZ1Njb3Bl
LnNldE9wZXJhdGlvbigqdGhpcyk7CiAgICAgICAgIGVhcmx5VGltaW5nU2NvcGUuc2V0T3BlcmF0
aW9uKCp0aGlzKTsKQEAgLTExMDMsMjIgKzExMDMsMjIgQEAgdm9pZCBIZWFwOjpzdXNwZW5kQ29t
cGlsZXJUaHJlYWRzKCkKICNlbmRpZgogfQogCi12b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rp
b24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKK3ZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29s
bGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewogICAgIGlmIChPcHRp
b25zOjpsb2dHQygpKQogICAgICAgICBkYXRhTG9nKCI9PiAiKTsKICAgICAKLSAgICBpZiAoc2hv
dWxkRG9GdWxsQ29sbGVjdGlvbihjb2xsZWN0aW9uVHlwZSkpIHsKLSAgICAgICAgbV9vcGVyYXRp
b25JblByb2dyZXNzID0gRnVsbENvbGxlY3Rpb247CisgICAgaWYgKHNob3VsZERvRnVsbENvbGxl
Y3Rpb24oc2NvcGUpKSB7CisgICAgICAgIG1fY29sbGVjdGlvblNjb3BlID0gQ29sbGVjdGlvblNj
b3BlOjpGdWxsOwogICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSBmYWxzZTsKICAg
ICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJGdWxsQ29s
bGVjdGlvbiwgIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNz
ID0gRWRlbkNvbGxlY3Rpb247CisgICAgICAgIG1fY29sbGVjdGlvblNjb3BlID0gQ29sbGVjdGlv
blNjb3BlOjpFZGVuOwogICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgICAg
IGRhdGFMb2coIkVkZW5Db2xsZWN0aW9uLCAiKTsKICAgICB9Ci0gICAgaWYgKG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlmIChtX2NvbGxlY3Rpb25TY29w
ZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgbV9zaXplQmVmb3JlTGFzdEZ1
bGxDb2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlz
Q3ljbGU7CiAgICAgICAgIG1fZXh0cmFNZW1vcnlTaXplID0gMDsKICAgICAgICAgbV9kZXByZWNh
dGVkRXh0cmFNZW1vcnlTaXplID0gMDsKQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgSGVhcDo6
d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmEKICAgICAgICAgaWYgKG1fZnVsbEFjdGl2aXR5
Q2FsbGJhY2spCiAgICAgICAgICAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVj
dCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRWRlbkNvbGxlY3Rpb24pOworICAgICAgICBBU1NFUlQobV9jb2xsZWN0aW9uU2NvcGUgPT0g
Q29sbGVjdGNpb25TY29wZTo6RWRlbik7CiAgICAgICAgIG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29s
bGVjdCA9IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgKyBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xl
OwogICAgIH0KIApAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgdm9pZCBIZWFwOjpmbHVzaE9sZFN0cnVj
dHVyZUlEVGFibGVzKCkKIAogdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcigpCiB7
Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbikgeworICAg
IGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pIHsKICAgICAg
ICAgbV93cml0ZUJhcnJpZXJCdWZmZXIuZmx1c2goKnRoaXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTE3MSw3ICsxMTcxLDcgQEAgdm9pZCBIZWFwOjpyZWFwV2Vha0hhbmRsZXMoKQog
CiB2b2lkIEhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKQogewotICAgIGlm
IChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1fY29s
bGVjdGlvblNjb3BlICE9IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgcmV0dXJuOwog
ICAgIGZvciAoYXV0byYgcHJ1bmVDYWxsYmFjayA6IG1fd2Vha0dDTWFwcy52YWx1ZXMoKSkKICAg
ICAgICAgcHJ1bmVDYWxsYmFjaygpOwpAQCAtMTE5NSw3ICsxMTk1LDcgQEAgdm9pZCBIZWFwOjpk
ZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpCiAKIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVtZW50
YWxTd2VlcGVyKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xs
ZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6
RnVsbCkgewogICAgICAgICBpZiAoIW1fbG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzLmlzRW1wdHko
KSkKICAgICAgICAgICAgIG1faW5kZXhPZk5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja1RvU3dl
ZXAgPSAwOwogICAgIH0KQEAgLTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxs
b2NhdGlvbkxpbWl0cygpCiAgICAgaWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBjdXJy
ZW50SGVhcFNpemUgPiBPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCiAgICAgICAgIEhlYXBTdGF0
aXN0aWNzOjpleGl0V2l0aEZhaWx1cmUoKTsKIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29s
bGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIC8vIFRvIGF2b2lkIHBhdGhvbG9naWNhbCBH
QyBjaHVybiBpbiB2ZXJ5IHNtYWxsIGFuZCB2ZXJ5IGxhcmdlIGhlYXBzLCB3ZSBzZXQKICAgICAg
ICAgLy8gdGhlIG5ldyBhbGxvY2F0aW9uIGxpbWl0IGJhc2VkIG9uIHRoZSBjdXJyZW50IHNpemUg
b2YgdGhlIGhlYXAsIHdpdGggYQogICAgICAgICAvLyBmaXhlZCBtaW5pbXVtLgpAQCAtMTI5OCw4
ICsxMjk4LDggQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIHZvaWQgSGVh
cDo6ZGlkRmluaXNoQ29sbGVjdGlvbihkb3VibGUgZ2NTdGFydFRpbWUpCiB7CiAgICAgZG91Ymxl
IGdjRW5kVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgSGVh
cE9wZXJhdGlvbiBvcGVyYXRpb24gPSBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7Ci0gICAgaWYgKG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBDb2xsZWN0aW9uU2Nv
cGUgc2NvcGUgPSAqbV9jb2xsZWN0aW9uU2NvcGU7CisgICAgaWYgKHNjb3BlID09IENvbGxlY3Rp
b25TY29wZTo6RnVsbCkKICAgICAgICAgbV9sYXN0RnVsbEdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0g
Z2NTdGFydFRpbWU7CiAgICAgZWxzZQogICAgICAgICBtX2xhc3RFZGVuR0NMZW5ndGggPSBnY0Vu
ZFRpbWUgLSBnY1N0YXJ0VGltZTsKQEAgLTEzMjIsMTEgKzEzMjIsMTEgQEAgdm9pZCBIZWFwOjpk
aWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnYwogICAgICAgICByZW1vdmVEZWFkSGVhcFNuYXBz
aG90Tm9kZXMoKmhlYXBQcm9maWxlcik7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BU1NFUlQobV9v
cGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uIHx8IG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBGdWxsQ29sbGVjdGlvbik7Ci0gICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9P
cGVyYXRpb247CisgICAgUkVMRUFTRV9BU1NFUlQobV9jb2xsZWN0aW9uU2NvcGUpOworICAgIG1f
Y29sbGVjdGlvblNjb3BlID0gTnVsbG9wdDsKIAogICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBt
X29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPmRpZEdhcmJhZ2VDb2xsZWN0KG9wZXJhdGlv
bik7CisgICAgICAgIG9ic2VydmVyLT5kaWRHYXJiYWdlQ29sbGVjdChzY29wZSk7CiB9CiAKIHZv
aWQgSGVhcDo6cmVzdW1lQ29tcGlsZXJUaHJlYWRzKCkKQEAgLTEzODgsNyArMTM4OCw3IEBAIGJv
b2wgSGVhcDo6aXNWYWxpZEFsbG9jYXRpb24oc2l6ZV90KQogICAgIGlmICghaXNWYWxpZFRocmVh
ZFN0YXRlKG1fdm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9vcGVyYXRp
b25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChpc0N1cnJlbnRUaHJlYWRCdXN5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0
NjUsMjQgKzE0NjUsMTQgQEAgdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcihKU0Nl
bAogICAgIG1fd3JpdGVCYXJyaWVyQnVmZmVyLmFkZChjZWxsKTsKIH0KIAotYm9vbCBIZWFwOjpz
aG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVzdGVkQ29sbGVjdGlvblR5
cGUpIGNvbnN0Citib29sIEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oT3B0aW9uYWw8Q29s
bGVjdGlvblNjb3BlPiBzY29wZSkgY29uc3QKIHsKICAgICBpZiAoIU9wdGlvbnM6OnVzZUdlbmVy
YXRpb25hbEdDKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgc3dpdGNoIChyZXF1ZXN0
ZWRDb2xsZWN0aW9uVHlwZSkgewotICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBjYXNlIEZ1bGxDb2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBjYXNlIEFueUNvbGxlY3Rpb246CisgICAgaWYgKCFzY29wZSkKICAgICAgICAgcmV0
dXJuIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiAqc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsOwogfQogCiB2b2lkIEhlYXA6
OmFkZExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKFdlYWtCbG9jayogYmxvY2spCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE3ICsyMiwxOCBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkNvbGxl
Y3Rpb25TY29wZS5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmgiCiAjaW5j
bHVkZSAiSGFuZGxlU2V0LmgiCiAjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKICNpbmNsdWRlICJI
ZWFwT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJIZWFwT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiTGlz
dGFibGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVk
ZSAiTWFya2VkQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAi
TXV0YXRvclN0YXRlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNp
dG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgpAQCAtNDgsNyArNDksNiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQWxsb2NhdGlvblNjb3BlOwogY2xhc3MgQ29kZUJs
b2NrOwogY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7CkBAIC02
MSw2ICs2MSw3IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwUHJvZmlsZXI7CiBjbGFzcyBIZWFw
Um9vdFZpc2l0b3I7CiBjbGFzcyBIZWFwVmVyaWZpZXI7CitjbGFzcyBIZWxwaW5nSGVhcFNjb3Bl
OwogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyOwogY2xhc3MgSklUU3R1YlJvdXRpbmU7CiBjbGFz
cyBKSVRTdHViUm91dGluZVNldDsKQEAgLTEzOSwxMSArMTQwLDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIGFkZE9ic2VydmVyKEhlYXBPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMuYXBw
ZW5kKG9ic2VydmVyKTsgfQogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoSGVhcE9ic2VydmVyKiBv
YnNlcnZlcikgeyBtX29ic2VydmVycy5yZW1vdmVGaXJzdChvYnNlcnZlcik7IH0KIAotICAgIC8v
IHRydWUgaWYgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwotICAgIGJvb2wgaXNDb2xsZWN0aW5n
KCk7Ci0gICAgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb25JblByb2dyZXNzKCkgeyByZXR1cm4gbV9v
cGVyYXRpb25JblByb2dyZXNzOyB9Ci0gICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNv
bGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKLSAgICBib29sIGlzQnVzeSgpOworICAgIE11dGF0b3JT
dGF0ZSBtdXRhdG9yU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX211dGF0b3JTdGF0ZTsgfQorICAg
IE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gY29sbGVjdGlvblNjb3BlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xsZWN0aW9uU2NvcGU7IH0KKworICAgIC8vIFdlJ3JlIGFsd2F5cyBidXN5IG9uIHRo
ZSBjb2xsZWN0aW9uIHRocmVhZHMuIE9uIHRoZSBtYWluIHRocmVhZCwgdGhpcyByZXR1cm5zIHRy
dWUgaWYgd2UncmUKKyAgICAvLyBoZWxwaW5nIGhlYXAuCisgICAgYm9vbCBpc0N1cnJlbnRUaHJl
YWRCdXN5KCk7CisgICAgCiAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9i
amVjdFdpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZv
ck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpOyB9CiAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNl
JiBzdWJzcGFjZUZvck9iamVjdERlc3RydWN0b3IoKSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1
YnNwYWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9yKCk7IH0KICAgICBNYXJrZWRTcGFjZTo6U3Vi
c3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0YSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uu
c3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCk7IH0KQEAgLTE3MSw3ICsxNzQsNyBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogCiAgICAg
Ym9vbCBzaG91bGRDb2xsZWN0KCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0
KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9IE51
bGxvcHQpOwogICAgIGJvb2wgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcihHQ0RlZmVycmFsQ29u
dGV4dCogPSBudWxscHRyKTsgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGRpZCBjb2xsZWN0LgogICAg
IHZvaWQgY29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5KCk7CiAKQEAgLTI2OCw3
ICsyNzEsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgdW5zaWduZWQqIGFkZHJlc3NPZkJhcnJpZXJU
aHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiAmbV9iYXJyaWVyVGhyZXNob2xkOyB9CiAKIHByaXZh
dGU6Ci0gICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TY29wZTsKICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOwogICAgIGZyaWVuZCBjbGFzcyBEZWZlckdDOwogICAgIGZyaWVuZCBjbGFzcyBE
ZWZlckdDRm9yQVdoaWxlOwpAQCAtMjc4LDYgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEhhbmRsZVNldDsKICAgICBmcmllbmQgY2xhc3MgSGVhcFV0aWw7CiAgICAgZnJpZW5k
IGNsYXNzIEhlYXBWZXJpZmllcjsKKyAgICBmcmllbmQgY2xhc3MgSGVscGluZ0hlYXBTY29wZTsK
ICAgICBmcmllbmQgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CkBAIC0yOTMs
NyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9p
ZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxD
b250ZXh0Kiwgc2l6ZV90KTsKIAotICAgIHZvaWQgY29sbGVjdFdpdGhvdXRBbnlTd2VlcChIZWFw
T3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlID0gQW55Q29sbGVjdGlvbik7CisgICAgdm9pZCBjb2xs
ZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gPSBOdWxsb3B0KTsK
IAogICAgIHZvaWQqIGFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3
aXRoIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycy4KICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXRE
ZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmplY3RzIHdpdGhvdXQgZGVzdHJ1
Y3RvcnMuCkBAIC0zMTIsMTAgKzMxNSwxMCBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWRTbG93Q2FzZShzaXplX3QpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2xvd0Nh
c2Uoc2l6ZV90KTsKIAotICAgIHZvaWQgY29sbGVjdEltcGwoSGVhcE9wZXJhdGlvbiwgdm9pZCog
c3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJTdGF0
ZSYpOworICAgIHZvaWQgY29sbGVjdEltcGwoQ29sbGVjdGlvblNjb3BlLCB2b2lkKiBzdGFja09y
aWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpSZWdpc3RlclN0YXRlJik7CiAK
ICAgICB2b2lkIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsKLSAgICB2b2lkIHdpbGxTdGFydENv
bGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSk7CisgICAgdm9pZCB3aWxsU3Rh
cnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4pOwogICAgIHZvaWQgZmx1c2hP
bGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgIHZvaWQgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIo
KTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW9uKCk7CkBAIC0zNjYsNyArMzY5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiAgICAgYm9v
bCBzd2VlcE5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jaygpOwogCi0gICAgYm9vbCBzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpIGNv
bnN0OworICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9u
U2NvcGU+IHJlcXVlc3RlZENvbGxlY3Rpb25TY29wZSkgY29uc3Q7CiAKICAgICB2b2lkIGluY3Jl
bWVudERlZmVycmFsRGVwdGgoKTsKICAgICB2b2lkIGRlY3JlbWVudERlZmVycmFsRGVwdGgoKTsK
QEAgLTM5NCw3ICszOTcsOCBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNp
dGVkOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVkVGhpc0N5Y2xlOwogICAgIAotICAg
IEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNzOworICAgIE9wdGlvbmFsPENvbGxl
Y3Rpb25TY29wZT4gbV9jb2xsZWN0aW9uU2NvcGU7CisgICAgTXV0YXRvclN0YXRlIG1fbXV0YXRv
clN0YXRlIHsgUnVubmluZyB9OwogICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRh
YmxlOwogICAgIE1hcmtlZFNwYWNlIG1fb2JqZWN0U3BhY2U7CiAgICAgR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXQ8QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwy
MSArNDUsMTYgQEAgaW5saW5lIGJvb2wgSGVhcDo6c2hvdWxkQ29sbGVjdCgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikKKyAg
ICBpZiAoY29sbGVjdGlvblNjb3BlKCkgfHwgbXV0YXRvclN0YXRlKCkgPT0gTXV0YXRvclN0YXRl
OjpIZWxwaW5nSGVhcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChPcHRpb25zOjpn
Y01heEhlYXBTaXplKCkpCiAgICAgICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xl
ID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpOwogICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVk
VGhpc0N5Y2xlID4gbV9tYXhFZGVuU2l6ZTsKIH0KIAotaW5saW5lIGJvb2wgSGVhcDo6aXNCdXN5
KCkKK2lubGluZSBib29sIEhlYXA6OmlzQ3VycmVudFRocmVhZEJ1c3koKQogewotICAgIHJldHVy
biBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb247Ci19Ci0KLWlubGluZSBib29s
IEhlYXA6OmlzQ29sbGVjdGluZygpCi17Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9PSBGdWxsQ29sbGVjdGlvbiB8fCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxl
Y3Rpb247CisgICAgcmV0dXJuIG1heUJlR0NUaHJlYWQoKSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBN
dXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwOwogfQogCiBBTFdBWVNfSU5MSU5FIEhlYXAqIEhlYXA6
OmhlYXAoY29uc3QgSGVhcENlbGwqIGNlbGwpCkBAIC03Niw3ICs3MSw3IEBAIGlubGluZSBIZWFw
KiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFsdWUgdikKIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6
OmlzTWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7Ci0gICAgQVNTRVJUKCFtYXlCZUdDVGhy
ZWFkKCkpOworICAgIEFTU0VSVChtYXlCZUdDVGhyZWFkKCkgIT0gR0NUaHJlYWRUeXBlOjpIZWxw
ZXIpOwogICAgIEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4ocmF3Q2Vs
bCk7CiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBj
ZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCShub25leGlzdGVudCkK
QEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJIZWFwT3BlcmF0aW9uLmgiCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQot
bmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikKLXsKLSAgICBz
d2l0Y2ggKG9wZXJhdGlvbikgewotICAgIGNhc2UgTm9PcGVyYXRpb246Ci0gICAgICAgIG91dC5w
cmludCgiTm9uZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBBbGxvY2F0aW9uOgotICAg
ICAgICBvdXQucHJpbnQoIkFsbG9jIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEZ1bGxD
b2xsZWN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkZ1bGwiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246Ci0gICAgICAgIG91dC5wcmludCgiRWRlbiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBBbnlDb2xsZWN0aW9uOgotICAgICAgICBvdXQucHJpbnQo
IkFueSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0KLQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkocmV2aXNpb24gMjA3NjE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5oCShub25leGlzdGVudCkK
QEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotZW51bSBIZWFwT3BlcmF0aW9uIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIEZ1
bGxDb2xsZWN0aW9uLCBFZGVuQ29sbGVjdGlvbiwgQW55Q29sbGVjdGlvbiB9OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFByaW50U3RyZWFtOwotCi12
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpIZWFwT3BlcmF0aW9uKTsK
LQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWxwaW5nSGVhcFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVscGluZ0hlYXBTY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlbHBpbmdIZWFwU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIZWFwLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWxwaW5nSGVhcFNjb3BlIHsKK3B1YmxpYzoKKyAgICBI
ZWxwaW5nSGVhcFNjb3BlKEhlYXAmIGhlYXApCisgICAgICAgIDogbV9oZWFwKGhlYXApCisgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2hlYXAubV9tdXRhdG9yU3RhdGUgPT0gTXV0YXRv
clN0YXRlOjpSdW5uaW5nKTsKKyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0YXRlID0gTXV0YXRv
clN0YXRlOjpIZWxwaW5nSGVhcDsKKyAgICB9CisgICAgCisgICAgfkhlbHBpbmdIZWFwU2NvcGUo
KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLm1fbXV0YXRvclN0YXRlID09
IE11dGF0b3JTdGF0ZTo6SGVscGluZ0hlYXApOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3Rh
dGUgPSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmc7CisgICAgfQorCitwcml2YXRlOgorICAgIEhlYXAm
IG1faGVhcDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNzYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJNYXJrZWRBbGxvY2F0b3IuaCIKIAotI2luY2x1ZGUgIkFsbG9jYXRpb25TY29wZS5oIgogI2lu
Y2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRl
ICJIZWxwaW5nSGVhcFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgpA
QCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2Fz
ZUkKICAgICAKICAgICBtX2hlYXAtPmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoZGVmZXJyYWxD
b250ZXh0KTsKICAgICAKLSAgICBBbGxvY2F0aW9uU2NvcGUgYWxsb2NhdGlvblNjb3BlKCptX2hl
YXApOworICAgIEhlbHBpbmdIZWFwU2NvcGUgaGVhbHBpbmdIZWFwKCptX2hlYXApOwogCiAgICAg
dm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0YXRvclN0YXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV1RGIHsKKwordm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE11dGF0b3JTdGF0ZSBzdGF0ZSkKK3sK
KyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmc6Cisg
ICAgICAgIG91dC5wcmludCgiUnVubmluZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBN
dXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwOgorICAgICAgICBvdXQucHJpbnQoIkhlbHBpbmdIZWFw
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0g
Y2xhc3MgTXV0YXRvclN0YXRlIHsKKyAgICAvLyBUaGUgbXV0YXRvciBpcyBydW5uaW5nIHdoZW4g
aXQncyBub3QgaW5zaWRlIGEgSGVhcCBzbG93IHBhdGguCisgICAgUnVubmluZywKKyAgICAKKyAg
ICAvLyBUaGUgbXV0YXRvciBpcyBpbiBhIEdDIHNsb3cgcGF0aCwgcGF5aW5nIHRoZSBoZWFwIHRh
eC4gSXQncyBnZW5lcmFsbHkgbm90IHNhZmUgdG8gZG8gYW55CisgICAgLy8gZ2VuZXJhbCBKUyBj
b2RlIHdoZW4gaW4gdGhpcyBzdGF0ZS4KKyAgICBIZWxwaW5nSGVhcAorfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpNdXRhdG9yU3RhdGUpOworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZp
c2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NzYsNyArNTc2LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkdW1wUmVnRXhwVHJhY2UoKTsKIAotICAgIGJvb2wgaXNDb2xsZWN0
b3JCdXN5KCkgeyByZXR1cm4gaGVhcC5pc0J1c3koKTsgfQorICAgIGJvb2wgaXNDb2xsZWN0b3JC
dXN5T25DdXJyZW50VGhyZWFkKCkgeyByZXR1cm4gaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCk7
IH0KIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgIGJvb2wgaXNJbml0aWFsaXppbmdP
YmplY3QoKSBjb25zdDsgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAkocmV2aXNpb24gMjA3NjE4
KQorKysgU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
MCwxNCArMTkwLDE0IEBAIGJvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFQK
IH0KICNlbmRpZgogCi1zdGF0aWMgVGhyZWFkU3BlY2lmaWM8Ym9vbD4qIGlzR0NUaHJlYWQ7Citz
dGF0aWMgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPj4qIGlzR0NUaHJlYWQ7
CiAKIHZvaWQgaW5pdGlhbGl6ZUdDVGhyZWFkcygpCiB7Ci0gICAgaXNHQ1RocmVhZCA9IG5ldyBU
aHJlYWRTcGVjaWZpYzxib29sPigpOworICAgIGlzR0NUaHJlYWQgPSBuZXcgVGhyZWFkU3BlY2lm
aWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPj4oKTsKIH0KIAotdm9pZCByZWdpc3RlckdDVGhyZWFk
KCkKK3ZvaWQgcmVnaXN0ZXJHQ1RocmVhZChHQ1RocmVhZFR5cGUgdHlwZSkKIHsKICAgICBpZiAo
IWlzR0NUaHJlYWQpIHsKICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGlmIHdlJ3JlIHJ1bm5pbmcg
aW4gYSBwcm9jZXNzIHRoYXQgZG9lc24ndCBjYXJlIGFib3V0CkBAIC0yMDUsNyArMjA1LDcgQEAg
dm9pZCByZWdpc3RlckdDVGhyZWFkKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICoq
aXNHQ1RocmVhZCA9IHRydWU7CisgICAgKippc0dDVGhyZWFkID0gdHlwZTsKIH0KIAogYm9vbCBp
c01haW5UaHJlYWRPckdDVGhyZWFkKCkKQEAgLTIxNiw5ICsyMTYsMTMgQEAgYm9vbCBpc01haW5U
aHJlYWRPckdDVGhyZWFkKCkKICAgICByZXR1cm4gaXNNYWluVGhyZWFkKCk7CiB9CiAKLWJvb2wg
bWF5QmVHQ1RocmVhZCgpCitPcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKQog
ewotICAgIHJldHVybiBpc0dDVGhyZWFkICYmIGlzR0NUaHJlYWQtPmlzU2V0KCkgJiYgKippc0dD
VGhyZWFkOworICAgIGlmICghaXNHQ1RocmVhZCkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgaWYgKCFpc0dDVGhyZWFkLT5pc1NldCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICByZXR1cm4gKippc0dDVGhyZWFkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMTIgQEAKICNpbmNsdWRlIDxmdW5jdGlv
bmFsPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgUHJpbnRT
dHJlYW07CisKIHR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKIAogLy8gTXVzdCBi
ZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCkBAIC02Nyw4ICs3MCwxNSBAQCBpbmxpbmUg
Ym9vbCBpc1VJVGhyZWFkKCkgeyByZXR1cm4gaXNNYWluCiAKIHZvaWQgaW5pdGlhbGl6ZUdDVGhy
ZWFkcygpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhyZWFkKCk7Ci1X
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYXlCZUdDVGhyZWFkKCk7CitlbnVtIGNsYXNzIEdDVGhy
ZWFkVHlwZSB7CisgICAgTWFpbiwKKyAgICBIZWxwZXIKK307CisKK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEdDVGhyZWFkVHlwZSk7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJlYWRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRp
b25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKTsKIAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25z
IGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KQEAg
LTg4LDYgKzk4LDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaAog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpHQ1RocmVhZFR5cGU7CiB1c2luZyBX
VEY6OmNhbGxPbk1haW5UaHJlYWQ7CiB1c2luZyBXVEY6OmNhbkFjY2Vzc1RocmVhZExvY2FsRGF0
YUZvclRocmVhZDsKIHVzaW5nIFdURjo6aXNNYWluVGhyZWFkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292215</attachid>
            <date>2016-10-20 10:07:33 -0700</date>
            <delta_ts>2016-10-20 11:25:36 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>65166</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDc2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTEwLDcgKzUxMCw2IEBACiAJCTBGODMzNUI3MTYzOUMx
RTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovOyB9OwotCQkw
Rjg2QTI2RDFENkY3OTY1MDBDQjBDOTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QTI2QzFENkY3OTYyMDBDQjBD
OTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgKi87IH07CiAJCTBGODZBMjZGMUQ2RjdCMzMwMENCMEM5
MiAvKiBHQ1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODZBMjZFMUQ2RjdCMzEwMENCMEM5MiAvKiBHQ1R5cGVNYXAuaCAqLzsgfTsKIAkJ
MEY4NkFFMjAxQzUzMTFDNTAwNkJFOEVDIC8qIEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODZBRTFGMUM1MzEx
QzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi87IH07CiAJCTBGODg1RTEx
MTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5
dGVjb2RlVXNlRGVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTU5Miw2ICs1OTEsMTEgQEAKIAkJMEZBNTgxQkExNTBFOTUyQzAwQjlBMkQ5IC8q
IERGR05vZGVGbGFncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLzsg
fTsKIAkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjgxNTBFOTUyQTAw
QjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovOyB9OwogCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEy
RDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTU4MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovOyB9
OworCQkwRkE3NjIwNDFEQjkyNDI2MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAwMURCOTI0
MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwICovOyB9OworCQkwRkE3NjIwNTFEQjky
NDI5MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVj
dGlvblNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZBNzYyMDYxREI5MjQzMTAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMjFEQjkyNDIz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLzsgfTsKKwkJMEZBNzYyMDcxREI5MjQzMzAw
QjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZBNzYyMDMxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQTc2
MjA5MURCOTI4M0UwMEI3QTJGRCAvKiBIZWxwaW5nSGVhcFNjb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwODFEQjkyODNDMDBCN0EyRkQg
LyogSGVscGluZ0hlYXBTY29wZS5oICovOyB9OwogCQkwRkE3QThFQjE4QjQxM0M4MDA1MjM3MUQg
LyogUmVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovOyB9OwogCQkwRkE3QThFQzE4
QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZBN0E4RUUxOENFNEZE
ODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3QThFRDE4Q0U0RkQ4MDA1MjM3MUQg
LyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcCAqLzsgfTsKQEAgLTYyMyw3ICs2MjcsNiBA
QAogCQkwRkI0RkI3MzFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcwMUJDODQz
MTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovOyB9OwogCQkwRkI0RkI3NDFCQzg0
MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6
eVNsb3dQYXRoLmggKi87IH07CiAJCTBGQjRGQjc1MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5
U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoQ2FsbC5oICov
OyB9OwotCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1MzAzODFEOTA0
MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi87IH07CiAJCTBGQjU0Njc3MTRGNTlC
NUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8q
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgKi87IH07CiAJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTU2LDcgKzExNTksNiBAQAogCQkyQTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0QgLyog
SlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVl
SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFy
cmllckJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCAq
LzsgfTsKIAkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0RUM5MEEx
ODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5
OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBN0E1OEVG
MTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdD
LmNwcCAqLzsgfTsKIAkJMkE4MzYzODUxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkE4MzYzODMxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
ICovOyB9OwogCQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4
MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjgzNCw3ICsyODM2
LDYgQEAKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERp
cmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCcmFuY2hEaXJl
Y3Rpb24uaDsgcGF0aCA9IGRmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEY4NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcE9wZXJhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODZBMjZFMUQ2RjdCMzEwMENCMEM5
MiAvKiBHQ1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUeXBl
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODZBRTFGMUM1MzExQzUwMDZC
RThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaDsgcGF0aCA9IGIzL0IzQ29tcHV0ZURp
dmlzaW9uTWFnaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4ODVFMTAxODQ5
QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ5dGVjb2RlVXNlRGVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yOTE1LDYgKzI5MTYsMTEgQEAKIAkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2Rl
RmxhZ3MuY3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsYWdzLmg7IHBhdGggPSBk
ZmcvREZHTm9kZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTU4MUI5
MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdOb2RlVHlwZS5oOyBwYXRoID0gZGZnL0RGR05vZGVUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTc2MjAwMURCOTI0MjMwMEI3QTJGRCAvKiBDb2xs
ZWN0aW9uU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29s
bGVjdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzYyMDEx
REI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb2xsZWN0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZBNzYyMDIxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdG9yU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMzFEQjkyNDIzMDBCN0EyRkQgLyogTXV0YXRv
clN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0b3JTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwODFEQjkyODNDMDBCN0EyRkQg
LyogSGVscGluZ0hlYXBTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
ZWxwaW5nSGVhcFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEU5
MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBN0E4RUEx
OEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBN0E4RUQxOENFNEZEODAw
NTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk1Niw3ICsyOTYyLDYgQEAKIAkJMEZCNEZCNzAxQkM4
NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGguY3BwOyBwYXRoID0gZnRsL0ZUTExhenlT
bG93UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRGQjcxMUJDODQz
MTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRGQjcyMUJDODQzMTQwMDI1Q0E1QSAv
KiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZUTExhenlTbG93UGF0aENhbGwuaDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAv
KiBBbGxvY2F0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxs
b2NhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0Njc2MTRG
NTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDUwLDcgKzM0NTUs
NiBAQAogCQkyQTRCQjdGMjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01hbmFnZWRWYWx1ZUludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNEVDOTA5MTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkE0RUM5MEExODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJCdWZmZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8q
IEhlYXBPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcE9w
ZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTdBNThFRTE4MDhBNEM0
MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEZWZlckdDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE4MzYzODMx
OEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU0NDcsNyArNTQ1MSw2IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwRkI1MzAzODFE
OTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi8sCiAJCQkJMEY5NjMwMzUxRDQx
OTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2
MUQ0MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmggKi8sCiAJCQkJMEYwNzBB
NDIxRDU0M0E4OTAwNkU3MjMyIC8qIENlbGxDb250YWluZXIuaCAqLywKQEAgLTU0NTYsNiArNTQ1
OSw4IEBACiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5jcHAg
Ki8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oICovLAog
CQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVzLmggKi8s
CisJCQkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgKi8s
CisJCQkJMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovLAog
CQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8s
CiAJCQkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmggKi8s
CiAJCQkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovLApAQCAtNTUw
MCw4ICs1NTA1LDYgQEAKIAkJCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGlu
ZXMuaCAqLywKIAkJCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNj
b3BlLmggKi8sCiAJCQkJQTUzMzlFQzgxQkI0QjQ1MTAwNTRGMDA1IC8qIEhlYXBPYnNlcnZlci5o
ICovLAotCQkJCTBGODZBMjZDMUQ2Rjc5NjIwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCAq
LywKLQkJCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICovLAog
CQkJCUE1Mzk4RkE5MUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuY3BwICovLAogCQkJ
CUE1Mzk4RkFBMUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuaCAqLywKIAkJCQkxNEY5
NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8sCkBAIC01NTE2LDYg
KzU1MTksNyBAQAogCQkJCTBGQURFNjcyMUQ0RDIzQkMwMDc2ODQ1NyAvKiBIZWFwVXRpbC5oICov
LAogCQkJCUZFN0JBNjBEMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwICovLAog
CQkJCUZFN0JBNjBFMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCAqLywKKwkJCQkw
RkE3NjIwODFEQjkyODNDMDBCN0EyRkQgLyogSGVscGluZ0hlYXBTY29wZS5oICovLAogCQkJCUMy
NUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJ
CUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJ
CQkwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLApA
QCAtNTU0MSw2ICs1NTQ1LDggQEAKIAkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFy
a2VkU3BhY2VJbmxpbmVzLmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1h
cmtTdGFjay5jcHAgKi8sCiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFj
ay5oICovLAorCQkJCTBGQTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3Bw
ICovLAorCQkJCTBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLywK
IAkJCQlBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLAogCQkJ
CUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJCQkJMTRC
QTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCkBAIC03NTAwLDYgKzc1
MDYsNyBAQAogCQkJCTBGRUM4NTAzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tVdGls
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxv
Y2tXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDYxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzQ2hlY2tTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNzFEQjkyNDMz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwODFC
REFDREFDMDA4MEZGNzQgLyogQjNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVD
ODUwQTFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURD
NDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCkBA
IC03NjAwLDcgKzc2MDcsNiBAQAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxs
RnJhbWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1
QjRGIC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RD
NTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1MzAz
OTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2Mjc2NzMyNDFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywKQEAgLTc5MDUsNiArNzkxMSw3IEBACiAJCQkJ
MkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZBNzYyMDkxREI5MjgzRTAwQjdBMkZEIC8qIEhlbHBpbmdIZWFw
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBF
cnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDJFOThEMEUxODNFMzgw
MDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkwRjBF
MTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtODA1
NCw3ICs4MDYxLDYgQEAKIAkJCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJh
dGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMzOUVDOTFCQjRCNDYwMDA1NEYwMDUg
LyogSGVhcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JFQjFEQjU4REFEMDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkyQTZGNDYy
NjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRGOTc0NDcxMzhDODUzRTAwREExQzY3IC8qIEhlYXBSb290VmlzaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkU1MjZCRTE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTgxMTcsNiArODEyMyw3IEBACiAJCQkJQTE4MTkzRTMxQjRFMENE
QjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFCOUUyM0UxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTE4MTkzRTQxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTc2MjA1MURCOTI0Mjkw
MEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3RDZF
MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMTg3QTBGMUMwMzBENkMwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk0ODEsNyArOTQ4OCw2IEBACiAJCQkJ
QTc4QTk3N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZCRTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY4NkEy
NkQxRDZGNzk2NTAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYzRTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRUMxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYyMTk2QjhGOUUwMDkx
MDUyQSAvKiBERkdQdXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjI4LDYgKzk2MzQs
NyBAQAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyMDE4N0I3Qjg2
MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZBNzYyMDQxREI5MjQyNjAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDhBN0JFRjFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTU1MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVD
YWxsRnJhbWVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVDRUVFMTQxODdGM0JBRDAwRTU1
Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTc4Miw2ICs5Nzg5
LDcgQEAKIAkJCQlEQzE3RTgxNzFDOUM5MUQ2MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzI5OUQ5RDE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc5MERENkYxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZBNzYyMDYxREI5MjQzMTAwQjdBMkZEIC8q
IE11dGF0b3JTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgzQTEwN0VDMDc1MDAx
M0U3QjIgLyogQ0xvb3BTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENTEwN0VD
Mzc2MDA0MjdBNDggLyogSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQzBFQzIx
QUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkocmV2
aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNj
b3BlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSGVh
cC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQWxsb2NhdGlvblNjb3BlIHsKLXB1Ymxp
YzoKLSAgICBBbGxvY2F0aW9uU2NvcGUoSGVhcCYgaGVhcCkKLSAgICAgICAgOiBtX2hlYXAoaGVh
cCkKLSAgICAgICAgLCBtX2xhc3RPcGVyYXRpb24obV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVz
cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xhc3RPcGVyYXRpb24gPT0gTm9PcGVyYXRpb24g
fHwgbV9sYXN0T3BlcmF0aW9uID09IEFsbG9jYXRpb24pOwotICAgICAgICBtX2hlYXAubV9vcGVy
YXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKLSAgICB9Ci0gICAgCi0gICAgfkFsbG9jYXRp
b25TY29wZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBBbGxvY2F0aW9uKTsKLSAgICAgICAgbV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9IG1fbGFzdE9wZXJhdGlvbjsKLSAgICB9Ci1wcml2YXRlOgotICAgIEhlYXAmIG1faGVhcDsK
LSAgICBIZWFwT3BlcmF0aW9uIG1fbGFzdE9wZXJhdGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25T
Y29wZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29s
bGVjdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgor
CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBjaGFyKiBjb2xsZWN0aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSBzY29wZSkKK3sKKyAg
ICBzd2l0Y2ggKHNjb3BlKSB7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46CisgICAg
ICAgIHJldHVybiAiRWRlbiI7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw6CisgICAg
ICAgIHJldHVybiAiRnVsbCI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1l
c3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
Q29sbGVjdGlvblNjb3BlIHNjb3BlKQoreworICAgIG91dC5wcmludChKU0M6OmNvbGxlY3Rpb25T
Y29wZU5hbWUoc2NvcGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgQ29sbGVjdGlvblNjb3BlIHsgRWRlbiwgRnVsbCB9
OworCitjb25zdCBjaGFyKiBjb2xsZWN0aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSk7CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJl
YW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rp
b25TY29wZSk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxNSArMTQwLDE1IEBAIEhhc2hN
YXA8Y29uc3QgY2hhciosIEdDVHlwZU1hcDxTaW1wbGVTdGEKICAgICByZXR1cm4gKnJlc3VsdDsK
IH0KIAotU2ltcGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIEhlYXBPcGVy
YXRpb24gb3BlcmF0aW9uKQorU2ltcGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5h
bWUsIENvbGxlY3Rpb25TY29wZSBzY29wZSkKIHsKLSAgICByZXR1cm4gdGltaW5nU3RhdHMoKS5h
ZGQobmFtZSwgR0NUeXBlTWFwPFNpbXBsZVN0YXRzPigpKS5pdGVyYXRvci0+dmFsdWVbb3BlcmF0
aW9uXTsKKyAgICByZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwgR0NUeXBlTWFwPFNpbXBs
ZVN0YXRzPigpKS5pdGVyYXRvci0+dmFsdWVbc2NvcGVdOwogfQogCiBjbGFzcyBUaW1pbmdTY29w
ZSB7CiBwdWJsaWM6Ci0gICAgVGltaW5nU2NvcGUoSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24sIGNv
bnN0IGNoYXIqIG5hbWUpCi0gICAgICAgIDogbV9vcGVyYXRpb24ob3BlcmF0aW9uKQorICAgIFRp
bWluZ1Njb3BlKENvbGxlY3Rpb25TY29wZSBzY29wZSwgY29uc3QgY2hhciogbmFtZSkKKyAgICAg
ICAgOiBtX3Njb3BlKHNjb3BlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKICAgICAg
ICAgaWYgKG1lYXN1cmVQaGFzZVRpbWluZygpKQpAQCAtMTU2LDE4ICsxNTYsMTggQEAgcHVibGlj
OgogICAgIH0KICAgICAKICAgICBUaW1pbmdTY29wZShIZWFwJiBoZWFwLCBjb25zdCBjaGFyKiBu
YW1lKQotICAgICAgICA6IFRpbWluZ1Njb3BlKGhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcygpLCBu
YW1lKQorICAgICAgICA6IFRpbWluZ1Njb3BlKGhlYXAuY29sbGVjdGlvblNjb3BlKCksIG5hbWUp
CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIHNldE9wZXJhdGlvbihIZWFwT3BlcmF0aW9u
IG9wZXJhdGlvbikKKyAgICB2b2lkIHNldFNjb3BlKENvbGxlY3Rpb25TY29wZSBzY29wZSkKICAg
ICB7Ci0gICAgICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9uOworICAgICAgICBtX3Njb3BlID0g
c2NvcGU7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0T3BlcmF0aW9uKEhlYXAmIGhlYXApCisg
ICAgdm9pZCBzZXRTY29wZShIZWFwJiBoZWFwKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW9u
KGhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICAgICAgc2V0U2NvcGUoaGVhcC5jb2xs
ZWN0aW9uU2NvcGUoKSk7CiAgICAgfQogICAgIAogICAgIH5UaW1pbmdTY29wZSgpCkBAIC0xNzcs
MTEgKzE3NywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkb3VibGUgdGltaW5nID0gYWZ0ZXIg
LSBtX2JlZm9yZTsKICAgICAgICAgICAgIFNpbXBsZVN0YXRzJiBzdGF0cyA9IHRpbWluZ1N0YXRz
KG1fbmFtZSwgbV9vcGVyYXRpb24pOwogICAgICAgICAgICAgc3RhdHMuYWRkKHRpbWluZyk7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbR0M6IiwgbV9vcGVyYXRpb24sICJdICIsIG1fbmFtZSwgIiB0
b29rOiAiLCB0aW1pbmcsICIgbXMgKGF2ZXJhZ2UgIiwgc3RhdHMubWVhbigpLCAiIG1zKS5cbiIp
OworICAgICAgICAgICAgZGF0YUxvZygiW0dDOiIsIG1fc2NvcGUsICJdICIsIG1fbmFtZSwgIiB0
b29rOiAiLCB0aW1pbmcsICIgbXMgKGF2ZXJhZ2UgIiwgc3RhdHMubWVhbigpLCAiIG1zKS5cbiIp
OwogICAgICAgICB9CiAgICAgfQogcHJpdmF0ZToKLSAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0
aW9uOworICAgIENvbGxlY3Rpb25TY29wZSBtX3Njb3BlOwogICAgIGRvdWJsZSBtX2JlZm9yZTsK
ICAgICBjb25zdCBjaGFyKiBtX25hbWU7CiB9OwpAQCAtMjAzLDcgKzIwMyw2IEBAIEhlYXA6Okhl
YXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4SGVhcFNpemUobV9taW5C
eXRlc1BlckN5Y2xlKQogICAgICwgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uKGZhbHNlKQogICAg
ICwgbV90b3RhbEJ5dGVzVmlzaXRlZCgwKQotICAgICwgbV9vcGVyYXRpb25JblByb2dyZXNzKE5v
T3BlcmF0aW9uKQogICAgICwgbV9vYmplY3RTcGFjZSh0aGlzKQogICAgICwgbV9leHRyYU1lbW9y
eVNpemUoMCkKICAgICAsIG1fZGVwcmVjYXRlZEV4dHJhTWVtb3J5U2l6ZSgwKQpAQCAtMjUyLDcg
KzI1MSw4IEBAIGJvb2wgSGVhcDo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB2b2lkIEhl
YXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+
ZW50cnlTY29wZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09
IE5vT3BlcmF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fbXV0YXRvclN0YXRlID09IE11dGF0b3JTdGF0ZTo6UnVubmlu
Zyk7CiAKICAgICBtX2FycmF5QnVmZmVycy5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogICAgIG1f
Y29kZUJsb2Nrcy0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTQwOCw3ICs0MDgsNyBAQCB2
b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAgICAgICAgIH0KICNlbmRp
ZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKLSAgICAgICAgaWYgKG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBpZiAobV9jb2xsZWN0aW9u
U2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgICAgICBtX29wYXF1ZVJv
b3RzLmNsZWFyKCk7CiAgICAgICAgICAgICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFya1N0YWNrKCk7
CiAgICAgICAgIH0KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIEhlYXA6OmdhdGhlclNjcmF0Y2hC
dWZmZXJSb290cyhDb25zCiB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiB7CiAgICAgVGltaW5n
U2NvcGUgdGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjpiZWdpbk1hcmtpbmciKTsKLSAgICBpZiAo
bV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX2NvbGxl
Y3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIG1fY29kZUJsb2Nr
cy0+Y2xlYXJNYXJrc0ZvckZ1bGxDb2xsZWN0aW9uKCk7CiAgICAgCiAgICAgewpAQCAtNTQ0LDcg
KzU0NCw3IEBAIHZvaWQgSGVhcDo6dmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQoKQogCiB2b2lk
IEhlYXA6OnZpc2l0U21hbGxTdHJpbmdzKCkKIHsKLSAgICBpZiAoIW1fdm0tPnNtYWxsU3RyaW5n
cy5uZWVkc1RvQmVWaXNpdGVkKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcykpCisgICAgaWYgKCFtX3Zt
LT5zbWFsbFN0cmluZ3MubmVlZHNUb0JlVmlzaXRlZCgqbV9jb2xsZWN0aW9uU2NvcGUpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3ZtLT5zbWFsbFN0cmluZ3MudmlzaXRTdHJvbmdSZWZlcmVu
Y2VzKG1fc2xvdFZpc2l0b3IpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgSGVhcDo6dXBkYXRl
T2JqZWN0Q291bnRzKGRvdWJsZSBnY1MKICAgICAgICAgZGF0YUxvZ0YoIlxuTnVtYmVyIG9mIGxp
dmUgT2JqZWN0cyBhZnRlciBHQyAlbHUsIHRvb2sgJS42ZiBzZWNzXG4iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPih2aXNpdENvdW50KSwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSAtIGdjU3RhcnRUaW1lKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0g
Q29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkID0gMDsK
IAogICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlzQ3ljbGUgPSBtX3Nsb3RWaXNpdG9yLmJ5dGVz
VmlzaXRlZCgpICsgdGhyZWFkQnl0ZXNWaXNpdGVkKCk7CkBAIC04NzEsNyArODcxLDcgQEAgdm9p
ZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKCkKICAgICAvLyBJZiBKYXZhU2NyaXB0IGlzIHJ1
bm5pbmcsIGl0J3Mgbm90IHNhZmUgdG8gZGVsZXRlIGFsbCBKYXZhU2NyaXB0IGNvZGUsIHNpbmNl
CiAgICAgLy8gd2UnbGwgZW5kIHVwIHJldHVybmluZyB0byBkZWxldGVkIGNvZGUuCiAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fdm0tPmVudHJ5U2NvcGUpOwotICAgIEFTU0VSVChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworICAgIEFTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUp
OwogCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygpOwogCkBAIC05MDgsNyArOTA4LDcgQEAgdm9p
ZCBIZWFwOjpjbGVhclVubWFya2VkRXhlY3V0YWJsZXMoKQogdm9pZCBIZWFwOjpkZWxldGVVbm1h
cmtlZENvbXBpbGVkQ29kZSgpCiB7CiAgICAgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7Ci0g
ICAgbV9jb2RlQmxvY2tzLT5kZWxldGVVbm1hcmtlZEFuZFVucmVmZXJlbmNlZChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MpOworICAgIG1fY29kZUJsb2Nrcy0+ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVy
ZW5jZWQoKm1fY29sbGVjdGlvblNjb3BlKTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRl
VW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7CiB9CiAKQEAgLTk1NSwyOSArOTU1LDI5
IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgIHN3ZWVwQWxsTG9naWNhbGx5
RW1wdHlXZWFrQmxvY2tzKCk7CiB9CiAKLXZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9u
IGNvbGxlY3Rpb25UeXBlKQordm9pZCBIZWFwOjpjb2xsZWN0KE9wdGlvbmFsPENvbGxlY3Rpb25T
Y29wZT4gc2NvcGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUo
ZmFsc2UpOwogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoY29sbGVjdGlvblR5cGUpOworICAgIGNvbGxlY3RX
aXRob3V0QW55U3dlZXAoc2NvcGUpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xs
ZWN0V2l0aG91dEFueVN3ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCitORVZFUl9J
TkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rp
b25TY29wZT4gc2NvcGUpCiB7CiAgICAgdm9pZCogc3RhY2tUb3A7CiAgICAgQUxMT0NBVEVfQU5E
X0dFVF9SRUdJU1RFUl9TVEFURShyZWdpc3RlcnMpOwogCi0gICAgY29sbGVjdEltcGwoY29sbGVj
dGlvblR5cGUsIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3RhY2tUb3AsIHJl
Z2lzdGVycyk7CisgICAgY29sbGVjdEltcGwoc2NvcGUsIHd0ZlRocmVhZERhdGEoKS5zdGFjaygp
Lm9yaWdpbigpLCAmc3RhY2tUb3AsIHJlZ2lzdGVycyk7CiAKICAgICBzYW5pdGl6ZVN0YWNrRm9y
Vk0obV92bSk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXBP
cGVyYXRpb24gY29sbGVjdGlvblR5cGUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1Rv
cCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQor
TkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoT3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiBzY29wZSwgdm9pZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhy
ZWFkczo6UmVnaXN0ZXJTdGF0ZSYgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIFRpbWluZ1Njb3BlIGNv
bGxlY3RJbXBsVGltaW5nU2NvcGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCIp
OworICAgIFRpbWluZ1Njb3BlIGNvbGxlY3RJbXBsVGltaW5nU2NvcGUoc2NvcGUsICJIZWFwOjpj
b2xsZWN0SW1wbCIpOwogICAgIAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAg
ZGF0YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CkBAIC05OTEsNyArOTkx
LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIAogICAg
IGRvdWJsZSBnY1N0YXJ0VGltZTsKICAgICB7Ci0gICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGlt
aW5nU2NvcGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCBiZWZvcmUgbWFya1Jv
b3RzIik7CisgICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGltaW5nU2NvcGUoc2NvcGUsICJIZWFw
Ojpjb2xsZWN0SW1wbCBiZWZvcmUgbWFya1Jvb3RzIik7CiAKICAgICAgICAgaWYgKHZtKCktPnR5
cGVQcm9maWxlcigpKSB7CiAgICAgICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhp
cyk7CkBAIC0xMDExLDEzICsxMDExLDEzIEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxl
Y3RJbXBsKEhlYXAKICAgICAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICAgICAgQVNT
RVJUKG1faXNTYWZlVG9Db2xsZWN0KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRp
b25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
Y29sbGVjdGlvblNjb3BlKTsKIAogICAgICAgICBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0g
ICAgICAgIHdpbGxTdGFydENvbGxlY3Rpb24oY29sbGVjdGlvblR5cGUpOworICAgICAgICB3aWxs
U3RhcnRDb2xsZWN0aW9uKHNjb3BlKTsKICAgICAgICAgCi0gICAgICAgIGNvbGxlY3RJbXBsVGlt
aW5nU2NvcGUuc2V0T3BlcmF0aW9uKCp0aGlzKTsKLSAgICAgICAgZWFybHlUaW1pbmdTY29wZS5z
ZXRPcGVyYXRpb24oKnRoaXMpOworICAgICAgICBjb2xsZWN0SW1wbFRpbWluZ1Njb3BlLnNldFNj
b3BlKCp0aGlzKTsKKyAgICAgICAgZWFybHlUaW1pbmdTY29wZS5zZXRTY29wZSgqdGhpcyk7CiAK
ICAgICAgICAgZ2NTdGFydFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OwogICAgICAgICBpZiAobV92ZXJpZmllcikgewpAQCAtMTEwMywyMiArMTEwMywyMiBAQCB2b2lk
IEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgSGVhcDo6
d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQordm9pZCBI
ZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUp
CiB7CiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgIGRhdGFMb2coIj0+ICIpOwog
ICAgIAotICAgIGlmIChzaG91bGREb0Z1bGxDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKSkgewot
ICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBGdWxsQ29sbGVjdGlvbjsKKyAgICBpZiAo
c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihzY29wZSkpIHsKKyAgICAgICAgbV9jb2xsZWN0aW9uU2Nv
cGUgPSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw7CiAgICAgICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVj
dGlvbiA9IGZhbHNlOwogICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgICAg
IGRhdGFMb2coIkZ1bGxDb2xsZWN0aW9uLCAiKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPSBFZGVuQ29sbGVjdGlvbjsKKyAgICAgICAgbV9jb2xsZWN0aW9u
U2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkVkZW47CiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dH
QygpKQogICAgICAgICAgICAgZGF0YUxvZygiRWRlbkNvbGxlY3Rpb24sICIpOwogICAgIH0KLSAg
ICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgaWYg
KG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgewogICAgICAgICBt
X3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVBZnRlckxhc3RDb2xsZWN0ICsgbV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICAgICAgbV9leHRyYU1lbW9yeVNpemUgPSAwOwog
ICAgICAgICBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUgPSAwOwpAQCAtMTEyOSw3ICsxMTI5
LDcgQEAgdm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKEhlYXBPcGVyYQogICAgICAgICBp
ZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKICAgICAgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2Fs
bGJhY2stPndpbGxDb2xsZWN0KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbik7CisgICAgICAgIEFTU0VSVChtX2Nv
bGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0Y2lvblNjb3BlOjpFZGVuKTsKICAgICAgICAgbV9zaXpl
QmVmb3JlTGFzdEVkZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNB
bGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgfQogCkBAIC0xMTQ3LDcgKzExNDcsNyBAQCB2b2lkIEhl
YXA6OmZsdXNoT2xkU3RydWN0dXJlSURUYWJsZXMoKQogCiB2b2lkIEhlYXA6OmZsdXNoV3JpdGVC
YXJyaWVyQnVmZmVyKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5D
b2xsZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29w
ZTo6RWRlbikgewogICAgICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5mbHVzaCgqdGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIEhlYXA6OnJl
YXBXZWFrSGFuZGxlcygpCiAKIHZvaWQgSGVhcDo6cHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dD
TWFwcygpCiB7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBGdWxsQ29sbGVjdGlv
bikKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgIT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQog
ICAgICAgICByZXR1cm47CiAgICAgZm9yIChhdXRvJiBwcnVuZUNhbGxiYWNrIDogbV93ZWFrR0NN
YXBzLnZhbHVlcygpKQogICAgICAgICBwcnVuZUNhbGxiYWNrKCk7CkBAIC0xMTk1LDcgKzExOTUs
NyBAQCB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKIAogdm9pZCBIZWFw
Ojpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKQogewotICAgIGlmIChtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0g
Q29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGlmICghbV9sb2dpY2FsbHlFbXB0eVdl
YWtCbG9ja3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9pbmRleE9mTmV4dExvZ2ljYWxseUVt
cHR5V2Vha0Jsb2NrVG9Td2VlcCA9IDA7CiAgICAgfQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgdm9p
ZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhI
ZWFwU2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkK
ICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwogCi0gICAgaWYgKG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlmIChtX2NvbGxl
Y3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgLy8gVG8gYXZv
aWQgcGF0aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZlcnkgbGFyZ2UgaGVh
cHMsIHdlIHNldAogICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGltaXQgYmFzZWQgb24g
dGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCiAgICAgICAgIC8vIGZpeGVkIG1p
bmltdW0uCkBAIC0xMjk4LDggKzEyOTgsOCBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25M
aW1pdHMoKQogdm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnY1N0YXJ0VGlt
ZSkKIHsKICAgICBkb3VibGUgZ2NFbmRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKLSAgICBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fb3BlcmF0aW9uSW5Qcm9n
cmVzczsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQor
ICAgIENvbGxlY3Rpb25TY29wZSBzY29wZSA9ICptX2NvbGxlY3Rpb25TY29wZTsKKyAgICBpZiAo
c2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2xhc3RGdWxsR0NMZW5n
dGggPSBnY0VuZFRpbWUgLSBnY1N0YXJ0VGltZTsKICAgICBlbHNlCiAgICAgICAgIG1fbGFzdEVk
ZW5HQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1lOwpAQCAtMTMyMiwxMSArMTMyMiwx
MSBAQCB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiAgICAgICAgIHJl
bW92ZURlYWRIZWFwU25hcHNob3ROb2RlcygqaGVhcFByb2ZpbGVyKTsKICAgICB9CiAKLSAgICBS
RUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24gfHwg
bV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKTsKLSAgICBtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2NvbGxlY3Rp
b25TY29wZSk7CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBOdWxsb3B0OwogCiAgICAgZm9yIChh
dXRvKiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+ZGlkR2FyYmFn
ZUNvbGxlY3Qob3BlcmF0aW9uKTsKKyAgICAgICAgb2JzZXJ2ZXItPmRpZEdhcmJhZ2VDb2xsZWN0
KHNjb3BlKTsKIH0KIAogdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVhZHMoKQpAQCAtMTM4
OCw3ICsxMzg4LDcgQEAgYm9vbCBIZWFwOjppc1ZhbGlkQWxsb2NhdGlvbihzaXplX3QpCiAgICAg
aWYgKCFpc1ZhbGlkVGhyZWFkU3RhdGUobV92bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pCisgICAgaWYgKGlz
Q3VycmVudFRocmVhZEJ1c3koKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTQ2NSwyNCArMTQ2NSwxNCBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVC
YXJyaWVyQnVmZmVyKEpTQ2VsCiAgICAgbV93cml0ZUJhcnJpZXJCdWZmZXIuYWRkKGNlbGwpOwog
fQogCi1ib29sIEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1
ZXN0ZWRDb2xsZWN0aW9uVHlwZSkgY29uc3QKK2Jvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVj
dGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKSBjb25zdAogewogICAgIGlmICgh
T3B0aW9uczo6dXNlR2VuZXJhdGlvbmFsR0MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBzd2l0Y2ggKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7Ci0gICAgY2FzZSBFZGVuQ29sbGVj
dGlvbjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKKyAgICBpZiAoIXNj
b3BlKQogICAgICAgICByZXR1cm4gbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICpzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw7
CiB9CiAKIHZvaWQgSGVhcDo6YWRkTG9naWNhbGx5RW1wdHlXZWFrQmxvY2soV2Vha0Jsb2NrKiBi
bG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwNzYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MjIsMTcgKzIyLDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgi
CisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFj
ay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgotI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24u
aCIKICNpbmNsdWRlICJMaXN0YWJsZUhhbmRsZXIuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tN
YXJrZXIuaCIKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRC
bG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiTWFya2VkU3Bh
Y2UuaCIKKyNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAj
aW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCkBA
IC00OCw3ICs0OSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBBbGxvY2F0aW9uU2Nv
cGU7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBHQ0RlZmVy
cmFsQ29udGV4dDsKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9m
aWxlcjsKIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIEhlYXBWZXJpZmllcjsKK2NsYXNz
IEhlbHBpbmdIZWFwU2NvcGU7CiBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CiBjbGFzcyBKSVRT
dHViUm91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwpAQCAtMTM5LDExICsxNDAsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoSGVhcE9ic2VydmVyKiBvYnNlcnZlcikg
eyBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIpOyB9CiAgICAgdm9pZCByZW1vdmVPYnNlcnZl
cihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KG9ic2Vy
dmVyKTsgfQogCi0gICAgLy8gdHJ1ZSBpZiBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCi0gICAg
Ym9vbCBpc0NvbGxlY3RpbmcoKTsKLSAgICBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbkluUHJvZ3Jl
c3MoKSB7IHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7IH0KLSAgICAvLyB0cnVlIGlmIGFu
IGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwotICAgIGJvb2wgaXNCdXN5
KCk7CisgICAgTXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0
YXRvclN0YXRlOyB9CisgICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBjb2xsZWN0aW9uU2Nv
cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsgfQorCisgICAgLy8gV2UncmUg
YWx3YXlzIGJ1c3kgb24gdGhlIGNvbGxlY3Rpb24gdGhyZWFkcy4gT24gdGhlIG1haW4gdGhyZWFk
LCB0aGlzIHJldHVybnMgdHJ1ZSBpZiB3ZSdyZQorICAgIC8vIGhlbHBpbmcgaGVhcC4KKyAgICBi
b29sIGlzQ3VycmVudFRocmVhZEJ1c3koKTsKKyAgICAKICAgICBNYXJrZWRTcGFjZTo6U3Vic3Bh
Y2UmIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX29iamVj
dFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCk7IH0KICAgICBNYXJr
ZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0RGVzdHJ1Y3RvcigpIHsgcmV0dXJu
IG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aERlc3RydWN0b3IoKTsgfQogICAg
IE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCkgeyByZXR1
cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvckF1eGlsaWFyeURhdGEoKTsgfQpAQCAtMTcxLDcg
KzE3NCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBbGxH
YXJiYWdlKCk7CiAKICAgICBib29sIHNob3VsZENvbGxlY3QoKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSA9IEFueUNvbGxl
Y3Rpb24pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdChPcHRpb25hbDxDb2xs
ZWN0aW9uU2NvcGU+ID0gTnVsbG9wdCk7CiAgICAgYm9vbCBjb2xsZWN0SWZOZWNlc3NhcnlPckRl
ZmVyKEdDRGVmZXJyYWxDb250ZXh0KiA9IG51bGxwdHIpOyAvLyBSZXR1cm5zIHRydWUgaWYgaXQg
ZGlkIGNvbGxlY3QuCiAgICAgdm9pZCBjb2xsZWN0QWNjb3JkaW5nVG9EZWZlckdDUHJvYmFiaWxp
dHkoKTsKIApAQCAtMjY4LDcgKzI3MSw2IEBAIHB1YmxpYzoKICAgICBjb25zdCB1bnNpZ25lZCog
YWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuICZtX2JhcnJpZXJUaHJl
c2hvbGQ7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNjb3BlOwog
ICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIGNsYXNzIERlZmVyR0M7CiAg
ICAgZnJpZW5kIGNsYXNzIERlZmVyR0NGb3JBV2hpbGU7CkBAIC0yNzgsNiArMjgwLDcgQEAgcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgSGFuZGxlU2V0OwogICAgIGZyaWVuZCBjbGFzcyBIZWFw
VXRpbDsKICAgICBmcmllbmQgY2xhc3MgSGVhcFZlcmlmaWVyOworICAgIGZyaWVuZCBjbGFzcyBI
ZWxwaW5nSGVhcFNjb3BlOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViUm91dGluZTsKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRTcGFjZTsKQEAgLTI5Myw3ICsyOTYsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0
Kik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChI
ZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0V2l0
aG91dEFueVN3ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9u
KTsKKyAgICB2b2lkIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoT3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiA9IE51bGxvcHQpOwogCiAgICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXpl
X3QpOyAvLyBGb3IgdXNlIHdpdGggb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzLgogICAgIHZvaWQq
IGFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVj
dHMgd2l0aG91dCBkZXN0cnVjdG9ycy4KQEAgLTMxMiwxMCArMzE1LDEwIEBAIHByaXZhdGU6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dD
YXNlKHNpemVfdCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXByZWNhdGVkUmVwb3J0
RXh0cmFNZW1vcnlTbG93Q2FzZShzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0SW1wbChIZWFw
T3BlcmF0aW9uLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJl
YWRzOjpSZWdpc3RlclN0YXRlJik7CisgICAgdm9pZCBjb2xsZWN0SW1wbChDb2xsZWN0aW9uU2Nv
cGUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJl
Z2lzdGVyU3RhdGUmKTsKIAogICAgIHZvaWQgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAg
IHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKTsK
KyAgICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPik7
CiAgICAgdm9pZCBmbHVzaE9sZFN0cnVjdHVyZUlEVGFibGVzKCk7CiAgICAgdm9pZCBmbHVzaFdy
aXRlQmFycmllckJ1ZmZlcigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpb24oKTsKQEAgLTM2Niw3
ICszNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtC
bG9ja3MoKTsKICAgICBib29sIHN3ZWVwTmV4dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKCk7CiAK
LSAgICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRD
b2xsZWN0aW9uVHlwZSkgY29uc3Q7CisgICAgYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKE9w
dGlvbmFsPENvbGxlY3Rpb25TY29wZT4gcmVxdWVzdGVkQ29sbGVjdGlvblNjb3BlKSBjb25zdDsK
IAogICAgIHZvaWQgaW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAgIHZvaWQgZGVjcmVtZW50
RGVmZXJyYWxEZXB0aCgpOwpAQCAtMzk0LDcgKzM5Nyw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90
IG1fdG90YWxCeXRlc1Zpc2l0ZWQ7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlz
Q3ljbGU7CiAgICAgCi0gICAgSGVhcE9wZXJhdGlvbiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7Cisg
ICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX2NvbGxlY3Rpb25TY29wZTsKKyAgICBNdXRh
dG9yU3RhdGUgbV9tdXRhdG9yU3RhdGUgeyBSdW5uaW5nIH07CiAgICAgU3RydWN0dXJlSURUYWJs
ZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKICAg
ICBHQ0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1ZmZlcnM7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlzaW9uIDIw
NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDIxICs0NSwxNiBAQCBpbmxpbmUgYm9vbCBIZWFwOjpzaG91bGRDb2xs
ZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9
IE5vT3BlcmF0aW9uKQorICAgIGlmIChjb2xsZWN0aW9uU2NvcGUoKSB8fCBtdXRhdG9yU3RhdGUo
KSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKICAgICAgICAgcmV0dXJuIG1fYnl0ZXNB
bGxvY2F0ZWRUaGlzQ3ljbGUgPiBPcHRpb25zOjpnY01heEhlYXBTaXplKCk7CiAgICAgcmV0dXJu
IG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgPiBtX21heEVkZW5TaXplOwogfQogCi1pbmxpbmUg
Ym9vbCBIZWFwOjppc0J1c3koKQoraW5saW5lIGJvb2wgSGVhcDo6aXNDdXJyZW50VGhyZWFkQnVz
eSgpCiB7Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbjsK
LX0KLQotaW5saW5lIGJvb2wgSGVhcDo6aXNDb2xsZWN0aW5nKCkKLXsKLSAgICByZXR1cm4gbV9v
cGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uIHx8IG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBFZGVuQ29sbGVjdGlvbjsKKyAgICByZXR1cm4gbWF5QmVHQ1RocmVhZCgpIHx8IG11
dGF0b3JTdGF0ZSgpID09IE11dGF0b3JTdGF0ZTo6SGVscGluZ0hlYXA7CiB9CiAKIEFMV0FZU19J
TkxJTkUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBIZWFwQ2VsbCogY2VsbCkKQEAgLTc2LDcgKzcx
LDcgQEAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSlNWYWx1ZSB2KQogCiBBTFdBWVNf
SU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcmF3Q2VsbCkKIHsKLSAgICBB
U1NFUlQoIW1heUJlR0NUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1heUJlR0NUaHJlYWQoKSAhPSBH
Q1RocmVhZFR5cGU6OkhlbHBlcik7CiAgICAgSGVhcENlbGwqIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8
SGVhcENlbGwqPihyYXdDZWxsKTsKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2VkKCk7CkBAIC0x
NjEsNyArMTU2LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlBbGxvYwog
aW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKENlbGxTdGF0ZSBvbGRT
dGF0ZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBkb3VibGUtY291
bnQgdGhlIGV4dHJhIG1lbW9yeSB0aGF0IHdhcyByZXBvcnRlZCBpbiBwcmV2aW91cyBjb2xsZWN0
aW9ucy4KLSAgICBpZiAob3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uICYm
IG9sZFN0YXRlID09IENlbGxTdGF0ZTo6T2xkR3JleSkKKyAgICBpZiAoY29sbGVjdGlvblNjb3Bl
KCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuICYmIG9sZFN0YXRlID09IENlbGxTdGF0ZTo6T2xk
R3JleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2l6ZV90KiBjb3VudGVyID0gJm1fZXh0cmFN
ZW1vcnlTaXplOwpAQCAtMTc3LDcgKzE3Miw3IEBAIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4
dHJhTWVtb3J5VmlzaXQKIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dGVybmFsTWVtb3J5Vmlz
aXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQogewogICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gZG91YmxlLWNvdW50IHRoZSBleHRlcm5hbCBtZW1vcnkgdGhhdCB3YXMgcmVwb3J0
ZWQgaW4gcHJldmlvdXMgY29sbGVjdGlvbnMuCi0gICAgaWYgKG9wZXJhdGlvbkluUHJvZ3Jlc3Mo
KSA9PSBFZGVuQ29sbGVjdGlvbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCisg
ICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiAmJiBvbGRT
dGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNpemVf
dCogY291bnRlciA9ICZtX2V4dGVybmFsTWVtb3J5U2l6ZTsKQEAgLTM3Miw3ICszNjcsNyBAQCBp
bmxpbmUgYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlCiAKIGlubGluZSB2b2lkIEhl
YXA6OmNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSgpCiB7Ci0gICAgaWYgKGlz
RGVmZXJyZWQoKSB8fCAhbV9pc1NhZmVUb0NvbGxlY3QgfHwgbV9vcGVyYXRpb25JblByb2dyZXNz
ICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChpc0RlZmVycmVkKCkgfHwgIW1faXNTYWZlVG9Db2xs
ZWN0IHx8IGNvbGxlY3Rpb25TY29wZSgpIHx8IG11dGF0b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0
ZTo6UnVubmluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJhbmRvbU51bWJlcigpIDwg
T3B0aW9uczo6ZGVmZXJHQ1Byb2JhYmlsaXR5KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSGVhcE9wZXJhdGlvbi5oIgotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5h
bWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCi17Ci0gICAgc3dp
dGNoIChvcGVyYXRpb24pIHsKLSAgICBjYXNlIE5vT3BlcmF0aW9uOgotICAgICAgICBvdXQucHJp
bnQoIk5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQWxsb2NhdGlvbjoKLSAgICAg
ICAgb3V0LnByaW50KCJBbGxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGdWxsQ29s
bGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJGdWxsIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkVkZW4iKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJB
bnkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotCi0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWVudW0gSGVhcE9wZXJhdGlvbiB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBGdWxs
Q29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rpb24sIEFueUNvbGxlY3Rpb24gfTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SGVhcE9wZXJhdGlvbik7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywyNCArNDMsNiBA
QCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1CiAgICAgbV9jeWNsZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4obV9udW1iZXJPZkN5Y2xlcyk7CiB9CiAKLWNv
bnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6Y29sbGVjdGlvblR5cGVOYW1lKEhlYXBPcGVyYXRpb24g
dHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE5vT3BlcmF0aW9uOgotICAg
ICAgICByZXR1cm4gIk5vT3BlcmF0aW9uIjsKLSAgICBjYXNlIEFueUNvbGxlY3Rpb246Ci0gICAg
ICAgIHJldHVybiAiQW55Q29sbGVjdGlvbiI7Ci0gICAgY2FzZSBBbGxvY2F0aW9uOgotICAgICAg
ICByZXR1cm4gIkFsbG9jYXRpb24iOwotICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246Ci0gICAgICAg
IHJldHVybiAiRWRlbkNvbGxlY3Rpb24iOwotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246Ci0gICAg
ICAgIHJldHVybiAiRnVsbENvbGxlY3Rpb24iOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOyAvLyBTaWxlbmNpbmcgYSBjb21waWxl
ciB3YXJuaW5nLgotfQotCiBjb25zdCBjaGFyKiBIZWFwVmVyaWZpZXI6OnBoYXNlTmFtZShIZWFw
VmVyaWZpZXI6OlBoYXNlIHBoYXNlKQogewogICAgIHN3aXRjaCAocGhhc2UpIHsKQEAgLTgxLDcg
KzYzLDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmluaXRpYWxpemVHQ0N5Y2xlKCkKIHsKICAgICBI
ZWFwKiBoZWFwID0gbV9oZWFwOwogICAgIGluY3JlbWVudEN5Y2xlKCk7Ci0gICAgY3VycmVudEN5
Y2xlKCkuY29sbGVjdGlvblR5cGUgPSBoZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCk7CisgICAg
Y3VycmVudEN5Y2xlKCkuc2NvcGUgPSAqaGVhcC0+Y29sbGVjdGlvblNjb3BlKCk7CiB9CiAKIHN0
cnVjdCBHYXRoZXJMaXZlT2JqRnVuY3RvciA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3IgewpA
QCAtMTk1LDcgKzE3Nyw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpyZXBvcnRPYmplY3QoTGl2ZU9i
amUKIAogICAgIGlmIChvYmpEYXRhLmlzQ29uZmlybWVkRGVhZCkgewogICAgICAgICBkYXRhTG9n
RigiRk9VTkQgZGVhZCBvYmogJXAgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwKLSAgICAgICAg
ICAgIG9iaiwgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCksIGxpc3QubmFt
ZSk7CisgICAgICAgICAgICBvYmosIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29wZU5hbWUoY3lj
bGUuc2NvcGUoKSksIGxpc3QubmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIw
Niw3ICsxODgsNyBAQCB2b2lkIEhlYXBWZXJpZmllcjo6cmVwb3J0T2JqZWN0KExpdmVPYmplCiAg
ICAgZGF0YUxvZ0YoIkZPVU5EIG9iaiAlcCB0eXBlICclcycgYnV0dGVyZmx5ICVwIChiYXNlICVw
KSBpbiBHQ1slZF0gJXMgbGlzdCAnJXMnXG4iLAogICAgICAgICBvYmosIHN0cnVjdHVyZS0+Y2xh
c3NJbmZvKCktPmNsYXNzTmFtZSwKICAgICAgICAgYnV0dGVyZmx5LCBidXR0ZXJmbHlCYXNlLAot
ICAgICAgICBjeWNsZUluZGV4LCBjeWNsZS5jb2xsZWN0aW9uVHlwZU5hbWUoKSwgbGlzdC5uYW1l
KTsKKyAgICAgICAgY3ljbGVJbmRleCwgY29sbGVjdGlvblNjb3BlTmFtZShjeWNsZS5zY29wZSgp
KSwgbGlzdC5uYW1lKTsKIH0KIAogdm9pZCBIZWFwVmVyaWZpZXI6OmNoZWNrSWZSZWNvcmRlZChK
U09iamVjdCogb2JqKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlm
aWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlm
aWVyLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBWZXJpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAg
ICAvLyBvYmplY3Qgd2FzIGluIGFueSBvZiB0aG9zZSBsaXN0cy4KICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNoZWNrSWZSZWNvcmRlZChKU09iamVjdCopOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbGxlY3Rpb25UeXBlTmFtZShIZWFwT3BlcmF0aW9uKTsKICAgICBzdGF0aWMgY29u
c3QgY2hhciogcGhhc2VOYW1lKFBoYXNlKTsKIAogcHJpdmF0ZToKQEAgLTY1LDE0ICs2NCw5IEBA
IHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIEhlYXBPcGVyYXRpb24g
Y29sbGVjdGlvblR5cGU7CisgICAgICAgIENvbGxlY3Rpb25TY29wZSBzY29wZTsKICAgICAgICAg
TGl2ZU9iamVjdExpc3QgYmVmb3JlOwogICAgICAgICBMaXZlT2JqZWN0TGlzdCBhZnRlcjsKLQot
ICAgICAgICBjb25zdCBjaGFyKiBjb2xsZWN0aW9uVHlwZU5hbWUoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gSGVhcFZlcmlmaWVyOjpjb2xsZWN0aW9uVHlwZU5hbWUoY29s
bGVjdGlvblR5cGUpOwotICAgICAgICB9CiAgICAgfTsKIAogICAgIHZvaWQgaW5jcmVtZW50Q3lj
bGUoKSB7IG1fY3VycmVudEN5Y2xlID0gKG1fY3VycmVudEN5Y2xlICsgMSkgJSBtX251bWJlck9m
Q3ljbGVzOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWxwaW5nSGVhcFNj
b3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVscGluZ0hl
YXBTY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
bHBpbmdIZWFwU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIZWFwLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBIZWxwaW5nSGVhcFNjb3BlIHsKK3B1YmxpYzoKKyAgICBIZWxwaW5nSGVhcFNj
b3BlKEhlYXAmIGhlYXApCisgICAgICAgIDogbV9oZWFwKGhlYXApCisgICAgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX2hlYXAubV9tdXRhdG9yU3RhdGUgPT0gTXV0YXRvclN0YXRlOjpSdW5u
aW5nKTsKKyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0YXRlID0gTXV0YXRvclN0YXRlOjpIZWxw
aW5nSGVhcDsKKyAgICB9CisgICAgCisgICAgfkhlbHBpbmdIZWFwU2NvcGUoKQorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLm1fbXV0YXRvclN0YXRlID09IE11dGF0b3JTdGF0
ZTo6SGVscGluZ0hlYXApOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3RhdGUgPSBNdXRhdG9y
U3RhdGU6OlJ1bm5pbmc7CisgICAgfQorCitwcml2YXRlOgorICAgIEhlYXAmIG1faGVhcDsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9MYXJnZUFsbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBMYXJnZUFsbG9jYXRpb246OnJlYXBXZWFrU2V0KCkKIAogdm9p
ZCBMYXJnZUFsbG9jYXRpb246OmZsaXAoKQogewotICAgIEFTU0VSVChoZWFwKCktPm9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbik7CisgICAgQVNTRVJUKGhlYXAoKS0+Y29s
bGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKICAgICBjbGVhck1hcmtl
ZCgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFs
bG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKIAotI2lu
Y2x1ZGUgIkFsbG9jYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5o
IgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWxwaW5nSGVhcFNjb3BlLmgiCiAjaW5j
bHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQqIE1h
cmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAKICAgICBtX2hlYXAtPmNvbGxl
Y3RJZk5lY2Vzc2FyeU9yRGVmZXIoZGVmZXJyYWxDb250ZXh0KTsKICAgICAKLSAgICBBbGxvY2F0
aW9uU2NvcGUgYWxsb2NhdGlvblNjb3BlKCptX2hlYXApOworICAgIEhlbHBpbmdIZWFwU2NvcGUg
aGVhbHBpbmdIZWFwKCptX2hlYXApOwogCiAgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVX
aXRob3V0Q29sbGVjdGluZygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4
LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogCiAgICAgbV9h
Y3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0FjdGl2ZVdlYWtTZXRzKTsKICAgICAKLSAgICBp
ZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAg
aWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQog
ICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0Rm9yU3dlZXAgPSBtX2xhcmdl
QWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKICAgICAgICAgbV9sYXJnZUFsbG9j
YXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gMDsKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lk
IE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKEhlYXBSb290CiAgICAgCiAgICAgbV9uZXdBY3Rp
dmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRp
b25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVj
dGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdl
YWtTZXRzLmZvckVhY2godmlzaXQpOwogfQogCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKICAgICAKICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmZv
ckVhY2godmlzaXQpOwogICAgIAotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3Mo
KSA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9
PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIG1fYWN0aXZlV2Vha1NldHMuZm9yRWFj
aCh2aXNpdCk7CiB9CiAKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzdG9w
QWxsb2NhdGluZygpCiAKIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JNYXJraW5nKCkKIHsK
LSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24p
CisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpF
ZGVuKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiA9
IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxzZQogICAgICAgICBtX2xh
cmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiA9IDA7CkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6YmVn
aW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0g
RnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAg
ICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1
cyB7CiAgICAgICAgICAgICAgICAgYWxsb2NhdG9yLmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0
aW9uKCk7CkBAIC01OTcsNyArNTk3LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkU3Bh
Y2U6OmZpbmRFbQogCiB2b2lkIE1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dlcHQoKQogewotICAg
IGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgewor
ICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRl
bikgewogICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICAgICAgWyZdIChNYXJrZWRB
bGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAg
ICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0YXRvclN0YXRlLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBNdXRhdG9yU3RhdGUgc3RhdGUpCit7CisgICAg
c3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgTXV0YXRvclN0YXRlOjpSdW5uaW5nOgorICAgICAg
ICBvdXQucHJpbnQoIlJ1bm5pbmciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTXV0YXRv
clN0YXRlOjpIZWxwaW5nSGVhcDoKKyAgICAgICAgb3V0LnByaW50KCJIZWxwaW5nSGVhcCIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NdXRhdG9yU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NdXRhdG9yU3RhdGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NdXRhdG9yU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNz
IE11dGF0b3JTdGF0ZSB7CisgICAgLy8gVGhlIG11dGF0b3IgaXMgcnVubmluZyB3aGVuIGl0J3Mg
bm90IGluc2lkZSBhIEhlYXAgc2xvdyBwYXRoLgorICAgIFJ1bm5pbmcsCisgICAgCisgICAgLy8g
VGhlIG11dGF0b3IgaXMgaW4gYSBHQyBzbG93IHBhdGgsIHBheWluZyB0aGUgaGVhcCB0YXguIEl0
J3MgZ2VuZXJhbGx5IG5vdCBzYWZlIHRvIGRvIGFueQorICAgIC8vIGdlbmVyYWwgSlMgY29kZSB3
aGVuIGluIHRoaXMgc3RhdGUuCisgICAgSGVscGluZ0hlYXAKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6TXV0YXRvclN0YXRlKTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBTbG90VmlzaXRv
cjo6flNsb3RWaXNpdG9yKCkKIAogdm9pZCBTbG90VmlzaXRvcjo6ZGlkU3RhcnRNYXJraW5nKCkK
IHsKLSAgICBpZiAoaGVhcCgpLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rp
b24pCisgICAgaWYgKGhlYXAoKS0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKQogICAgICAgICBBU1NFUlQobV9vcGFxdWVSb290cy5pc0VtcHR5KCkpOyAvLyBTaG91
bGQgaGF2ZSBtZXJnZWQgYnkgbm93LgogICAgIGVsc2UKICAgICAgICAgcmVzZXQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNTc2LDcgKzU3
Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcFJl
Z0V4cFRyYWNlKCk7CiAKLSAgICBib29sIGlzQ29sbGVjdG9yQnVzeSgpIHsgcmV0dXJuIGhlYXAu
aXNCdXN5KCk7IH0KKyAgICBib29sIGlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpIHsg
cmV0dXJuIGhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpOyB9CiAKICNpZiBFTkFCTEUoR0NfVkFM
SURBVElPTikKICAgICBib29sIGlzSW5pdGlhbGl6aW5nT2JqZWN0KCkgY29uc3Q7IApJbmRleDog
U291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvTWFpblRocmVhZC5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9XVEYvd3RmL01h
aW5UaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsMTQgKzE5MCwxNCBAQCBib29sIGNh
bkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChUCiB9CiAjZW5kaWYKIAotc3RhdGljIFRo
cmVhZFNwZWNpZmljPGJvb2w+KiBpc0dDVGhyZWFkOworc3RhdGljIFRocmVhZFNwZWNpZmljPE9w
dGlvbmFsPEdDVGhyZWFkVHlwZT4+KiBpc0dDVGhyZWFkOwogCiB2b2lkIGluaXRpYWxpemVHQ1Ro
cmVhZHMoKQogewotICAgIGlzR0NUaHJlYWQgPSBuZXcgVGhyZWFkU3BlY2lmaWM8Ym9vbD4oKTsK
KyAgICBpc0dDVGhyZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPE9wdGlvbmFsPEdDVGhyZWFkVHlw
ZT4+KCk7CiB9CiAKLXZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpCit2b2lkIHJlZ2lzdGVyR0NUaHJl
YWQoR0NUaHJlYWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKCFpc0dDVGhyZWFkKSB7CiAgICAgICAg
IC8vIFRoaXMgaGFwcGVucyBpZiB3ZSdyZSBydW5uaW5nIGluIGEgcHJvY2VzcyB0aGF0IGRvZXNu
J3QgY2FyZSBhYm91dApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqKmlzR0NUaHJlYWQgPSB0cnVlOworICAg
ICoqaXNHQ1RocmVhZCA9IHR5cGU7CiB9CiAKIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgp
CkBAIC0yMTYsOSArMjE2LDEzIEBAIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpCiAgICAg
cmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi1ib29sIG1heUJlR0NUaHJlYWQoKQorT3B0aW9u
YWw8R0NUaHJlYWRUeXBlPiBtYXlCZUdDVGhyZWFkKCkKIHsKLSAgICByZXR1cm4gaXNHQ1RocmVh
ZCAmJiBpc0dDVGhyZWFkLT5pc1NldCgpICYmICoqaXNHQ1RocmVhZDsKKyAgICBpZiAoIWlzR0NU
aHJlYWQpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIGlmICghaXNHQ1RocmVhZC0+aXNT
ZXQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuICoqaXNHQ1RocmVhZDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCShyZXZpc2lvbiAy
MDc2MTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDkgKzMzLDEyIEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxzdGRpbnQu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKK2NsYXNzIFByaW50U3RyZWFtOworCiB0eXBlZGVmIHVpbnQz
Ml90IFRocmVhZElkZW50aWZpZXI7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4g
dGhyZWFkLgpAQCAtNjcsOCArNzAsMTUgQEAgaW5saW5lIGJvb2wgaXNVSVRocmVhZCgpIHsgcmV0
dXJuIGlzTWFpbgogCiB2b2lkIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKIAotV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
bWF5QmVHQ1RocmVhZCgpOworZW51bSBjbGFzcyBHQ1RocmVhZFR5cGUgeworICAgIE1haW4sCisg
ICAgSGVscGVyCit9OworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBHQ1RocmVh
ZFR5cGUpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhyZWFkKEdDVGhy
ZWFkVHlwZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8R0NUaHJlYWRUeXBlPiBtYXlC
ZUdDVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWRPckdDVGhy
ZWFkKCk7CiAKIC8vIE5PVEU6IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZXJuYWwgdG8gdGhlIGNh
bGxPbk1haW5UaHJlYWQgaW1wbGVtZW50YXRpb24uCkBAIC04OCw2ICs5OCw3IEBAIHZvaWQgaW5p
dGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGgKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
K3VzaW5nIFdURjo6R0NUaHJlYWRUeXBlOwogdXNpbmcgV1RGOjpjYWxsT25NYWluVGhyZWFkOwog
dXNpbmcgV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQ7CiB1c2luZyBXVEY6
OmlzTWFpblRocmVhZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292227</attachid>
            <date>2016-10-20 11:25:36 -0700</date>
            <delta_ts>2016-10-20 11:44:03 -0700</delta_ts>
            <desc>maybe it&apos;s done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>75251</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDc2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTEwLDcgKzUxMCw2IEBACiAJCTBGODMzNUI3MTYzOUMx
RTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLzsgfTsKIAkJMEY4MzM1QjgxNjM5QzFFQTAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovOyB9OwotCQkw
Rjg2QTI2RDFENkY3OTY1MDBDQjBDOTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QTI2QzFENkY3OTYyMDBDQjBD
OTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgKi87IH07CiAJCTBGODZBMjZGMUQ2RjdCMzMwMENCMEM5
MiAvKiBHQ1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODZBMjZFMUQ2RjdCMzEwMENCMEM5MiAvKiBHQ1R5cGVNYXAuaCAqLzsgfTsKIAkJ
MEY4NkFFMjAxQzUzMTFDNTAwNkJFOEVDIC8qIEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODZBRTFGMUM1MzEx
QzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi87IH07CiAJCTBGODg1RTEx
MTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5
dGVjb2RlVXNlRGVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTU5Miw2ICs1OTEsMTEgQEAKIAkJMEZBNTgxQkExNTBFOTUyQzAwQjlBMkQ5IC8q
IERGR05vZGVGbGFncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLzsg
fTsKIAkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjgxNTBFOTUyQTAw
QjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovOyB9OwogCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEy
RDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTU4MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovOyB9
OworCQkwRkE3NjIwNDFEQjkyNDI2MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAwMURCOTI0
MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwICovOyB9OworCQkwRkE3NjIwNTFEQjky
NDI5MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVj
dGlvblNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZBNzYyMDYxREI5MjQzMTAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMjFEQjkyNDIz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLzsgfTsKKwkJMEZBNzYyMDcxREI5MjQzMzAw
QjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZBNzYyMDMxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQTc2
MjA5MURCOTI4M0UwMEI3QTJGRCAvKiBIZWxwaW5nSGVhcFNjb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwODFEQjkyODNDMDBCN0EyRkQg
LyogSGVscGluZ0hlYXBTY29wZS5oICovOyB9OwogCQkwRkE3QThFQjE4QjQxM0M4MDA1MjM3MUQg
LyogUmVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovOyB9OwogCQkwRkE3QThFQzE4
QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZBN0E4RUUxOENFNEZE
ODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3QThFRDE4Q0U0RkQ4MDA1MjM3MUQg
LyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcCAqLzsgfTsKQEAgLTYyMyw3ICs2MjcsNiBA
QAogCQkwRkI0RkI3MzFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcwMUJDODQz
MTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovOyB9OwogCQkwRkI0RkI3NDFCQzg0
MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6
eVNsb3dQYXRoLmggKi87IH07CiAJCTBGQjRGQjc1MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5
U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoQ2FsbC5oICov
OyB9OwotCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1MzAzODFEOTA0
MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi87IH07CiAJCTBGQjU0Njc3MTRGNTlC
NUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8q
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgKi87IH07CiAJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTU2LDcgKzExNTksNiBAQAogCQkyQTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0QgLyog
SlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVl
SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFy
cmllckJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCAq
LzsgfTsKIAkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0RUM5MEEx
ODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5
OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBN0E1OEVG
MTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdD
LmNwcCAqLzsgfTsKIAkJMkE4MzYzODUxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkE4MzYzODMxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
ICovOyB9OwogCQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4
MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjgzNCw3ICsyODM2
LDYgQEAKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI1MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERp
cmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCcmFuY2hEaXJl
Y3Rpb24uaDsgcGF0aCA9IGRmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEY4NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcE9wZXJhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODZBMjZFMUQ2RjdCMzEwMENCMEM5
MiAvKiBHQ1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUeXBl
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODZBRTFGMUM1MzExQzUwMDZC
RThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaDsgcGF0aCA9IGIzL0IzQ29tcHV0ZURp
dmlzaW9uTWFnaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4ODVFMTAxODQ5
QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ5dGVjb2RlVXNlRGVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yOTE1LDYgKzI5MTYsMTEgQEAKIAkJMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2Rl
RmxhZ3MuY3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZsYWdzLmg7IHBhdGggPSBk
ZmcvREZHTm9kZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTU4MUI5
MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdOb2RlVHlwZS5oOyBwYXRoID0gZGZnL0RGR05vZGVUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTc2MjAwMURCOTI0MjMwMEI3QTJGRCAvKiBDb2xs
ZWN0aW9uU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29s
bGVjdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzYyMDEx
REI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb2xsZWN0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZBNzYyMDIxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdG9yU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMzFEQjkyNDIzMDBCN0EyRkQgLyogTXV0YXRv
clN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0b3JTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwODFEQjkyODNDMDBCN0EyRkQg
LyogSGVscGluZ0hlYXBTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
ZWxwaW5nSGVhcFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEU5
MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBN0E4RUEx
OEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBN0E4RUQxOENFNEZEODAw
NTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk1Niw3ICsyOTYyLDYgQEAKIAkJMEZCNEZCNzAxQkM4
NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGguY3BwOyBwYXRoID0gZnRsL0ZUTExhenlT
bG93UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRGQjcxMUJDODQz
MTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjRGQjcyMUJDODQzMTQwMDI1Q0E1QSAv
KiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZUTExhenlTbG93UGF0aENhbGwuaDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGhDYWxsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAv
KiBBbGxvY2F0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxs
b2NhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0Njc2MTRG
NTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RPZkdldHRpbmdBVmFs
dWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDUwLDcgKzM0NTUs
NiBAQAogCQkyQTRCQjdGMjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01hbmFnZWRWYWx1ZUludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNEVDOTA5MTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkE0RUM5MEExODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJCdWZmZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8q
IEhlYXBPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcE9w
ZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTdBNThFRTE4MDhBNEM0
MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEZWZlckdDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE4MzYzODMx
OEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU0NDcsNyArNTQ1MSw2IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwRkI1MzAzODFE
OTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi8sCiAJCQkJMEY5NjMwMzUxRDQx
OTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2
MUQ0MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmggKi8sCiAJCQkJMEYwNzBB
NDIxRDU0M0E4OTAwNkU3MjMyIC8qIENlbGxDb250YWluZXIuaCAqLywKQEAgLTU0NTYsNiArNTQ1
OSw4IEBACiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5jcHAg
Ki8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oICovLAog
CQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVzLmggKi8s
CisJCQkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgKi8s
CisJCQkJMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovLAog
CQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8s
CiAJCQkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmggKi8s
CiAJCQkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovLApAQCAtNTUw
MCw4ICs1NTA1LDYgQEAKIAkJCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGlu
ZXMuaCAqLywKIAkJCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNj
b3BlLmggKi8sCiAJCQkJQTUzMzlFQzgxQkI0QjQ1MTAwNTRGMDA1IC8qIEhlYXBPYnNlcnZlci5o
ICovLAotCQkJCTBGODZBMjZDMUQ2Rjc5NjIwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCAq
LywKLQkJCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICovLAog
CQkJCUE1Mzk4RkE5MUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuY3BwICovLAogCQkJ
CUE1Mzk4RkFBMUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuaCAqLywKIAkJCQkxNEY5
NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8sCkBAIC01NTE2LDYg
KzU1MTksNyBAQAogCQkJCTBGQURFNjcyMUQ0RDIzQkMwMDc2ODQ1NyAvKiBIZWFwVXRpbC5oICov
LAogCQkJCUZFN0JBNjBEMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwICovLAog
CQkJCUZFN0JBNjBFMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCAqLywKKwkJCQkw
RkE3NjIwODFEQjkyODNDMDBCN0EyRkQgLyogSGVscGluZ0hlYXBTY29wZS5oICovLAogCQkJCUMy
NUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJ
CUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJ
CQkwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLApA
QCAtNTU0MSw2ICs1NTQ1LDggQEAKIAkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFy
a2VkU3BhY2VJbmxpbmVzLmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1h
cmtTdGFjay5jcHAgKi8sCiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFj
ay5oICovLAorCQkJCTBGQTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3Bw
ICovLAorCQkJCTBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLywK
IAkJCQlBRERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLAogCQkJ
CUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJCQkJMTRC
QTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCkBAIC03NTAwLDYgKzc1
MDYsNyBAQAogCQkJCTBGRUM4NTAzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tVdGls
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxv
Y2tXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDYxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzQ2hlY2tTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNzFEQjkyNDMz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwODFC
REFDREFDMDA4MEZGNzQgLyogQjNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVD
ODUwQTFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURD
NDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCkBA
IC03NjAwLDcgKzc2MDcsNiBAQAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxs
RnJhbWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1
QjRGIC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RD
NTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1MzAz
OTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2Mjc2NzMyNDFCNjgwQzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8q
IENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywKQEAgLTc5MDUsNiArNzkxMSw3IEBACiAJCQkJ
MkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZBNzYyMDkxREI5MjgzRTAwQjdBMkZEIC8qIEhlbHBpbmdIZWFw
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBF
cnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDJFOThEMEUxODNFMzgw
MDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkwRjBF
MTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtODA1
NCw3ICs4MDYxLDYgQEAKIAkJCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJh
dGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMzOUVDOTFCQjRCNDYwMDA1NEYwMDUg
LyogSGVhcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JFQjFEQjU4REFEMDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkyQTZGNDYy
NjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRGOTc0NDcxMzhDODUzRTAwREExQzY3IC8qIEhlYXBSb290VmlzaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkU1MjZCRTE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTgxMTcsNiArODEyMyw3IEBACiAJCQkJQTE4MTkzRTMxQjRFMENE
QjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFCOUUyM0UxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTE4MTkzRTQxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTc2MjA1MURCOTI0Mjkw
MEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTg3RDZF
MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMTg3QTBGMUMwMzBENkMwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk0ODEsNyArOTQ4OCw2IEBACiAJCQkJ
QTc4QTk3N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZCRTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEY4NkEy
NkQxRDZGNzk2NTAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYzRTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRUMxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVk
SGVhcExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYyMTk2QjhGOUUwMDkx
MDUyQSAvKiBERkdQdXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjI4LDYgKzk2MzQs
NyBAQAogCQkJCUE1OEUzNTkxMTg2MERFQ0YwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxM0U1Q0ExODVGOTYyNDAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTg0MEUyMDE4N0I3Qjg2
MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZBNzYyMDQxREI5MjQyNjAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDhBN0JFRjFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTU1MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVD
YWxsRnJhbWVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVDRUVFMTQxODdGM0JBRDAwRTU1
Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTc4Miw2ICs5Nzg5
LDcgQEAKIAkJCQlEQzE3RTgxNzFDOUM5MUQ2MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzI5OUQ5RDE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTc5MERENkYxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZBNzYyMDYxREI5MjQzMTAwQjdBMkZEIC8q
IE11dGF0b3JTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgzQTEwN0VDMDc1MDAx
M0U3QjIgLyogQ0xvb3BTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENTEwN0VD
Mzc2MDA0MjdBNDggLyogSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQzBFQzIx
QUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2
aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NzQsNyArMzQ3NCw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpqZXR0aXNvbihQcm9maWxlcjo6SmV0dGkKICAgICAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMg
KDEpLCBhbmQgZG9lcyBpdHMgb3duIGJvb2sta2VlcGluZyBhYm91dCB3aGV0aGVyIGl0IGhhcyBh
bHJlYWR5IGhhcHBlbmVkLgogICAgICAgICBpZiAoIWppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmlu
dmFsaWRhdGUoKSkgewogICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBiZWVuIGludmFsaWRh
dGVkLgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGhpcyAhPSByZXBsYWNlbWVudCgpIHx8
IChtX3ZtLT5oZWFwLmlzQ29sbGVjdGluZygpICYmICFIZWFwOjppc01hcmtlZChvd25lclNjcmlw
dEV4ZWN1dGFibGUoKSkpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXMgIT0gcmVw
bGFjZW1lbnQoKSB8fCAobV92bS0+aGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6
OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzUwNiw3ICszNTA2LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aQogCiAgICAgLy8gSmV0dGlzb24gY2FuIGhhcHBlbiBk
dXJpbmcgR0MuIFdlIGRvbid0IHdhbnQgdG8gaW5zdGFsbCBjb2RlIHRvIGEgZGVhZCBleGVjdXRh
YmxlCiAgICAgLy8gYmVjYXVzZSB0aGF0IHdvdWxkIGFkZCBhIGRlYWQgb2JqZWN0IHRvIHRoZSBy
ZW1lbWJlcmVkIHNldC4KLSAgICBpZiAobV92bS0+aGVhcC5pc0NvbGxlY3RpbmcoKSAmJiAhSGVh
cDo6aXNNYXJrZWQob3duZXJTY3JpcHRFeGVjdXRhYmxlKCkpKQorICAgIGlmIChtX3ZtLT5oZWFw
LmlzQ3VycmVudFRocmVhZEJ1c3koKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJTY3JpcHRFeGVj
dXRhYmxlKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGFjY29tcGxpc2hlcyAo
MikuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2
aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw5ICsxMDMsMTAgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkKICAgICAgICAgICAgIGRh
dGFMb2cobV93b3JrbGlzdCwgIjogQ29tcGlsaW5nICIsIG1fcGxhbi0+a2V5KCksICIgYXN5bmNo
cm9ub3VzbHlcbiIpOwogICAgICAgICAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcGxhbi0+
dm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkpOworICAgICAgICAvLyBUaGVyZSdzIG5vIHdheSBmb3Ig
dGhlIEdDIHRvIGJlIHNhZmVwb2ludGluZyBzaW5jZSB3ZSBvd24gcmlnaHRUb1J1bi4KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT52bS0+aGVhcC5tdXRhdG9yU3RhdGUoKSA9PSBNdXRh
dG9yU3RhdGU6OlJ1bm5pbmcpOwogICAgICAgICBtX3BsYW4tPmNvbXBpbGVJblRocmVhZCgqbV9s
b25nTGl2ZWRTdGF0ZSwgJm1fZGF0YSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+
c3RhZ2UgPT0gUGxhbjo6Q2FuY2VsbGVkIHx8ICFtX3BsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGlu
ZygpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT5zdGFnZSA9PSBQbGFuOjpDYW5j
ZWxsZWQgfHwgbV9wbGFuLT52bS0+aGVhcC5tdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6
OlJ1bm5pbmcpOwogICAgICAgICAKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fd29ya2xpc3QubV9sb2NrKTsKQEAgLTEyMyw3ICsxMjQsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fd29ya2xpc3QubV9wbGFuQ29tcGlsZWQubm90
aWZ5QWxsKCk7CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcGxhbi0+dm0t
PmhlYXAuaXNDb2xsZWN0aW5nKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BsYW4tPnZt
LT5oZWFwLm11dGF0b3JTdGF0ZSgpID09IE11dGF0b3JTdGF0ZTo6UnVubmluZyk7CiAgICAgICAg
IAogICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6Q29udGludWU7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6
UmUKIAogICAgIGlmIChzYWZlcG9pbnRSZXN1bHQuZGlkR2V0Q2FuY2VsbGVkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVCghc3RhdGUuZ3JhcGgubV92bS5oZWFwLmlzQ29s
bGVjdGluZygpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0ZS5ncmFwaC5tX3ZtLmhlYXAubXV0
YXRvclN0YXRlKCkgPT0gTXV0YXRvclN0YXRlOjpSdW5uaW5nKTsKICAgICAKICAgICBpZiAoc3Rh
dGUuYWxsb2NhdGlvbkZhaWxlZCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3BlLmgJKHJldmlzaW9uIDIwNzYxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCShub25leGlzdGVu
dCkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkhlYXAuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNsYXNzIEFsbG9jYXRpb25TY29wZSB7Ci1wdWJsaWM6Ci0gICAgQWxsb2NhdGlv
blNjb3BlKEhlYXAmIGhlYXApCi0gICAgICAgIDogbV9oZWFwKGhlYXApCi0gICAgICAgICwgbV9s
YXN0T3BlcmF0aW9uKG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3MpCi0gICAgewotICAgICAg
ICBBU1NFUlQobV9sYXN0T3BlcmF0aW9uID09IE5vT3BlcmF0aW9uIHx8IG1fbGFzdE9wZXJhdGlv
biA9PSBBbGxvY2F0aW9uKTsKLSAgICAgICAgbV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9
IEFsbG9jYXRpb247Ci0gICAgfQotICAgIAotICAgIH5BbGxvY2F0aW9uU2NvcGUoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gQWxsb2NhdGlv
bik7Ci0gICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBtX2xhc3RPcGVyYXRp
b247Ci0gICAgfQotcHJpdmF0ZToKLSAgICBIZWFwJiBtX2hlYXA7Ci0gICAgSGVhcE9wZXJhdGlv
biBtX2xhc3RPcGVyYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29sbGVjdGlvblNjb3BlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgY2hhciogY29sbGVjdGlv
blNjb3BlTmFtZShDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCit7CisgICAgc3dpdGNoIChzY29wZSkg
eworICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgorICAgICAgICByZXR1cm4gIkVkZW4i
OworICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpGdWxsOgorICAgICAgICByZXR1cm4gIkZ1bGwi
OworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3Zv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rpb25TY29wZSBz
Y29wZSkKK3sKKyAgICBvdXQucHJpbnQoSlNDOjpjb2xsZWN0aW9uU2NvcGVOYW1lKHNjb3BlKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2xsZWN0aW9uU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitl
bnVtIGNsYXNzIENvbGxlY3Rpb25TY29wZSB7IEVkZW4sIEZ1bGwgfTsKKworY29uc3QgY2hhciog
Y29sbGVjdGlvblNjb3BlTmFtZShDb2xsZWN0aW9uU2NvcGUpOworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpDb2xsZWN0aW9uU2NvcGUpOworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDAsMTUgKzE0MCwxNSBAQCBIYXNoTWFwPGNvbnN0IGNoYXIqLCBH
Q1R5cGVNYXA8U2ltcGxlU3RhCiAgICAgcmV0dXJuICpyZXN1bHQ7CiB9CiAKLVNpbXBsZVN0YXRz
JiB0aW1pbmdTdGF0cyhjb25zdCBjaGFyKiBuYW1lLCBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikK
K1NpbXBsZVN0YXRzJiB0aW1pbmdTdGF0cyhjb25zdCBjaGFyKiBuYW1lLCBDb2xsZWN0aW9uU2Nv
cGUgc2NvcGUpCiB7Ci0gICAgcmV0dXJuIHRpbWluZ1N0YXRzKCkuYWRkKG5hbWUsIEdDVHlwZU1h
cDxTaW1wbGVTdGF0cz4oKSkuaXRlcmF0b3ItPnZhbHVlW29wZXJhdGlvbl07CisgICAgcmV0dXJu
IHRpbWluZ1N0YXRzKCkuYWRkKG5hbWUsIEdDVHlwZU1hcDxTaW1wbGVTdGF0cz4oKSkuaXRlcmF0
b3ItPnZhbHVlW3Njb3BlXTsKIH0KIAogY2xhc3MgVGltaW5nU2NvcGUgewogcHVibGljOgotICAg
IFRpbWluZ1Njb3BlKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBjaGFyKiBuYW1lKQot
ICAgICAgICA6IG1fb3BlcmF0aW9uKG9wZXJhdGlvbikKKyAgICBUaW1pbmdTY29wZShDb2xsZWN0
aW9uU2NvcGUgc2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgICAgIDogbV9zY29wZShzY29w
ZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7CiAgICAgICAgIGlmIChtZWFzdXJlUGhh
c2VUaW1pbmcoKSkKQEAgLTE1NiwxOCArMTU2LDE4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAg
ICAgVGltaW5nU2NvcGUoSGVhcCYgaGVhcCwgY29uc3QgY2hhciogbmFtZSkKLSAgICAgICAgOiBU
aW1pbmdTY29wZShoZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSwgbmFtZSkKKyAgICAgICAgOiBU
aW1pbmdTY29wZShoZWFwLmNvbGxlY3Rpb25TY29wZSgpLCBuYW1lKQogICAgIHsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBzZXRPcGVyYXRpb24oSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCisgICAg
dm9pZCBzZXRTY29wZShDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiAgICAgewotICAgICAgICBtX29w
ZXJhdGlvbiA9IG9wZXJhdGlvbjsKKyAgICAgICAgbV9zY29wZSA9IHNjb3BlOwogICAgIH0KICAg
ICAKLSAgICB2b2lkIHNldE9wZXJhdGlvbihIZWFwJiBoZWFwKQorICAgIHZvaWQgc2V0U2NvcGUo
SGVhcCYgaGVhcCkKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGlvbihoZWFwLm9wZXJhdGlvbklu
UHJvZ3Jlc3MoKSk7CisgICAgICAgIHNldFNjb3BlKGhlYXAuY29sbGVjdGlvblNjb3BlKCkpOwog
ICAgIH0KICAgICAKICAgICB+VGltaW5nU2NvcGUoKQpAQCAtMTc3LDExICsxNzcsMTEgQEAgcHVi
bGljOgogICAgICAgICAgICAgZG91YmxlIHRpbWluZyA9IGFmdGVyIC0gbV9iZWZvcmU7CiAgICAg
ICAgICAgICBTaW1wbGVTdGF0cyYgc3RhdHMgPSB0aW1pbmdTdGF0cyhtX25hbWUsIG1fb3BlcmF0
aW9uKTsKICAgICAgICAgICAgIHN0YXRzLmFkZCh0aW1pbmcpOwotICAgICAgICAgICAgZGF0YUxv
ZygiW0dDOiIsIG1fb3BlcmF0aW9uLCAiXSAiLCBtX25hbWUsICIgdG9vazogIiwgdGltaW5nLCAi
IG1zIChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcykuXG4iKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIltHQzoiLCBtX3Njb3BlLCAiXSAiLCBtX25hbWUsICIgdG9vazogIiwgdGltaW5nLCAi
IG1zIChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcykuXG4iKTsKICAgICAgICAgfQogICAg
IH0KIHByaXZhdGU6Ci0gICAgSGVhcE9wZXJhdGlvbiBtX29wZXJhdGlvbjsKKyAgICBDb2xsZWN0
aW9uU2NvcGUgbV9zY29wZTsKICAgICBkb3VibGUgbV9iZWZvcmU7CiAgICAgY29uc3QgY2hhciog
bV9uYW1lOwogfTsKQEAgLTIwMyw3ICsyMDMsNiBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAg
ICAsIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSkKICAgICAsIG1fdG90YWxCeXRlc1Zp
c2l0ZWQoMCkKLSAgICAsIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKICAgICAs
IG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fZXh0cmFNZW1vcnlTaXplKDApCiAgICAgLCBt
X2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUoMCkKQEAgLTI1Miw3ICsyNTEsOCBAQCBib29sIEhl
YXA6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQogdm9pZCBIZWFwOjpsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmVudHJ5U2NvcGUpOwotICAg
IFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fY29sbGVjdGlvblNjb3BlKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChtX211dGF0b3JTdGF0ZSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcpOwogCiAgICAgbV9hcnJh
eUJ1ZmZlcnMubGFzdENoYW5jZVRvRmluYWxpemUoKTsKICAgICBtX2NvZGVCbG9ja3MtPmxhc3RD
aGFuY2VUb0ZpbmFsaXplKCk7CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBIZWFwOjptYXJrUm9v
dHMoZG91YmxlIGdjU3RhcnRUaW1lLAogICAgICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBM
SU5HX1BST0ZJTEVSKQogCi0gICAgICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVs
bENvbGxlY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rp
b25TY29wZTo6RnVsbCkgewogICAgICAgICAgICAgbV9vcGFxdWVSb290cy5jbGVhcigpOwogICAg
ICAgICAgICAgbV9zbG90VmlzaXRvci5jbGVhck1hcmtTdGFjaygpOwogICAgICAgICB9CkBAIC01
MjYsNyArNTI2LDcgQEAgdm9pZCBIZWFwOjpnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoQ29ucwog
dm9pZCBIZWFwOjpiZWdpbk1hcmtpbmcoKQogewogICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3Bl
KCp0aGlzLCAiSGVhcDo6YmVnaW5NYXJraW5nIik7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29s
bGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2NvZGVCbG9ja3MtPmNsZWFyTWFya3NGb3JG
dWxsQ29sbGVjdGlvbigpOwogICAgIAogICAgIHsKQEAgLTU0NCw3ICs1NDQsNyBAQCB2b2lkIEhl
YXA6OnZpc2l0RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkKIAogdm9pZCBIZWFwOjp2aXNpdFNtYWxs
U3RyaW5ncygpCiB7Ci0gICAgaWYgKCFtX3ZtLT5zbWFsbFN0cmluZ3MubmVlZHNUb0JlVmlzaXRl
ZChtX29wZXJhdGlvbkluUHJvZ3Jlc3MpKQorICAgIGlmICghbV92bS0+c21hbGxTdHJpbmdzLm5l
ZWRzVG9CZVZpc2l0ZWQoKm1fY29sbGVjdGlvblNjb3BlKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV92bS0+c21hbGxTdHJpbmdzLnZpc2l0U3Ryb25nUmVmZXJlbmNlcyhtX3Nsb3RWaXNpdG9y
KTsKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIEhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyhkb3Vi
bGUgZ2NTCiAgICAgICAgIGRhdGFMb2dGKCJcbk51bWJlciBvZiBsaXZlIE9iamVjdHMgYWZ0ZXIg
R0MgJWx1LCB0b29rICUuNmYgc2Vjc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmlz
aXRDb3VudCksIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBnY1N0YXJ0VGlt
ZSk7CiAgICAgfQogICAgIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENv
bGxlY3Rpb24pCisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6
RnVsbCkKICAgICAgICAgbV90b3RhbEJ5dGVzVmlzaXRlZCA9IDA7CiAKICAgICBtX3RvdGFsQnl0
ZXNWaXNpdGVkVGhpc0N5Y2xlID0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0ZWQoKSArIHRocmVh
ZEJ5dGVzVmlzaXRlZCgpOwpAQCAtODcxLDcgKzg3MSw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxs
Q29kZUJsb2NrcygpCiAgICAgLy8gSWYgSmF2YVNjcmlwdCBpcyBydW5uaW5nLCBpdCdzIG5vdCBz
YWZlIHRvIGRlbGV0ZSBhbGwgSmF2YVNjcmlwdCBjb2RlLCBzaW5jZQogICAgIC8vIHdlJ2xsIGVu
ZCB1cCByZXR1cm5pbmcgdG8gZGVsZXRlZCBjb2RlLgogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Zt
LT5lbnRyeVNjb3BlKTsKLSAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3Bl
cmF0aW9uKTsKKyAgICBBU1NFUlQoIW1fY29sbGVjdGlvblNjb3BlKTsKIAogICAgIGNvbXBsZXRl
QWxsSklUUGxhbnMoKTsKIApAQCAtOTA4LDcgKzkwOCw3IEBAIHZvaWQgSGVhcDo6Y2xlYXJVbm1h
cmtlZEV4ZWN1dGFibGVzKCkKIHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUo
KQogewogICAgIGNsZWFyVW5tYXJrZWRFeGVjdXRhYmxlcygpOwotICAgIG1fY29kZUJsb2Nrcy0+
ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQobV9vcGVyYXRpb25JblByb2dyZXNzKTsKKyAg
ICBtX2NvZGVCbG9ja3MtPmRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKCptX2NvbGxlY3Rp
b25TY29wZSk7CiAgICAgbV9qaXRTdHViUm91dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25l
ZFN0dWJSb3V0aW5lcygpOwogfQogCkBAIC05NTUsMjkgKzk1NSwyOSBAQCB2b2lkIEhlYXA6OmNv
bGxlY3RBbGxHYXJiYWdlKCkKICAgICBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2Nrcygp
OwogfQogCi12b2lkIEhlYXA6OmNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkK
K3ZvaWQgSGVhcDo6Y29sbGVjdChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewog
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBpZiAo
IW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb2xsZWN0V2l0aG91
dEFueVN3ZWVwKGNvbGxlY3Rpb25UeXBlKTsKKyAgICBjb2xsZWN0V2l0aG91dEFueVN3ZWVwKHNj
b3BlKTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdFdpdGhvdXRBbnlTd2Vl
cChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQorTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6
Y29sbGVjdFdpdGhvdXRBbnlTd2VlcChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQog
ewogICAgIHZvaWQqIHN0YWNrVG9wOwogICAgIEFMTE9DQVRFX0FORF9HRVRfUkVHSVNURVJfU1RB
VEUocmVnaXN0ZXJzKTsKIAotICAgIGNvbGxlY3RJbXBsKGNvbGxlY3Rpb25UeXBlLCB3dGZUaHJl
YWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSwgJnN0YWNrVG9wLCByZWdpc3RlcnMpOworICAgIGNv
bGxlY3RJbXBsKHNjb3BlLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSwgJnN0YWNr
VG9wLCByZWdpc3RlcnMpOwogCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKG1fdm0pOwogfQogCi1O
RVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rp
b25UeXBlLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRz
OjpSZWdpc3RlclN0YXRlJiBjYWxsZWVTYXZlZFJlZ2lzdGVycykKK05FVkVSX0lOTElORSB2b2lk
IEhlYXA6OmNvbGxlY3RJbXBsKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUsIHZvaWQq
IHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3Rh
dGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBUaW1pbmdTY29wZSBjb2xsZWN0SW1wbFRpbWluZ1Nj
b3BlKGNvbGxlY3Rpb25UeXBlLCAiSGVhcDo6Y29sbGVjdEltcGwiKTsKKyAgICBUaW1pbmdTY29w
ZSBjb2xsZWN0SW1wbFRpbWluZ1Njb3BlKHNjb3BlLCAiSGVhcDo6Y29sbGVjdEltcGwiKTsKICAg
ICAKICNpZiBFTkFCTEUoQUxMT0NBVElPTl9MT0dHSU5HKQogICAgIGRhdGFMb2dGKCJKU0MgR0Mg
c3RhcnRpbmcgY29sbGVjdGlvbi5cbiIpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIE5FVkVSX0lOTElO
RSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICAKICAgICBkb3VibGUgZ2NTdGFydFRp
bWU7CiAgICAgewotICAgICAgICBUaW1pbmdTY29wZSBlYXJseVRpbWluZ1Njb3BlKGNvbGxlY3Rp
b25UeXBlLCAiSGVhcDo6Y29sbGVjdEltcGwgYmVmb3JlIG1hcmtSb290cyIpOworICAgICAgICBU
aW1pbmdTY29wZSBlYXJseVRpbWluZ1Njb3BlKHNjb3BlLCAiSGVhcDo6Y29sbGVjdEltcGwgYmVm
b3JlIG1hcmtSb290cyIpOwogCiAgICAgICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkgewog
ICAgICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBhd2hpbGUoKnRoaXMpOwpAQCAtMTAxMSwxMyAr
MTAxMSwxMyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAg
ICAgIEFTU0VSVCh2bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWRE
YXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgICAgIEFTU0VSVChtX2lzU2FmZVRvQ29s
bGVjdCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBO
b09wZXJhdGlvbik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7
CiAKICAgICAgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgICAgICB3aWxsU3RhcnRD
b2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKTsKKyAgICAgICAgd2lsbFN0YXJ0Q29sbGVjdGlvbihz
Y29wZSk7CiAgICAgICAgIAotICAgICAgICBjb2xsZWN0SW1wbFRpbWluZ1Njb3BlLnNldE9wZXJh
dGlvbigqdGhpcyk7Ci0gICAgICAgIGVhcmx5VGltaW5nU2NvcGUuc2V0T3BlcmF0aW9uKCp0aGlz
KTsKKyAgICAgICAgY29sbGVjdEltcGxUaW1pbmdTY29wZS5zZXRTY29wZSgqdGhpcyk7CisgICAg
ICAgIGVhcmx5VGltaW5nU2NvcGUuc2V0U2NvcGUoKnRoaXMpOwogCiAgICAgICAgIGdjU3RhcnRU
aW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICAgICAgaWYgKG1f
dmVyaWZpZXIpIHsKQEAgLTExMDMsMjIgKzExMDMsMjIgQEAgdm9pZCBIZWFwOjpzdXNwZW5kQ29t
cGlsZXJUaHJlYWRzKCkKICNlbmRpZgogfQogCi12b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rp
b24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKK3ZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29s
bGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewogICAgIGlmIChPcHRp
b25zOjpsb2dHQygpKQogICAgICAgICBkYXRhTG9nKCI9PiAiKTsKICAgICAKLSAgICBpZiAoc2hv
dWxkRG9GdWxsQ29sbGVjdGlvbihjb2xsZWN0aW9uVHlwZSkpIHsKLSAgICAgICAgbV9vcGVyYXRp
b25JblByb2dyZXNzID0gRnVsbENvbGxlY3Rpb247CisgICAgaWYgKHNob3VsZERvRnVsbENvbGxl
Y3Rpb24oc2NvcGUpKSB7CisgICAgICAgIG1fY29sbGVjdGlvblNjb3BlID0gQ29sbGVjdGlvblNj
b3BlOjpGdWxsOwogICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSBmYWxzZTsKICAg
ICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJGdWxsQ29s
bGVjdGlvbiwgIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNz
ID0gRWRlbkNvbGxlY3Rpb247CisgICAgICAgIG1fY29sbGVjdGlvblNjb3BlID0gQ29sbGVjdGlv
blNjb3BlOjpFZGVuOwogICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgICAg
IGRhdGFMb2coIkVkZW5Db2xsZWN0aW9uLCAiKTsKICAgICB9Ci0gICAgaWYgKG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlmIChtX2NvbGxlY3Rpb25TY29w
ZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgbV9zaXplQmVmb3JlTGFzdEZ1
bGxDb2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlz
Q3ljbGU7CiAgICAgICAgIG1fZXh0cmFNZW1vcnlTaXplID0gMDsKICAgICAgICAgbV9kZXByZWNh
dGVkRXh0cmFNZW1vcnlTaXplID0gMDsKQEAgLTExMjksNyArMTEyOSw3IEBAIHZvaWQgSGVhcDo6
d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmEKICAgICAgICAgaWYgKG1fZnVsbEFjdGl2aXR5
Q2FsbGJhY2spCiAgICAgICAgICAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVj
dCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRWRlbkNvbGxlY3Rpb24pOworICAgICAgICBBU1NFUlQobV9jb2xsZWN0aW9uU2NvcGUgPT0g
Q29sbGVjdGNpb25TY29wZTo6RWRlbik7CiAgICAgICAgIG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29s
bGVjdCA9IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgKyBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xl
OwogICAgIH0KIApAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgdm9pZCBIZWFwOjpmbHVzaE9sZFN0cnVj
dHVyZUlEVGFibGVzKCkKIAogdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcigpCiB7
Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbikgeworICAg
IGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pIHsKICAgICAg
ICAgbV93cml0ZUJhcnJpZXJCdWZmZXIuZmx1c2goKnRoaXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTE3MSw3ICsxMTcxLDcgQEAgdm9pZCBIZWFwOjpyZWFwV2Vha0hhbmRsZXMoKQog
CiB2b2lkIEhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKQogewotICAgIGlm
IChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1fY29s
bGVjdGlvblNjb3BlICE9IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgcmV0dXJuOwog
ICAgIGZvciAoYXV0byYgcHJ1bmVDYWxsYmFjayA6IG1fd2Vha0dDTWFwcy52YWx1ZXMoKSkKICAg
ICAgICAgcHJ1bmVDYWxsYmFjaygpOwpAQCAtMTE5NSw3ICsxMTk1LDcgQEAgdm9pZCBIZWFwOjpk
ZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpCiAKIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVtZW50
YWxTd2VlcGVyKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xs
ZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6
RnVsbCkgewogICAgICAgICBpZiAoIW1fbG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzLmlzRW1wdHko
KSkKICAgICAgICAgICAgIG1faW5kZXhPZk5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja1RvU3dl
ZXAgPSAwOwogICAgIH0KQEAgLTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxs
b2NhdGlvbkxpbWl0cygpCiAgICAgaWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBjdXJy
ZW50SGVhcFNpemUgPiBPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCiAgICAgICAgIEhlYXBTdGF0
aXN0aWNzOjpleGl0V2l0aEZhaWx1cmUoKTsKIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29s
bGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIC8vIFRvIGF2b2lkIHBhdGhvbG9naWNhbCBH
QyBjaHVybiBpbiB2ZXJ5IHNtYWxsIGFuZCB2ZXJ5IGxhcmdlIGhlYXBzLCB3ZSBzZXQKICAgICAg
ICAgLy8gdGhlIG5ldyBhbGxvY2F0aW9uIGxpbWl0IGJhc2VkIG9uIHRoZSBjdXJyZW50IHNpemUg
b2YgdGhlIGhlYXAsIHdpdGggYQogICAgICAgICAvLyBmaXhlZCBtaW5pbXVtLgpAQCAtMTI5OCw4
ICsxMjk4LDggQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIHZvaWQgSGVh
cDo6ZGlkRmluaXNoQ29sbGVjdGlvbihkb3VibGUgZ2NTdGFydFRpbWUpCiB7CiAgICAgZG91Ymxl
IGdjRW5kVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgSGVh
cE9wZXJhdGlvbiBvcGVyYXRpb24gPSBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7Ci0gICAgaWYgKG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBDb2xsZWN0aW9uU2Nv
cGUgc2NvcGUgPSAqbV9jb2xsZWN0aW9uU2NvcGU7CisgICAgaWYgKHNjb3BlID09IENvbGxlY3Rp
b25TY29wZTo6RnVsbCkKICAgICAgICAgbV9sYXN0RnVsbEdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0g
Z2NTdGFydFRpbWU7CiAgICAgZWxzZQogICAgICAgICBtX2xhc3RFZGVuR0NMZW5ndGggPSBnY0Vu
ZFRpbWUgLSBnY1N0YXJ0VGltZTsKQEAgLTEzMjIsMTEgKzEzMjIsMTEgQEAgdm9pZCBIZWFwOjpk
aWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnYwogICAgICAgICByZW1vdmVEZWFkSGVhcFNuYXBz
aG90Tm9kZXMoKmhlYXBQcm9maWxlcik7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BU1NFUlQobV9v
cGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uIHx8IG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBGdWxsQ29sbGVjdGlvbik7Ci0gICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9P
cGVyYXRpb247CisgICAgUkVMRUFTRV9BU1NFUlQobV9jb2xsZWN0aW9uU2NvcGUpOworICAgIG1f
Y29sbGVjdGlvblNjb3BlID0gTnVsbG9wdDsKIAogICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBt
X29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPmRpZEdhcmJhZ2VDb2xsZWN0KG9wZXJhdGlv
bik7CisgICAgICAgIG9ic2VydmVyLT5kaWRHYXJiYWdlQ29sbGVjdChzY29wZSk7CiB9CiAKIHZv
aWQgSGVhcDo6cmVzdW1lQ29tcGlsZXJUaHJlYWRzKCkKQEAgLTEzODgsNyArMTM4OCw3IEBAIGJv
b2wgSGVhcDo6aXNWYWxpZEFsbG9jYXRpb24oc2l6ZV90KQogICAgIGlmICghaXNWYWxpZFRocmVh
ZFN0YXRlKG1fdm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9vcGVyYXRp
b25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChpc0N1cnJlbnRUaHJlYWRCdXN5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0
NjUsMjQgKzE0NjUsMTQgQEAgdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcihKU0Nl
bAogICAgIG1fd3JpdGVCYXJyaWVyQnVmZmVyLmFkZChjZWxsKTsKIH0KIAotYm9vbCBIZWFwOjpz
aG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVzdGVkQ29sbGVjdGlvblR5
cGUpIGNvbnN0Citib29sIEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oT3B0aW9uYWw8Q29s
bGVjdGlvblNjb3BlPiBzY29wZSkgY29uc3QKIHsKICAgICBpZiAoIU9wdGlvbnM6OnVzZUdlbmVy
YXRpb25hbEdDKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgc3dpdGNoIChyZXF1ZXN0
ZWRDb2xsZWN0aW9uVHlwZSkgewotICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBjYXNlIEZ1bGxDb2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBjYXNlIEFueUNvbGxlY3Rpb246CisgICAgaWYgKCFzY29wZSkKICAgICAgICAgcmV0
dXJuIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiAqc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsOwogfQogCiB2b2lkIEhlYXA6
OmFkZExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKFdlYWtCbG9jayogYmxvY2spCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE3ICsyMiwxOCBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkNvbGxl
Y3Rpb25TY29wZS5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0LmgiCiAjaW5j
bHVkZSAiSGFuZGxlU2V0LmgiCiAjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKICNpbmNsdWRlICJI
ZWFwT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJIZWFwT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiTGlz
dGFibGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVk
ZSAiTWFya2VkQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAi
TXV0YXRvclN0YXRlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNp
dG9yLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgpAQCAtNDgsNyArNDksNiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQWxsb2NhdGlvblNjb3BlOwogY2xhc3MgQ29kZUJs
b2NrOwogY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7CkBAIC02
MSw2ICs2MSw3IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwUHJvZmlsZXI7CiBjbGFzcyBIZWFw
Um9vdFZpc2l0b3I7CiBjbGFzcyBIZWFwVmVyaWZpZXI7CitjbGFzcyBIZWxwaW5nSGVhcFNjb3Bl
OwogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyOwogY2xhc3MgSklUU3R1YlJvdXRpbmU7CiBjbGFz
cyBKSVRTdHViUm91dGluZVNldDsKQEAgLTEzOSwxMSArMTQwLDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIGFkZE9ic2VydmVyKEhlYXBPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMuYXBw
ZW5kKG9ic2VydmVyKTsgfQogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoSGVhcE9ic2VydmVyKiBv
YnNlcnZlcikgeyBtX29ic2VydmVycy5yZW1vdmVGaXJzdChvYnNlcnZlcik7IH0KIAotICAgIC8v
IHRydWUgaWYgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwotICAgIGJvb2wgaXNDb2xsZWN0aW5n
KCk7Ci0gICAgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb25JblByb2dyZXNzKCkgeyByZXR1cm4gbV9v
cGVyYXRpb25JblByb2dyZXNzOyB9Ci0gICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNv
bGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKLSAgICBib29sIGlzQnVzeSgpOworICAgIE11dGF0b3JT
dGF0ZSBtdXRhdG9yU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX211dGF0b3JTdGF0ZTsgfQorICAg
IE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gY29sbGVjdGlvblNjb3BlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xsZWN0aW9uU2NvcGU7IH0KKworICAgIC8vIFdlJ3JlIGFsd2F5cyBidXN5IG9uIHRo
ZSBjb2xsZWN0aW9uIHRocmVhZHMuIE9uIHRoZSBtYWluIHRocmVhZCwgdGhpcyByZXR1cm5zIHRy
dWUgaWYgd2UncmUKKyAgICAvLyBoZWxwaW5nIGhlYXAuCisgICAgYm9vbCBpc0N1cnJlbnRUaHJl
YWRCdXN5KCk7CisgICAgCiAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9i
amVjdFdpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZv
ck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpOyB9CiAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNl
JiBzdWJzcGFjZUZvck9iamVjdERlc3RydWN0b3IoKSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1
YnNwYWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9yKCk7IH0KICAgICBNYXJrZWRTcGFjZTo6U3Vi
c3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0YSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uu
c3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCk7IH0KQEAgLTE3MSw3ICsxNzQsNyBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogCiAgICAg
Ym9vbCBzaG91bGRDb2xsZWN0KCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0
KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9IE51
bGxvcHQpOwogICAgIGJvb2wgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcihHQ0RlZmVycmFsQ29u
dGV4dCogPSBudWxscHRyKTsgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGRpZCBjb2xsZWN0LgogICAg
IHZvaWQgY29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5KCk7CiAKQEAgLTI2OCw3
ICsyNzEsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgdW5zaWduZWQqIGFkZHJlc3NPZkJhcnJpZXJU
aHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiAmbV9iYXJyaWVyVGhyZXNob2xkOyB9CiAKIHByaXZh
dGU6Ci0gICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TY29wZTsKICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOwogICAgIGZyaWVuZCBjbGFzcyBEZWZlckdDOwogICAgIGZyaWVuZCBjbGFzcyBE
ZWZlckdDRm9yQVdoaWxlOwpAQCAtMjc4LDYgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEhhbmRsZVNldDsKICAgICBmcmllbmQgY2xhc3MgSGVhcFV0aWw7CiAgICAgZnJpZW5k
IGNsYXNzIEhlYXBWZXJpZmllcjsKKyAgICBmcmllbmQgY2xhc3MgSGVscGluZ0hlYXBTY29wZTsK
ICAgICBmcmllbmQgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CkBAIC0yOTMs
NyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9p
ZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxD
b250ZXh0Kiwgc2l6ZV90KTsKIAotICAgIHZvaWQgY29sbGVjdFdpdGhvdXRBbnlTd2VlcChIZWFw
T3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlID0gQW55Q29sbGVjdGlvbik7CisgICAgdm9pZCBjb2xs
ZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gPSBOdWxsb3B0KTsK
IAogICAgIHZvaWQqIGFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3
aXRoIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycy4KICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXRE
ZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmplY3RzIHdpdGhvdXQgZGVzdHJ1
Y3RvcnMuCkBAIC0zMTIsMTAgKzMxNSwxMCBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWRTbG93Q2FzZShzaXplX3QpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2xvd0Nh
c2Uoc2l6ZV90KTsKIAotICAgIHZvaWQgY29sbGVjdEltcGwoSGVhcE9wZXJhdGlvbiwgdm9pZCog
c3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJTdGF0
ZSYpOworICAgIHZvaWQgY29sbGVjdEltcGwoQ29sbGVjdGlvblNjb3BlLCB2b2lkKiBzdGFja09y
aWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpSZWdpc3RlclN0YXRlJik7CiAK
ICAgICB2b2lkIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsKLSAgICB2b2lkIHdpbGxTdGFydENv
bGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSk7CisgICAgdm9pZCB3aWxsU3Rh
cnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4pOwogICAgIHZvaWQgZmx1c2hP
bGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgIHZvaWQgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIo
KTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW9uKCk7CkBAIC0zNjYsNyArMzY5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiAgICAgYm9v
bCBzd2VlcE5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jaygpOwogCi0gICAgYm9vbCBzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpIGNv
bnN0OworICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9u
U2NvcGU+IHJlcXVlc3RlZENvbGxlY3Rpb25TY29wZSkgY29uc3Q7CiAKICAgICB2b2lkIGluY3Jl
bWVudERlZmVycmFsRGVwdGgoKTsKICAgICB2b2lkIGRlY3JlbWVudERlZmVycmFsRGVwdGgoKTsK
QEAgLTM5NCw3ICszOTcsOCBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNp
dGVkOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVkVGhpc0N5Y2xlOwogICAgIAotICAg
IEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNzOworICAgIE9wdGlvbmFsPENvbGxl
Y3Rpb25TY29wZT4gbV9jb2xsZWN0aW9uU2NvcGU7CisgICAgTXV0YXRvclN0YXRlIG1fbXV0YXRv
clN0YXRlIHsgUnVubmluZyB9OwogICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRh
YmxlOwogICAgIE1hcmtlZFNwYWNlIG1fb2JqZWN0U3BhY2U7CiAgICAgR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXQ8QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwy
MSArNDUsMTYgQEAgaW5saW5lIGJvb2wgSGVhcDo6c2hvdWxkQ29sbGVjdCgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikKKyAg
ICBpZiAoY29sbGVjdGlvblNjb3BlKCkgfHwgbXV0YXRvclN0YXRlKCkgPT0gTXV0YXRvclN0YXRl
OjpIZWxwaW5nSGVhcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChPcHRpb25zOjpn
Y01heEhlYXBTaXplKCkpCiAgICAgICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xl
ID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpOwogICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVk
VGhpc0N5Y2xlID4gbV9tYXhFZGVuU2l6ZTsKIH0KIAotaW5saW5lIGJvb2wgSGVhcDo6aXNCdXN5
KCkKK2lubGluZSBib29sIEhlYXA6OmlzQ3VycmVudFRocmVhZEJ1c3koKQogewotICAgIHJldHVy
biBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb247Ci19Ci0KLWlubGluZSBib29s
IEhlYXA6OmlzQ29sbGVjdGluZygpCi17Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9PSBGdWxsQ29sbGVjdGlvbiB8fCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxl
Y3Rpb247CisgICAgcmV0dXJuIG1heUJlR0NUaHJlYWQoKSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBN
dXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwOwogfQogCiBBTFdBWVNfSU5MSU5FIEhlYXAqIEhlYXA6
OmhlYXAoY29uc3QgSGVhcENlbGwqIGNlbGwpCkBAIC03Niw3ICs3MSw3IEBAIGlubGluZSBIZWFw
KiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFsdWUgdikKIAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6
OmlzTWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7Ci0gICAgQVNTRVJUKCFtYXlCZUdDVGhy
ZWFkKCkpOworICAgIEFTU0VSVChtYXlCZUdDVGhyZWFkKCkgIT0gR0NUaHJlYWRUeXBlOjpIZWxw
ZXIpOwogICAgIEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4ocmF3Q2Vs
bCk7CiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBj
ZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwpAQCAtMTYxLDcgKzE1Niw3IEBAIGlu
bGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2MKIGlubGluZSB2b2lkIEhlYXA6
OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXpl
KQogewogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG91YmxlLWNvdW50IHRoZSBleHRyYSBtZW1v
cnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29sbGVjdGlvbnMuCi0gICAgaWYgKG9w
ZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbiAmJiBvbGRTdGF0ZSA9PSBDZWxs
U3RhdGU6Ok9sZEdyZXkpCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25T
Y29wZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dHJhTWVtb3J5U2l6ZTsKQEAgLTE3
Nyw3ICsxNzIsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0CiBp
bmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRlcm5hbE1lbW9yeVZpc2l0ZWQoQ2VsbFN0YXRlIG9s
ZFN0YXRlLCBzaXplX3Qgc2l6ZSkKIHsKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGRvdWJsZS1j
b3VudCB0aGUgZXh0ZXJuYWwgbWVtb3J5IHRoYXQgd2FzIHJlcG9ydGVkIGluIHByZXZpb3VzIGNv
bGxlY3Rpb25zLgotICAgIGlmIChvcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rp
b24gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5KQorICAgIGlmIChjb2xsZWN0aW9u
U2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRl
OjpPbGRHcmV5KQogICAgICAgICByZXR1cm47CiAKICAgICBzaXplX3QqIGNvdW50ZXIgPSAmbV9l
eHRlcm5hbE1lbW9yeVNpemU7CkBAIC0zNzIsNyArMzY3LDcgQEAgaW5saW5lIGJvb2wgSGVhcDo6
Y29sbGVjdElmTmVjZXNzYXJ5T3JEZQogCiBpbmxpbmUgdm9pZCBIZWFwOjpjb2xsZWN0QWNjb3Jk
aW5nVG9EZWZlckdDUHJvYmFiaWxpdHkoKQogewotICAgIGlmIChpc0RlZmVycmVkKCkgfHwgIW1f
aXNTYWZlVG9Db2xsZWN0IHx8IG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikK
KyAgICBpZiAoaXNEZWZlcnJlZCgpIHx8ICFtX2lzU2FmZVRvQ29sbGVjdCB8fCBjb2xsZWN0aW9u
U2NvcGUoKSB8fCBtdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChyYW5kb21OdW1iZXIoKSA8IE9wdGlvbnM6OmRlZmVyR0NQ
cm9iYWJpbGl0eSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3Bl
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
T3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcE9wZXJhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24u
aCIKLQotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQotewotICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7
Ci0gICAgY2FzZSBOb09wZXJhdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJOb25lIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEFsbG9jYXRpb246Ci0gICAgICAgIG91dC5wcmludCgiQWxs
b2MiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246Ci0gICAgICAg
IG91dC5wcmludCgiRnVsbCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBFZGVuQ29sbGVj
dGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJFZGVuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEFueUNvbGxlY3Rpb246Ci0gICAgICAgIG91dC5wcmludCgiQW55Iik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcE9wZXJhdGlvbi5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIEhlYXBP
cGVyYXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgRnVsbENvbGxlY3Rpb24sIEVkZW5D
b2xsZWN0aW9uLCBBbnlDb2xsZWN0aW9uIH07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1l
c3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkhlYXBPcGVyYXRpb24pOwotCi19IC8vIG5hbWVzcGFjZSBX
VEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAko
cmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjQgKzQzLDYgQEAgSGVhcFZlcmlmaWVyOjpI
ZWFwVmVyaWZpZXIoSGVhcCogaGVhcCwgdQogICAgIG1fY3ljbGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxHQ0N5Y2xlW10+KG1fbnVtYmVyT2ZDeWNsZXMpOwogfQogCi1jb25zdCBjaGFyKiBIZWFwVmVy
aWZpZXI6OmNvbGxlY3Rpb25UeXBlTmFtZShIZWFwT3BlcmF0aW9uIHR5cGUpCi17Ci0gICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgY2FzZSBOb09wZXJhdGlvbjoKLSAgICAgICAgcmV0dXJuICJOb09w
ZXJhdGlvbiI7Ci0gICAgY2FzZSBBbnlDb2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gIkFueUNv
bGxlY3Rpb24iOwotICAgIGNhc2UgQWxsb2NhdGlvbjoKLSAgICAgICAgcmV0dXJuICJBbGxvY2F0
aW9uIjsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gIkVkZW5Db2xs
ZWN0aW9uIjsKLSAgICBjYXNlIEZ1bGxDb2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gIkZ1bGxD
b2xsZWN0aW9uIjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsgLy8gU2lsZW5jaW5nIGEgY29tcGlsZXIgd2FybmluZy4KLX0KLQog
Y29uc3QgY2hhciogSGVhcFZlcmlmaWVyOjpwaGFzZU5hbWUoSGVhcFZlcmlmaWVyOjpQaGFzZSBw
aGFzZSkKIHsKICAgICBzd2l0Y2ggKHBoYXNlKSB7CkBAIC04MSw3ICs2Myw3IEBAIHZvaWQgSGVh
cFZlcmlmaWVyOjppbml0aWFsaXplR0NDeWNsZSgpCiB7CiAgICAgSGVhcCogaGVhcCA9IG1faGVh
cDsKICAgICBpbmNyZW1lbnRDeWNsZSgpOwotICAgIGN1cnJlbnRDeWNsZSgpLmNvbGxlY3Rpb25U
eXBlID0gaGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpOworICAgIGN1cnJlbnRDeWNsZSgpLnNj
b3BlID0gKmhlYXAtPmNvbGxlY3Rpb25TY29wZSgpOwogfQogCiBzdHJ1Y3QgR2F0aGVyTGl2ZU9i
akZ1bmN0b3IgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKQEAgLTE5NSw3ICsxNzcsNyBA
QCB2b2lkIEhlYXBWZXJpZmllcjo6cmVwb3J0T2JqZWN0KExpdmVPYmplCiAKICAgICBpZiAob2Jq
RGF0YS5pc0NvbmZpcm1lZERlYWQpIHsKICAgICAgICAgZGF0YUxvZ0YoIkZPVU5EIGRlYWQgb2Jq
ICVwIGluIEdDWyVkXSAlcyBsaXN0ICclcydcbiIsCi0gICAgICAgICAgICBvYmosIGN5Y2xlSW5k
ZXgsIGN5Y2xlLmNvbGxlY3Rpb25UeXBlTmFtZSgpLCBsaXN0Lm5hbWUpOworICAgICAgICAgICAg
b2JqLCBjeWNsZUluZGV4LCBjb2xsZWN0aW9uU2NvcGVOYW1lKGN5Y2xlLnNjb3BlKCkpLCBsaXN0
Lm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsNyArMTg4LDcgQEAgdm9p
ZCBIZWFwVmVyaWZpZXI6OnJlcG9ydE9iamVjdChMaXZlT2JqZQogICAgIGRhdGFMb2dGKCJGT1VO
RCBvYmogJXAgdHlwZSAnJXMnIGJ1dHRlcmZseSAlcCAoYmFzZSAlcCkgaW4gR0NbJWRdICVzIGxp
c3QgJyVzJ1xuIiwKICAgICAgICAgb2JqLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5jbGFzc05h
bWUsCiAgICAgICAgIGJ1dHRlcmZseSwgYnV0dGVyZmx5QmFzZSwKLSAgICAgICAgY3ljbGVJbmRl
eCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCksIGxpc3QubmFtZSk7CisgICAgICAgIGN5Y2xl
SW5kZXgsIGNvbGxlY3Rpb25TY29wZU5hbWUoY3ljbGUuc2NvcGUoKSksIGxpc3QubmFtZSk7CiB9
CiAKIHZvaWQgSGVhcFZlcmlmaWVyOjpjaGVja0lmUmVjb3JkZWQoSlNPYmplY3QqIG9iaikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5oCShyZXZpc2lvbiAy
MDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBwdWJsaWM6CiAgICAgLy8gb2JqZWN0IHdhcyBp
biBhbnkgb2YgdGhvc2UgbGlzdHMuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjaGVja0lm
UmVjb3JkZWQoSlNPYmplY3QqKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb2xsZWN0aW9u
VHlwZU5hbWUoSGVhcE9wZXJhdGlvbik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHBoYXNlTmFt
ZShQaGFzZSk7CiAKIHByaXZhdGU6CkBAIC02NSwxNCArNjQsOSBAQCBwcml2YXRlOgogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlOwor
ICAgICAgICBDb2xsZWN0aW9uU2NvcGUgc2NvcGU7CiAgICAgICAgIExpdmVPYmplY3RMaXN0IGJl
Zm9yZTsKICAgICAgICAgTGl2ZU9iamVjdExpc3QgYWZ0ZXI7Ci0KLSAgICAgICAgY29uc3QgY2hh
ciogY29sbGVjdGlvblR5cGVOYW1lKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIEhlYXBWZXJpZmllcjo6Y29sbGVjdGlvblR5cGVOYW1lKGNvbGxlY3Rpb25UeXBlKTsKLSAg
ICAgICAgfQogICAgIH07CiAKICAgICB2b2lkIGluY3JlbWVudEN5Y2xlKCkgeyBtX2N1cnJlbnRD
eWNsZSA9IChtX2N1cnJlbnRDeWNsZSArIDEpICUgbV9udW1iZXJPZkN5Y2xlczsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVscGluZ0hlYXBTY29wZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlbHBpbmdIZWFwU2NvcGUuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWxwaW5nSGVhcFNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSGVhcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGVscGlu
Z0hlYXBTY29wZSB7CitwdWJsaWM6CisgICAgSGVscGluZ0hlYXBTY29wZShIZWFwJiBoZWFwKQor
ICAgICAgICA6IG1faGVhcChoZWFwKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9o
ZWFwLm1fbXV0YXRvclN0YXRlID09IE11dGF0b3JTdGF0ZTo6UnVubmluZyk7CisgICAgICAgIG1f
aGVhcC5tX211dGF0b3JTdGF0ZSA9IE11dGF0b3JTdGF0ZTo6SGVscGluZ0hlYXA7CisgICAgfQor
ICAgIAorICAgIH5IZWxwaW5nSGVhcFNjb3BlKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1faGVhcC5tX211dGF0b3JTdGF0ZSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwKTsK
KyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0YXRlID0gTXV0YXRvclN0YXRlOjpSdW5uaW5nOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBIZWFwJiBtX2hlYXA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9j
YXRpb24uY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9MYXJnZUFsbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZv
aWQgTGFyZ2VBbGxvY2F0aW9uOjpyZWFwV2Vha1NldCgpCiAKIHZvaWQgTGFyZ2VBbGxvY2F0aW9u
OjpmbGlwKCkKIHsKLSAgICBBU1NFUlQoaGVhcCgpLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0g
RnVsbENvbGxlY3Rpb24pOworICAgIEFTU0VSVChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpID09
IENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CiAgICAgY2xlYXJNYXJrZWQoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZp
c2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTWFya2VkQWxsb2NhdG9yLmgiCiAKLSNpbmNsdWRlICJBbGxvY2F0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFw
LmgiCisjaW5jbHVkZSAiSGVscGluZ0hlYXBTY29wZS5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFs
U3dlZXBlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9j
a0lubGluZXMuaCIKQEAgLTE4NSw3ICsxODUsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpkb1RlCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9oZWFw
LT5jb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtX2hlYXAt
Pm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAgICAgfQogICAgIGlmICgr
K2FsbG9jYXRpb25Db3VudCA+PSBPcHRpb25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkK
ICAgICAgICAgYWxsb2NhdGlvbkNvdW50ID0gMDsKQEAgLTIxNiw3ICsyMTUsNyBAQCB2b2lkKiBN
YXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJCiAgICAgCiAgICAgbV9oZWFwLT5jb2xs
ZWN0SWZOZWNlc3NhcnlPckRlZmVyKGRlZmVycmFsQ29udGV4dCk7CiAgICAgCi0gICAgQWxsb2Nh
dGlvblNjb3BlIGFsbG9jYXRpb25TY29wZSgqbV9oZWFwKTsKKyAgICBIZWxwaW5nSGVhcFNjb3Bl
IGhlYWxwaW5nSGVhcCgqbV9oZWFwKTsKIAogICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRl
V2l0aG91dENvbGxlY3RpbmcoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM4LDcgKzMz
OCw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIAogICAgIG1f
YWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFrU2V0cyk7CiAgICAgCi0gICAg
aWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKQorICAg
IGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikK
ICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9sYXJn
ZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fbGFyZ2VBbGxv
Y2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IDA7CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9p
ZCBNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhIZWFwUm9vdAogICAgIAogICAgIG1fbmV3QWN0
aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+b3BlcmF0
aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX2hlYXAtPmNvbGxl
Y3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9hY3RpdmVX
ZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKIH0KIApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgTWFy
a2VkU3BhY2U6OnJlYXBXZWFrU2V0cygpCiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5m
b3JFYWNoKHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCkgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZvckVh
Y2godmlzaXQpOwogfQogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c3Rv
cEFsbG9jYXRpbmcoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yTWFya2luZygpCiB7
Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9u
KQorICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbikKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24g
PSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKICAgICAgICAgbV9s
YXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24gPSAwOwpAQCAtNDUzLDcgKzQ1
Myw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiAKIHZvaWQgTWFya2VkU3BhY2U6OmJl
Z2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09
IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0g
Q29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAg
ICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0
dXMgewogICAgICAgICAgICAgICAgIGFsbG9jYXRvci5iZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVj
dGlvbigpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZFNw
YWNlOjpmaW5kRW0KIAogdm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkKIHsKLSAg
ICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsK
KyAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVk
ZW4pIHsKICAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICAg
ICAgYWxsb2NhdG9yLnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0YXRvclN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTXV0YXRvclN0YXRlIHN0YXRlKQoreworICAg
IHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIE11dGF0b3JTdGF0ZTo6UnVubmluZzoKKyAgICAg
ICAgb3V0LnByaW50KCJSdW5uaW5nIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE11dGF0
b3JTdGF0ZTo6SGVscGluZ0hlYXA6CisgICAgICAgIG91dC5wcmludCgiSGVscGluZ0hlYXAiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTXV0YXRvclN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTXV0YXRvclN0YXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTXV0YXRvclN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFz
cyBNdXRhdG9yU3RhdGUgeworICAgIC8vIFRoZSBtdXRhdG9yIGlzIHJ1bm5pbmcgd2hlbiBpdCdz
IG5vdCBpbnNpZGUgYSBIZWFwIHNsb3cgcGF0aC4KKyAgICBSdW5uaW5nLAorICAgIAorICAgIC8v
IFRoZSBtdXRhdG9yIGlzIGluIGEgR0Mgc2xvdyBwYXRoLCBwYXlpbmcgdGhlIGhlYXAgdGF4LiBJ
dCdzIGdlbmVyYWxseSBub3Qgc2FmZSB0byBkbyBhbnkKKyAgICAvLyBnZW5lcmFsIEpTIGNvZGUg
d2hlbiBpbiB0aGlzIHN0YXRlLgorICAgIEhlbHBpbmdIZWFwCit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6Ok11dGF0b3JTdGF0ZSk7CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3IuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgU2xvdFZpc2l0
b3I6On5TbG90VmlzaXRvcigpCiAKIHZvaWQgU2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2luZygp
CiB7Ci0gICAgaWYgKGhlYXAoKS0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0
aW9uKQorICAgIGlmIChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29w
ZTo6RnVsbCkKICAgICAgICAgQVNTRVJUKG1fb3BhcXVlUm9vdHMuaXNFbXB0eSgpKTsgLy8gU2hv
dWxkIGhhdmUgbWVyZ2VkIGJ5IG5vdy4KICAgICBlbHNlCiAgICAgICAgIHJlc2V0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1NSw5ICs3NTUsOSBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjCiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoIXRocm93U2NvcGUuZXhj
ZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIEFTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGlmICh2bS5pc0Nv
bGxlY3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFk
KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIGlmIChVTkxJS0VMWSghdm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkKQEAgLTkwMCw4ICs5MDAsOCBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwot
ICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwotICAgIGlmICh2bS5pc0NvbGxlY3Rv
ckJ1c3koKSkKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAgICAgICAg
IHJldHVybiBqc051bGwoKTsKIAogICAgIGJvb2wgaXNKU0NhbGwgPSAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6OkpTKTsKQEAgLTk2MiwxMCArOTYyLDEwIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNT
RVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1
c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgLy8gV2UgdGhyb3cgaW4gdGhpcyBjYXNlIGJlY2F1
c2Ugd2UgaGF2ZSB0byByZXR1cm4gc29tZXRoaW5nICJ2YWxpZCIgYnV0IHdlJ3JlCiAgICAgLy8g
YWxyZWFkeSBpbiBhbiBpbnZhbGlkIHN0YXRlLgotICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3ko
KSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSkpOwogCiAgICAgYm9vbCBpc0pTQ29uc3RydWN0ID0gKGNvbnN0cnVjdFR5cGUg
PT0gQ29uc3RydWN0VHlwZTo6SlMpOwpAQCAtMTAyOCw3ICsxMDI4LDcgQEAgQ2FsbEZyYW1lQ2xv
c3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7
CiAgICAgCi0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxl
Y3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1
cmUoKTsKIAogICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKQEAgLTEwNTMsOSArMTA1Myw5IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBWTSYgdm0gPSAq
Y2xvc3VyZS52bTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIEFTU0VSVCghdm0u
aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGlmICh2bS5pc0NvbGxlY3Rv
ckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3Rh
Y2tDaGVja1BvaW50OwpAQCAtMTA3Niw5ICsxMDc2LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShFdmFsRXhlY3V0YQogCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJh
bWUtPnZtKCkpOwogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNT
RVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1
c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAg
IGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9i
YWxPYmplY3QoKSk7CkBAIC0xMTgyLDkgKzExODIsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlKE1vZHVsZVByb2dyCiAKICAgICBBU1NFUlQoc2NvcGUtPnZtKCkgPT0gJmNhbGxGcmFt
ZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NF
UlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVz
eU9uQ3VycmVudFRocmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFk
SXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4g
anNOdWxsKCk7CiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2Jh
bE9iamVjdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBKU1Zh
bHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBS
RUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JC
dXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRU
aHJlYWQoKSk7CiAKICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlKTsKIApAQCAtMTc0
LDcgKzE3NCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52
bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJl
bnRUaHJlYWQoKSk7CiAKICAgICByZXR1cm4gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4
ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCBtb2R1bGVOYW1lKSwgaW5pdGlhdG9yKTsKIH0KQEAgLTE4NSw3ICsxODUsNyBAQCBKU0lu
dGVybmFsUHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBS
RUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JC
dXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRU
aHJlYWQoKSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRN
b2R1bGUodm0pOwogCkBAIC0yMTIsNyArMjEyLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRN
b2R1bGUoRXhlY1N0YXRlKgogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIFJF
TEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWRE
YXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZt
KCkuaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBsb2FkTW9kdWxl
KGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSwgaW5pdGlhdG9yKTsKIH0KQEAgLTIyMyw3ICsyMjMs
NyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXND
b2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lP
bkN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVu
dHJ5UG9pbnRNb2R1bGUodm0pOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgSlNWYWx1ZSBsaW5rQW5k
RXZhbHVhdGVNb2R1bGUoRXhlY1N0YXRlKgogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwogICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3
dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
IWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGVj
LT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmxpbmtBbmRFdmFsdWF0ZU1vZHVs
ZShleGVjLCBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1vZHVsZUtleSksIGluaXRp
YXRvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHJl
dmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nr
czo6RHJvcEFsbExvY2tzKFZNKiB2CiB7CiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47
Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nTG9jaygpIHx8ICFtX3ZtLT5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIW1fdm0tPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpIHx8ICFtX3Zt
LT5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgbV9kcm9wcGVkTG9ja0Nv
dW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrcyh0aGlzKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsNyArNTc2LDcg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wUmVnRXhw
VHJhY2UoKTsKIAotICAgIGJvb2wgaXNDb2xsZWN0b3JCdXN5KCkgeyByZXR1cm4gaGVhcC5pc0J1
c3koKTsgfQorICAgIGJvb2wgaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkgeyByZXR1
cm4gaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCk7IH0KIAogI2lmIEVOQUJMRShHQ19WQUxJREFU
SU9OKQogICAgIGJvb2wgaXNJbml0aWFsaXppbmdPYmplY3QoKSBjb25zdDsgCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL1dURi93dGYvTWFpblRo
cmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxNCArMTkwLDE0IEBAIGJvb2wgY2FuQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFQKIH0KICNlbmRpZgogCi1zdGF0aWMgVGhyZWFk
U3BlY2lmaWM8Ym9vbD4qIGlzR0NUaHJlYWQ7CitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8T3B0aW9u
YWw8R0NUaHJlYWRUeXBlPj4qIGlzR0NUaHJlYWQ7CiAKIHZvaWQgaW5pdGlhbGl6ZUdDVGhyZWFk
cygpCiB7Ci0gICAgaXNHQ1RocmVhZCA9IG5ldyBUaHJlYWRTcGVjaWZpYzxib29sPigpOworICAg
IGlzR0NUaHJlYWQgPSBuZXcgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPj4o
KTsKIH0KIAotdm9pZCByZWdpc3RlckdDVGhyZWFkKCkKK3ZvaWQgcmVnaXN0ZXJHQ1RocmVhZChH
Q1RocmVhZFR5cGUgdHlwZSkKIHsKICAgICBpZiAoIWlzR0NUaHJlYWQpIHsKICAgICAgICAgLy8g
VGhpcyBoYXBwZW5zIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBwcm9jZXNzIHRoYXQgZG9lc24ndCBj
YXJlIGFib3V0CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCByZWdpc3RlckdDVGhyZWFkKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICoqaXNHQ1RocmVhZCA9IHRydWU7CisgICAgKipp
c0dDVGhyZWFkID0gdHlwZTsKIH0KIAogYm9vbCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCkKQEAg
LTIxNiw5ICsyMTYsMTMgQEAgYm9vbCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCkKICAgICByZXR1
cm4gaXNNYWluVGhyZWFkKCk7CiB9CiAKLWJvb2wgbWF5QmVHQ1RocmVhZCgpCitPcHRpb25hbDxH
Q1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKQogewotICAgIHJldHVybiBpc0dDVGhyZWFkICYm
IGlzR0NUaHJlYWQtPmlzU2V0KCkgJiYgKippc0dDVGhyZWFkOworICAgIGlmICghaXNHQ1RocmVh
ZCkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgaWYgKCFpc0dDVGhyZWFkLT5pc1NldCgp
KQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gKippc0dDVGhyZWFkOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9uIDIwNzYx
OCkKKysrIFNvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
OSArMzMsMTIgQEAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHN0ZGludC5oPgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgUHJpbnRTdHJlYW07CisKIHR5cGVkZWYgdWludDMyX3Qg
VGhyZWFkSWRlbnRpZmllcjsKIAogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCkBAIC02Nyw4ICs3MCwxNSBAQCBpbmxpbmUgYm9vbCBpc1VJVGhyZWFkKCkgeyByZXR1cm4g
aXNNYWluCiAKIHZvaWQgaW5pdGlhbGl6ZUdDVGhyZWFkcygpOwogCi1XVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCByZWdpc3RlckdDVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYXlC
ZUdDVGhyZWFkKCk7CitlbnVtIGNsYXNzIEdDVGhyZWFkVHlwZSB7CisgICAgTWFpbiwKKyAgICBI
ZWxwZXIKK307CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEdDVGhyZWFkVHlw
ZSk7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJlYWRU
eXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NU
aHJlYWQoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQo
KTsKIAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9u
TWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KQEAgLTg4LDYgKzk4LDcgQEAgdm9pZCBpbml0aWFs
aXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaAogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNp
bmcgV1RGOjpHQ1RocmVhZFR5cGU7CiB1c2luZyBXVEY6OmNhbGxPbk1haW5UaHJlYWQ7CiB1c2lu
ZyBXVEY6OmNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZDsKIHVzaW5nIFdURjo6aXNN
YWluVGhyZWFkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292232</attachid>
            <date>2016-10-20 11:44:03 -0700</date>
            <delta_ts>2016-10-20 13:17:22 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>83210</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNzYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDUxLDYgKzQ1MSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAKICAgICBoZWFw
L0FsbG9jYXRvckF0dHJpYnV0ZXMuY3BwCiAgICAgaGVhcC9Db2RlQmxvY2tTZXQuY3BwCisgICAg
aGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAK
ICAgICBoZWFwL0RlZmVyR0MuY3BwCiAgICAgaGVhcC9EZXN0cnVjdGlvbk1vZGUuY3BwCkBAIC00
NjQsNyArNDY1LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBoZWFwL0hlYXAu
Y3BwCiAgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAot
ICAgIGhlYXAvSGVhcE9wZXJhdGlvbi5jcHAKICAgICBoZWFwL0hlYXBQcm9maWxlci5jcHAKICAg
ICBoZWFwL0hlYXBTbmFwc2hvdC5jcHAKICAgICBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
CkBAIC00ODAsNiArNDgwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBoZWFw
L01hcmtlZEFsbG9jYXRvci5jcHAKICAgICBoZWFwL01hcmtlZEJsb2NrLmNwcAogICAgIGhlYXAv
TWFya2VkU3BhY2UuY3BwCisgICAgaGVhcC9NdXRhdG9yU3RhdGUuY3BwCiAgICAgaGVhcC9TbG90
VmlzaXRvci5jcHAKICAgICBoZWFwL1dlYWsuY3BwCiAgICAgaGVhcC9XZWFrQmxvY2suY3BwCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3NjE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw3ICs1MTAsNiBAQAogCQkwRjgzMzVCNzE2MzlDMUU2
MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0
NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODM2
NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsgfTsKLQkJMEY4
NkEyNkQxRDZGNzk2NTAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkMxRDZGNzk2MjAwQ0IwQzky
IC8qIEhlYXBPcGVyYXRpb24uY3BwICovOyB9OwogCQkwRjg2QTI2RjFENkY3QjMzMDBDQjBDOTIg
LyogR0NUeXBlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjg2QTI2RTFENkY3QjMxMDBDQjBDOTIgLyogR0NUeXBlTWFwLmggKi87IH07CiAJCTBG
ODZBRTIwMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QUUxRjFDNTMxMUM1
MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICovOyB9OwogCQkwRjg4NUUxMTE4
NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRl
Y29kZVVzZURlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC01OTIsNiArNTkxLDExIEBACiAJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJEOSAvKiBE
RkdOb2RlRmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi87IH07
CiAJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI4MTUwRTk1MkEwMEI5
QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLzsgfTsKIAkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5
IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAqLzsgfTsK
KwkJMEZBNzYyMDQxREI5MjQyNjAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMDFEQjkyNDIz
MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLzsgfTsKKwkJMEZBNzYyMDUxREI5MjQy
OTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rp
b25TY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDIxREI5MjQyMzAw
QjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgKi87IH07CisJCTBGQTc2MjA3MURCOTI0MzMwMEI3
QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkE3NjIw
OTFEQjkyODNFMDBCN0EyRkQgLyogSGVscGluZ0hlYXBTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDgxREI5MjgzQzAwQjdBMkZEIC8q
IEhlbHBpbmdIZWFwU2NvcGUuaCAqLzsgfTsKIAkJMEZBN0E4RUIxOEI0MTNDODAwNTIzNzFEIC8q
IFJlZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkE3QThFOTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLzsgfTsKIAkJMEZBN0E4RUMxOEI0
MTNDODAwNTIzNzFEIC8qIFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZBN0E4RUExOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQTdBOEVFMThDRTRGRDgw
MDUyMzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RUQxOENFNEZEODAwNTIzNzFEIC8q
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgKi87IH07CkBAIC02MjMsNyArNjI3LDYgQEAK
IAkJMEZCNEZCNzMxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MDFCQzg0MzE0
MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCAqLzsgfTsKIAkJMEZCNEZCNzQxQkM4NDMx
NDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzExQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlT
bG93UGF0aC5oICovOyB9OwogCQkwRkI0RkI3NTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCNEZCNzIxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCAqLzsg
fTsKLQkJMEZCNTMwMzkxRDkwNDA0QzAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTMwMzgxRDkwNDA0
NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovOyB9OwogCQkwRkI1NDY3NzE0RjU5QjVD
MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGQjU0Njc5MTRGNUM0NkIwMDJDMjk4OSAvKiBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwICovOyB9OwogCQkwRkI1NDY3QjE0RjVDN0UxMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTE1Niw3ICsxMTU5LDYgQEAKIAkJMkE0QkI3RjMxOEE0MTE3OTAwOEEwRkNEIC8qIEpT
TWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBNEJCN0YyMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUlu
dGVybmFsLmggKi87IH07CiAJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJp
ZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkE0RUM5MDkxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgKi87
IH07CiAJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVDOTBBMTg2
MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTgg
LyogSGVhcE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4
MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5j
cHAgKi87IH07CiAJCTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBODM2MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2
Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4MzQsNyArMjgzNiw2
IEBACiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0
aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGODZBMjZDMUQ2Rjc5NjIwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg2QTI2RTFENkY3QjMxMDBDQjBDOTIg
LyogR0NUeXBlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDVHlwZU1h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg2QUUxRjFDNTMxMUM1MDA2QkU4
RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmg7IHBhdGggPSBiMy9CM0NvbXB1dGVEaXZp
c2lvbk1hZ2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODg1RTEwMTg0OUEz
QkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCeXRlY29kZVVzZURlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjkxNSw2ICsyOTE2LDExIEBACiAJCTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2Rl
RmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUZs
YWdzLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkE1ODFCODE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVGbGFncy5oOyBwYXRoID0gZGZn
L0RGR05vZGVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE1ODFCOTE1
MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHTm9kZVR5cGUuaDsgcGF0aCA9IGRmZy9ERkdOb2RlVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMDFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVj
dGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbGxl
Y3Rpb25TY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTc2MjAxMURC
OTI0MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29sbGVjdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGQTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRvclN0YXRlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzYyMDMxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdG9yU3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzYyMDgxREI5MjgzQzAwQjdBMkZEIC8q
IEhlbHBpbmdIZWFwU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVs
cGluZ0hlYXBTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE3QThFOTE4
QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVBMThC
NDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVEMThDRTRGRDgwMDUy
MzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5NTYsNyArMjk2Miw2IEBACiAJCTBGQjRGQjcwMUJDODQz
MTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmNwcDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xv
d1BhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MTFCQzg0MzE0
MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZUTExhenlTbG93UGF0aC5oOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyog
RlRMTGF6eVNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBG
VExMYXp5U2xvd1BhdGhDYWxsLmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyog
QWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9j
YXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3NjE0RjU5
QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVl
UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ1MCw3ICszNDU1LDYg
QEAKIAkJMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWVJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTRFQzkwOTE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdyaXRlQmFycmllckJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBNEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBI
ZWFwT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAw
MjBCREY3IC8qIERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGVmZXJHQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRl
bkdDQWN0aXZpdHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
NDQ3LDcgKzU0NTEsNiBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEZCNTMwMzgxRDkw
NDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovLAogCQkJCTBGOTYzMDM1MUQ0MTky
QzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmNwcCAqLywKIAkJCQkwRjk2MzAzNjFE
NDE5MkMzMDA1NjA5RDkgLyogQWxsb2NhdG9yQXR0cmlidXRlcy5oICovLAogCQkJCTBGMDcwQTQy
MUQ1NDNBODkwMDZFNzIzMiAvKiBDZWxsQ29udGFpbmVyLmggKi8sCkBAIC01NDU2LDYgKzU0NTks
OCBAQAogCQkJCTBGRDhBMzExMTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuY3BwICov
LAogCQkJCTBGRDhBMzEyMTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuaCAqLywKIAkJ
CQkwRjY2NENFNzFEQTMwNEVEMDBCMDBBMTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oICovLAor
CQkJCTBGQTc2MjAwMURCOTI0MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwICovLAor
CQkJCTBGQTc2MjAxMURCOTI0MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCAqLywKIAkJ
CQkxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAog
CQkJCTE0OURBQUYyMTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAog
CQkJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLywKQEAgLTU1MDAs
OCArNTUwNSw2IEBACiAJCQkJQzJEQTc3ODIxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVz
LmggKi8sCiAJCQkJMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oICovLAogCQkJCUE1MzM5RUM4MUJCNEI0NTEwMDU0RjAwNSAvKiBIZWFwT2JzZXJ2ZXIuaCAq
LywKLQkJCQkwRjg2QTI2QzFENkY3OTYyMDBDQjBDOTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgKi8s
Ci0JCQkJMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLywKIAkJ
CQlBNTM5OEZBOTFDNzUwRDk1MDA2MEE5NjMgLyogSGVhcFByb2ZpbGVyLmNwcCAqLywKIAkJCQlB
NTM5OEZBQTFDNzUwRDk1MDA2MEE5NjMgLyogSGVhcFByb2ZpbGVyLmggKi8sCiAJCQkJMTRGOTc0
NDYxMzhDODUzRTAwREExQzY3IC8qIEhlYXBSb290VmlzaXRvci5oICovLApAQCAtNTUxNiw2ICs1
NTE5LDcgQEAKIAkJCQkwRkFERTY3MjFENEQyM0JDMDA3Njg0NTcgLyogSGVhcFV0aWwuaCAqLywK
IAkJCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLywKIAkJ
CQlGRTdCQTYwRTFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmggKi8sCisJCQkJMEZB
NzYyMDgxREI5MjgzQzAwQjdBMkZEIC8qIEhlbHBpbmdIZWFwU2NvcGUuaCAqLywKIAkJCQlDMjVG
OEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLywKIAkJCQlD
MjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8sCiAJCQkJ
MEY3NjZEMjkxNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmNwcCAqLywKQEAg
LTU1NDEsNiArNTU0NSw4IEBACiAJCQkJMEY3QzVGQjkxRDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtl
ZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJr
U3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBGMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2su
aCAqLywKKwkJCQkwRkE3NjIwMjFEQjkyNDIzMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAq
LywKKwkJCQkwRkE3NjIwMzFEQjkyNDIzMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggKi8sCiAJ
CQkJQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQuaCAqLywKIAkJCQlD
MjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovLAogCQkJCTE0QkE3
OEYwMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRvci5oICovLApAQCAtNzUwMCw2ICs3NTA2
LDcgQEAKIAkJCQkwRkVDODUwMzFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrVXRpbHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTA0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jsb2Nr
V29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTA2MUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0NoZWNrU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZBNzYyMDcxREI5MjQzMzAw
QjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDgxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1
MEExQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29tbW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzQ1
NEI4RDFEMDBFODI0MDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCBpbiBIZWFkZXJzICovLApAQCAt
NzYwMCw3ICs3NjA3LDYgQEAKIAkJCQk2MkQ3NTVENzFCODRGQjRBMDAxODAxRkEgLyogQ2FsbEZy
YW1lU2h1ZmZsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0
RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMjlFMTRDQTdEQzUw
MDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZCNTMwMzkx
RDkwNDA0QzAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjI3NjczMjQxQjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTA1LDYgKzc5MTEsNyBAQAogCQkJCTJB
RDJFREZCMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMzA0NjA3MEUxRjQ5N0YwMDMyMzJDRiAvKiBFcnJvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMwMkU5MEQwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGQTc2MjA5MURCOTI4M0UwMEI3QTJGRCAvKiBIZWxwaW5nSGVhcFNj
b3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJy
b3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTk4RDBFMTgzRTM4MDAw
RjkyOTcgLyogRXJyb3JJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEYwRTE4
MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTQs
NyArODA2MSw2IEBACiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRp
b25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMzlFQzkxQkI0QjQ2MDAwNTRGMDA1IC8q
IEhlYXBPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRUIxREI1OERBRDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkE2RjQ2MjYx
N0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
Rjk3NDQ3MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MTE3LDYgKzgxMjMsNyBAQAogCQkJCUExODE5M0UzMUI0RTBDREIw
MEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExQjlFMjNFMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUExODE5M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0
b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNTFEQjkyNDI5MDBC
N0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q2RTFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRTE4N0EwRjFDMDMwRDZDMDAzOEJCQ0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgxLDcgKzk0ODgsNiBAQAogCQkJCUE3
OEE5NzdBMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQkUwRjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGODZBMjZE
MUQ2Rjc5NjUwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGM0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhl
YXBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1
MkEgLyogREZHUHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTYyOCw2ICs5NjM0LDcg
QEAKIAkJCQlBNThFMzU5MTE4NjBERUNGMDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1MTNFNUNBMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4NDBFMjAxODdCN0I4NjAw
ODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
QTc2MjA0MURCOTI0MjYwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ4QTdCRUYxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1NTE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2Fs
bEZyYW1lU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1Q0VFRTE0MTg3RjNCQUQwMEU1NUM5
OSAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3ODIsNiArOTc4OSw3
IEBACiAJCQkJREMxN0U4MTcxQzlDOTFENjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBN
dXRhdG9yU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNF
N0IyIC8qIENMb29wU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3
NjAwNDI3QTQ4IC8qIEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUMwRUMyMUFB
MEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDc0LDcgKzM0NzQsNyBAQCB2b2lkIENvZGVCbG9jazo6
amV0dGlzb24oUHJvZmlsZXI6OkpldHRpCiAgICAgICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgx
KSwgYW5kIGRvZXMgaXRzIG93biBib29rLWtlZXBpbmcgYWJvdXQgd2hldGhlciBpdCBoYXMgYWxy
ZWFkeSBoYXBwZW5lZC4KICAgICAgICAgaWYgKCFqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbnZh
bGlkYXRlKCkpIHsKICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRl
ZC4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSB8fCAo
bV92bS0+aGVhcC5pc0NvbGxlY3RpbmcoKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJTY3JpcHRF
eGVjdXRhYmxlKCkpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9IHJlcGxh
Y2VtZW50KCkgfHwgKG1fdm0tPmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFwOjpp
c01hcmtlZChvd25lclNjcmlwdEV4ZWN1dGFibGUoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTM1MDYsNyArMzUwNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpq
ZXR0aXNvbihQcm9maWxlcjo6SmV0dGkKIAogICAgIC8vIEpldHRpc29uIGNhbiBoYXBwZW4gZHVy
aW5nIEdDLiBXZSBkb24ndCB3YW50IHRvIGluc3RhbGwgY29kZSB0byBhIGRlYWQgZXhlY3V0YWJs
ZQogICAgIC8vIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgYSBkZWFkIG9iamVjdCB0byB0aGUgcmVt
ZW1iZXJlZCBzZXQuCi0gICAgaWYgKG1fdm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkgJiYgIUhlYXA6
OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkKKyAgICBpZiAobV92bS0+aGVhcC5p
c0N1cnJlbnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0
YWJsZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMgKDIp
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlz
aW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsOSArMTAzLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpCiAgICAgICAgICAgICBkYXRh
TG9nKG1fd29ya2xpc3QsICI6IENvbXBpbGluZyAiLCBtX3BsYW4tPmtleSgpLCAiIGFzeW5jaHJv
bm91c2x5XG4iKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW4tPnZt
LT5oZWFwLmlzQ29sbGVjdGluZygpKTsKKyAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgZm9yIHRo
ZSBHQyB0byBiZSBzYWZlcG9pbnRpbmcgc2luY2Ugd2Ugb3duIHJpZ2h0VG9SdW4uCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhlYXAubXV0YXRvclN0YXRlKCkgPT0gTXV0YXRv
clN0YXRlOjpSdW5uaW5nKTsKICAgICAgICAgbV9wbGFuLT5jb21waWxlSW5UaHJlYWQoKm1fbG9u
Z0xpdmVkU3RhdGUsICZtX2RhdGEpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BsYW4tPnN0
YWdlID09IFBsYW46OkNhbmNlbGxlZCB8fCAhbV9wbGFuLT52bS0+aGVhcC5pc0NvbGxlY3Rpbmco
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+c3RhZ2UgPT0gUGxhbjo6Q2FuY2Vs
bGVkIHx8IG1fcGxhbi0+dm0tPmhlYXAubXV0YXRvclN0YXRlKCkgPT0gTXV0YXRvclN0YXRlOjpS
dW5uaW5nKTsKICAgICAgICAgCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX3dvcmtsaXN0Lm1fbG9jayk7CkBAIC0xMjMsNyArMTI0LDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3dvcmtsaXN0Lm1fcGxhbkNvbXBpbGVkLm5vdGlm
eUFsbCgpOwogICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW4tPnZtLT5o
ZWFwLmlzQ29sbGVjdGluZygpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT52bS0+
aGVhcC5tdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
CiAKICAgICBpZiAoc2FmZXBvaW50UmVzdWx0LmRpZEdldENhbmNlbGxlZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXN0YXRlLmdyYXBoLm1fdm0uaGVhcC5pc0NvbGxl
Y3RpbmcoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGUuZ3JhcGgubV92bS5oZWFwLm11dGF0
b3JTdGF0ZSgpID09IE11dGF0b3JTdGF0ZTo6UnVubmluZyk7CiAgICAgCiAgICAgaWYgKHN0YXRl
LmFsbG9jYXRpb25GYWlsZWQpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIZWFwLmgiCi0KLW5hbWVzcGFjZSBK
U0MgewotCi1jbGFzcyBBbGxvY2F0aW9uU2NvcGUgewotcHVibGljOgotICAgIEFsbG9jYXRpb25T
Y29wZShIZWFwJiBoZWFwKQotICAgICAgICA6IG1faGVhcChoZWFwKQotICAgICAgICAsIG1fbGFz
dE9wZXJhdGlvbihtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fbGFzdE9wZXJhdGlvbiA9PSBOb09wZXJhdGlvbiB8fCBtX2xhc3RPcGVyYXRpb24g
PT0gQWxsb2NhdGlvbik7Ci0gICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBB
bGxvY2F0aW9uOwotICAgIH0KLSAgICAKLSAgICB+QWxsb2NhdGlvblNjb3BlKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID09IEFsbG9jYXRpb24p
OwotICAgICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID0gbV9sYXN0T3BlcmF0aW9u
OwotICAgIH0KLXByaXZhdGU6Ci0gICAgSGVhcCYgbV9oZWFwOwotICAgIEhlYXBPcGVyYXRpb24g
bV9sYXN0T3BlcmF0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAkocmV2aXNpb24gMjA3NjE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENvZGVCbG9ja1NldDo6bGFzdENoYW5j
ZVRvRmluYWxpemUoCiAgICAgICAgIGNvZGVCbG9jay0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxl
LmRlc3Ryb3koY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tTZXQ6OmRlbGV0ZVVubWFy
a2VkQW5kVW5yZWZlcmVuY2VkKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCit2b2lkIENv
ZGVCbG9ja1NldDo6ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoQ29sbGVjdGlvblNjb3Bl
IHNjb3BlKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOwotICAgIEhhc2hTZXQ8
Q29kZUJsb2NrKj4mIHNldCA9IGNvbGxlY3Rpb25UeXBlID09IEVkZW5Db2xsZWN0aW9uID8gbV9u
ZXdDb2RlQmxvY2tzIDogbV9vbGRDb2RlQmxvY2tzOworICAgIEhhc2hTZXQ8Q29kZUJsb2NrKj4m
IHNldCA9IHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiA/IG1fbmV3Q29kZUJsb2NrcyA6
IG1fb2xkQ29kZUJsb2NrczsKICAgICBWZWN0b3I8Q29kZUJsb2NrKj4gdW5tYXJrZWQ7CiAgICAg
Zm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IHNldCkgewogICAgICAgICBpZiAoSGVhcDo6aXNN
YXJrZWQoY29kZUJsb2NrKSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6OmRl
bGV0ZVVubWFya2VkQW5kVW5yZQogICAgIH0KIAogICAgIC8vIEFueSByZW1haW5pbmcgeW91bmcg
Q29kZUJsb2NrcyBhcmUgbGl2ZSBhbmQgbmVlZCB0byBiZSBwcm9tb3RlZCB0byB0aGUgc2V0IG9m
IG9sZCBDb2RlQmxvY2tzLgotICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBFZGVuQ29sbGVjdGlv
bikKKyAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBwcm9t
b3RlWW91bmdDb2RlQmxvY2tzKGxvY2tlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sbGVjdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiR0NTZWdtZW50ZWRBcnJheS5oIgotI2luY2x1ZGUgIkhlYXBPcGVy
YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICAvLyBEZWxldGUgYWxsIGNvZGUgYmxvY2tzIHRoYXQgYXJlIG9ubHkgcmVmZXJl
bmNlZCBieSB0aGlzIHNldCAoaS5lLiBvd25lZAogICAgIC8vIGJ5IHRoaXMgc2V0KSwgYW5kIHRo
YXQgaGF2ZSBub3QgYmVlbiBtYXJrZWQuCi0gICAgdm9pZCBkZWxldGVVbm1hcmtlZEFuZFVucmVm
ZXJlbmNlZChIZWFwT3BlcmF0aW9uKTsKKyAgICB2b2lkIGRlbGV0ZVVubWFya2VkQW5kVW5yZWZl
cmVuY2VkKENvbGxlY3Rpb25TY29wZSk7CiAgICAgCiAgICAgLy8gQWRkIGFsbCBjdXJyZW50bHkg
ZXhlY3V0aW5nIENvZGVCbG9ja3MgdG8gdGhlIHJlbWVtYmVyZWQgc2V0IHRvIGJlIAogICAgIC8v
IHJlLXNjYW5uZWQgZHVyaW5nIHRoZSBuZXh0IGNvbGxlY3Rpb24uCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29sbGVjdGlvblNjb3BlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3Ry
ZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBjb2xsZWN0aW9uU2NvcGVO
YW1lKENvbGxlY3Rpb25TY29wZSBzY29wZSkKK3sKKyAgICBzd2l0Y2ggKHNjb3BlKSB7CisgICAg
Y2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46CisgICAgICAgIHJldHVybiAiRWRlbiI7CisgICAg
Y2FzZSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw6CisgICAgICAgIHJldHVybiAiRnVsbCI7CisgICAg
fQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29sbGVjdGlvblNjb3BlIHNjb3BlKQor
eworICAgIG91dC5wcmludChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUoc2NvcGUpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bGxlY3Rpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbGxlY3Rpb25TY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xh
c3MgQ29sbGVjdGlvblNjb3BlIHsgRWRlbiwgRnVsbCB9OworCitjb25zdCBjaGFyKiBjb2xsZWN0
aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rpb25TY29wZSk7CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0
eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9F
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZp
dHlDYQogCiB2b2lkIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigpCiB7Ci0g
ICAgbV92bS0+aGVhcC5jb2xsZWN0KEVkZW5Db2xsZWN0aW9uKTsKKyAgICBtX3ZtLT5oZWFwLmNv
bGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogZG91YmxlIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxNSArMTQwLDE1IEBAIEhhc2hNYXA8Y29uc3Qg
Y2hhciosIEdDVHlwZU1hcDxTaW1wbGVTdGEKICAgICByZXR1cm4gKnJlc3VsdDsKIH0KIAotU2lt
cGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIEhlYXBPcGVyYXRpb24gb3Bl
cmF0aW9uKQorU2ltcGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIENvbGxl
Y3Rpb25TY29wZSBzY29wZSkKIHsKLSAgICByZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwg
R0NUeXBlTWFwPFNpbXBsZVN0YXRzPigpKS5pdGVyYXRvci0+dmFsdWVbb3BlcmF0aW9uXTsKKyAg
ICByZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwgR0NUeXBlTWFwPFNpbXBsZVN0YXRzPigp
KS5pdGVyYXRvci0+dmFsdWVbc2NvcGVdOwogfQogCiBjbGFzcyBUaW1pbmdTY29wZSB7CiBwdWJs
aWM6Ci0gICAgVGltaW5nU2NvcGUoSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IGNoYXIq
IG5hbWUpCi0gICAgICAgIDogbV9vcGVyYXRpb24ob3BlcmF0aW9uKQorICAgIFRpbWluZ1Njb3Bl
KENvbGxlY3Rpb25TY29wZSBzY29wZSwgY29uc3QgY2hhciogbmFtZSkKKyAgICAgICAgOiBtX3Nj
b3BlKHNjb3BlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKICAgICAgICAgaWYgKG1l
YXN1cmVQaGFzZVRpbWluZygpKQpAQCAtMTU2LDE4ICsxNTYsMTggQEAgcHVibGljOgogICAgIH0K
ICAgICAKICAgICBUaW1pbmdTY29wZShIZWFwJiBoZWFwLCBjb25zdCBjaGFyKiBuYW1lKQotICAg
ICAgICA6IFRpbWluZ1Njb3BlKGhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcygpLCBuYW1lKQorICAg
ICAgICA6IFRpbWluZ1Njb3BlKGhlYXAuY29sbGVjdGlvblNjb3BlKCksIG5hbWUpCiAgICAgewog
ICAgIH0KICAgICAKLSAgICB2b2lkIHNldE9wZXJhdGlvbihIZWFwT3BlcmF0aW9uIG9wZXJhdGlv
bikKKyAgICB2b2lkIHNldFNjb3BlKENvbGxlY3Rpb25TY29wZSBzY29wZSkKICAgICB7Ci0gICAg
ICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9uOworICAgICAgICBtX3Njb3BlID0gc2NvcGU7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgc2V0T3BlcmF0aW9uKEhlYXAmIGhlYXApCisgICAgdm9pZCBz
ZXRTY29wZShIZWFwJiBoZWFwKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW9uKGhlYXAub3Bl
cmF0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICAgICAgc2V0U2NvcGUoaGVhcC5jb2xsZWN0aW9uU2Nv
cGUoKSk7CiAgICAgfQogICAgIAogICAgIH5UaW1pbmdTY29wZSgpCkBAIC0xNzcsMTEgKzE3Nywx
MSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkb3VibGUgdGltaW5nID0gYWZ0ZXIgLSBtX2JlZm9y
ZTsKICAgICAgICAgICAgIFNpbXBsZVN0YXRzJiBzdGF0cyA9IHRpbWluZ1N0YXRzKG1fbmFtZSwg
bV9vcGVyYXRpb24pOwogICAgICAgICAgICAgc3RhdHMuYWRkKHRpbWluZyk7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCJbR0M6IiwgbV9vcGVyYXRpb24sICJdICIsIG1fbmFtZSwgIiB0b29rOiAiLCB0
aW1pbmcsICIgbXMgKGF2ZXJhZ2UgIiwgc3RhdHMubWVhbigpLCAiIG1zKS5cbiIpOworICAgICAg
ICAgICAgZGF0YUxvZygiW0dDOiIsIG1fc2NvcGUsICJdICIsIG1fbmFtZSwgIiB0b29rOiAiLCB0
aW1pbmcsICIgbXMgKGF2ZXJhZ2UgIiwgc3RhdHMubWVhbigpLCAiIG1zKS5cbiIpOwogICAgICAg
ICB9CiAgICAgfQogcHJpdmF0ZToKLSAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9uOworICAg
IENvbGxlY3Rpb25TY29wZSBtX3Njb3BlOwogICAgIGRvdWJsZSBtX2JlZm9yZTsKICAgICBjb25z
dCBjaGFyKiBtX25hbWU7CiB9OwpAQCAtMjAzLDcgKzIwMyw2IEBAIEhlYXA6OkhlYXAoVk0qIHZt
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5
Y2xlKQogICAgICwgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uKGZhbHNlKQogICAgICwgbV90b3Rh
bEJ5dGVzVmlzaXRlZCgwKQotICAgICwgbV9vcGVyYXRpb25JblByb2dyZXNzKE5vT3BlcmF0aW9u
KQogICAgICwgbV9vYmplY3RTcGFjZSh0aGlzKQogICAgICwgbV9leHRyYU1lbW9yeVNpemUoMCkK
ICAgICAsIG1fZGVwcmVjYXRlZEV4dHJhTWVtb3J5U2l6ZSgwKQpAQCAtMjUyLDcgKzI1MSw4IEBA
IGJvb2wgSGVhcDo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB2b2lkIEhlYXA6Omxhc3RD
aGFuY2VUb0ZpbmFsaXplKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+ZW50cnlTY29w
ZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0
aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fbXV0YXRvclN0YXRlID09IE11dGF0b3JTdGF0ZTo6UnVubmluZyk7CiAKICAg
ICBtX2FycmF5QnVmZmVycy5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogICAgIG1fY29kZUJsb2Nr
cy0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIEhlYXA6
Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFC
TEUoU0FNUExJTkdfUFJPRklMRVIpCiAKLSAgICAgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0g
Q29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgICAgICBtX29wYXF1ZVJvb3RzLmNsZWFy
KCk7CiAgICAgICAgICAgICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFya1N0YWNrKCk7CiAgICAgICAg
IH0KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIEhlYXA6OmdhdGhlclNjcmF0Y2hCdWZmZXJSb290
cyhDb25zCiB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiB7CiAgICAgVGltaW5nU2NvcGUgdGlt
aW5nU2NvcGUoKnRoaXMsICJIZWFwOjpiZWdpbk1hcmtpbmciKTsKLSAgICBpZiAobV9vcGVyYXRp
b25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX2NvbGxlY3Rpb25TY29w
ZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJN
YXJrc0ZvckZ1bGxDb2xsZWN0aW9uKCk7CiAgICAgCiAgICAgewpAQCAtNTQ0LDcgKzU0NCw3IEBA
IHZvaWQgSGVhcDo6dmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQoKQogCiB2b2lkIEhlYXA6OnZp
c2l0U21hbGxTdHJpbmdzKCkKIHsKLSAgICBpZiAoIW1fdm0tPnNtYWxsU3RyaW5ncy5uZWVkc1Rv
QmVWaXNpdGVkKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcykpCisgICAgaWYgKCFtX3ZtLT5zbWFsbFN0
cmluZ3MubmVlZHNUb0JlVmlzaXRlZCgqbV9jb2xsZWN0aW9uU2NvcGUpKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX3ZtLT5zbWFsbFN0cmluZ3MudmlzaXRTdHJvbmdSZWZlcmVuY2VzKG1fc2xv
dFZpc2l0b3IpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgSGVhcDo6dXBkYXRlT2JqZWN0Q291
bnRzKGRvdWJsZSBnY1MKICAgICAgICAgZGF0YUxvZ0YoIlxuTnVtYmVyIG9mIGxpdmUgT2JqZWN0
cyBhZnRlciBHQyAlbHUsIHRvb2sgJS42ZiBzZWNzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPih2aXNpdENvdW50KSwgV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIGdj
U3RhcnRUaW1lKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9
PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlv
blNjb3BlOjpGdWxsKQogICAgICAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkID0gMDsKIAogICAgIG1f
dG90YWxCeXRlc1Zpc2l0ZWRUaGlzQ3ljbGUgPSBtX3Nsb3RWaXNpdG9yLmJ5dGVzVmlzaXRlZCgp
ICsgdGhyZWFkQnl0ZXNWaXNpdGVkKCk7CkBAIC04NzEsNyArODcxLDcgQEAgdm9pZCBIZWFwOjpk
ZWxldGVBbGxDb2RlQmxvY2tzKCkKICAgICAvLyBJZiBKYXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0
J3Mgbm90IHNhZmUgdG8gZGVsZXRlIGFsbCBKYXZhU2NyaXB0IGNvZGUsIHNpbmNlCiAgICAgLy8g
d2UnbGwgZW5kIHVwIHJldHVybmluZyB0byBkZWxldGVkIGNvZGUuCiAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fdm0tPmVudHJ5U2NvcGUpOwotICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gTm9PcGVyYXRpb24pOworICAgIEFTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOwogCiAgICAg
Y29tcGxldGVBbGxKSVRQbGFucygpOwogCkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBIZWFwOjpj
bGVhclVubWFya2VkRXhlY3V0YWJsZXMoKQogdm9pZCBIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBp
bGVkQ29kZSgpCiB7CiAgICAgY2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7Ci0gICAgbV9jb2Rl
QmxvY2tzLT5kZWxldGVVbm1hcmtlZEFuZFVucmVmZXJlbmNlZChtX29wZXJhdGlvbkluUHJvZ3Jl
c3MpOworICAgIG1fY29kZUJsb2Nrcy0+ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoKm1f
Y29sbGVjdGlvblNjb3BlKTsKICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRK
ZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7CiB9CiAKQEAgLTk1NSwyOSArOTU1LDI5IEBAIHZvaWQg
SGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFr
QmxvY2tzKCk7CiB9CiAKLXZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rp
b25UeXBlKQordm9pZCBIZWFwOjpjb2xsZWN0KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2Nv
cGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbGxl
Y3RXaXRob3V0QW55U3dlZXAoY29sbGVjdGlvblR5cGUpOworICAgIGNvbGxlY3RXaXRob3V0QW55
U3dlZXAoc2NvcGUpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0V2l0aG91
dEFueVN3ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCitORVZFUl9JTkxJTkUgdm9p
ZCBIZWFwOjpjb2xsZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4g
c2NvcGUpCiB7CiAgICAgdm9pZCogc3RhY2tUb3A7CiAgICAgQUxMT0NBVEVfQU5EX0dFVF9SRUdJ
U1RFUl9TVEFURShyZWdpc3RlcnMpOwogCi0gICAgY29sbGVjdEltcGwoY29sbGVjdGlvblR5cGUs
IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3RhY2tUb3AsIHJlZ2lzdGVycyk7
CisgICAgY29sbGVjdEltcGwoc2NvcGUsIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigp
LCAmc3RhY2tUb3AsIHJlZ2lzdGVycyk7CiAKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0obV92bSk7
CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXBPcGVyYXRpb24g
Y29sbGVjdGlvblR5cGUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGlu
ZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQorTkVWRVJfSU5M
SU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29w
ZSwgdm9pZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVn
aXN0ZXJTdGF0ZSYgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIFRpbWluZ1Njb3BlIGNvbGxlY3RJbXBs
VGltaW5nU2NvcGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCIpOworICAgIFRp
bWluZ1Njb3BlIGNvbGxlY3RJbXBsVGltaW5nU2NvcGUoc2NvcGUsICJIZWFwOjpjb2xsZWN0SW1w
bCIpOwogICAgIAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0Yo
IkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CkBAIC05OTEsNyArOTkxLDcgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIAogICAgIGRvdWJsZSBn
Y1N0YXJ0VGltZTsKICAgICB7Ci0gICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGltaW5nU2NvcGUo
Y29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCBiZWZvcmUgbWFya1Jvb3RzIik7Cisg
ICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGltaW5nU2NvcGUoc2NvcGUsICJIZWFwOjpjb2xsZWN0
SW1wbCBiZWZvcmUgbWFya1Jvb3RzIik7CiAKICAgICAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxl
cigpKSB7CiAgICAgICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7CkBAIC0x
MDExLDEzICsxMDExLDEzIEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhl
YXAKICAgICAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0
ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICAgICAgQVNTRVJUKG1faXNT
YWZlVG9Db2xsZWN0KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dy
ZXNzID09IE5vT3BlcmF0aW9uKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY29sbGVjdGlv
blNjb3BlKTsKIAogICAgICAgICBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAgICAgIHdp
bGxTdGFydENvbGxlY3Rpb24oY29sbGVjdGlvblR5cGUpOworICAgICAgICB3aWxsU3RhcnRDb2xs
ZWN0aW9uKHNjb3BlKTsKICAgICAgICAgCi0gICAgICAgIGNvbGxlY3RJbXBsVGltaW5nU2NvcGUu
c2V0T3BlcmF0aW9uKCp0aGlzKTsKLSAgICAgICAgZWFybHlUaW1pbmdTY29wZS5zZXRPcGVyYXRp
b24oKnRoaXMpOworICAgICAgICBjb2xsZWN0SW1wbFRpbWluZ1Njb3BlLnNldFNjb3BlKCp0aGlz
KTsKKyAgICAgICAgZWFybHlUaW1pbmdTY29wZS5zZXRTY29wZSgqdGhpcyk7CiAKICAgICAgICAg
Z2NTdGFydFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgICAg
ICBpZiAobV92ZXJpZmllcikgewpAQCAtMTEwMywyMiArMTEwMywyMiBAQCB2b2lkIEhlYXA6OnN1
c3BlbmRDb21waWxlclRocmVhZHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgSGVhcDo6d2lsbFN0YXJ0
Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQordm9pZCBIZWFwOjp3aWxs
U3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAg
aWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgIGRhdGFMb2coIj0+ICIpOwogICAgIAotICAg
IGlmIChzaG91bGREb0Z1bGxDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKSkgewotICAgICAgICBt
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBGdWxsQ29sbGVjdGlvbjsKKyAgICBpZiAoc2hvdWxkRG9G
dWxsQ29sbGVjdGlvbihzY29wZSkpIHsKKyAgICAgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGw7CiAgICAgICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IGZh
bHNlOwogICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgICAgIGRhdGFMb2co
IkZ1bGxDb2xsZWN0aW9uLCAiKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPSBFZGVuQ29sbGVjdGlvbjsKKyAgICAgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBD
b2xsZWN0aW9uU2NvcGU6OkVkZW47CiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAg
ICAgICAgICAgZGF0YUxvZygiRWRlbkNvbGxlY3Rpb24sICIpOwogICAgIH0KLSAgICBpZiAobV9v
cGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVj
dGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgewogICAgICAgICBtX3NpemVCZWZv
cmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVBZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9j
YXRlZFRoaXNDeWNsZTsKICAgICAgICAgbV9leHRyYU1lbW9yeVNpemUgPSAwOwogICAgICAgICBt
X2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUgPSAwOwpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgdm9p
ZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKEhlYXBPcGVyYQogICAgICAgICBpZiAobV9mdWxs
QWN0aXZpdHlDYWxsYmFjaykKICAgICAgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPndp
bGxDb2xsZWN0KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbik7CisgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25T
Y29wZSA9PSBDb2xsZWN0Y2lvblNjb3BlOjpFZGVuKTsKICAgICAgICAgbV9zaXplQmVmb3JlTGFz
dEVkZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRU
aGlzQ3ljbGU7CiAgICAgfQogCkBAIC0xMTQ3LDcgKzExNDcsNyBAQCB2b2lkIEhlYXA6OmZsdXNo
T2xkU3RydWN0dXJlSURUYWJsZXMoKQogCiB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVm
ZmVyKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9u
KSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikg
ewogICAgICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5mbHVzaCgqdGhpcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIEhlYXA6OnJlYXBXZWFrSGFu
ZGxlcygpCiAKIHZvaWQgSGVhcDo6cHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpCiB7
Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBGdWxsQ29sbGVjdGlvbikKKyAgICBp
ZiAobV9jb2xsZWN0aW9uU2NvcGUgIT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBy
ZXR1cm47CiAgICAgZm9yIChhdXRvJiBwcnVuZUNhbGxiYWNrIDogbV93ZWFrR0NNYXBzLnZhbHVl
cygpKQogICAgICAgICBwcnVuZUNhbGxiYWNrKCk7CkBAIC0xMTk1LDcgKzExOTUsNyBAQCB2b2lk
IEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKIAogdm9pZCBIZWFwOjpub3RpZnlJ
bmNyZW1lbnRhbFN3ZWVwZXIoKQogewotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0g
RnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlv
blNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGlmICghbV9sb2dpY2FsbHlFbXB0eVdlYWtCbG9ja3Mu
aXNFbXB0eSgpKQogICAgICAgICAgICAgbV9pbmRleE9mTmV4dExvZ2ljYWxseUVtcHR5V2Vha0Js
b2NrVG9Td2VlcCA9IDA7CiAgICAgfQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgdm9pZCBIZWFwOjp1
cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgp
ICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKICAgICAgICAg
SGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwogCi0gICAgaWYgKG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlmIChtX2NvbGxlY3Rpb25TY29w
ZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgLy8gVG8gYXZvaWQgcGF0aG9s
b2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZlcnkgbGFyZ2UgaGVhcHMsIHdlIHNl
dAogICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGltaXQgYmFzZWQgb24gdGhlIGN1cnJl
bnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCiAgICAgICAgIC8vIGZpeGVkIG1pbmltdW0uCkBA
IC0xMjk4LDggKzEyOTgsOCBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQog
dm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnY1N0YXJ0VGltZSkKIHsKICAg
ICBkb3VibGUgZ2NFbmRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsK
LSAgICBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsKLSAg
ICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQorICAgIENvbGxl
Y3Rpb25TY29wZSBzY29wZSA9ICptX2NvbGxlY3Rpb25TY29wZTsKKyAgICBpZiAoc2NvcGUgPT0g
Q29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2xhc3RGdWxsR0NMZW5ndGggPSBnY0Vu
ZFRpbWUgLSBnY1N0YXJ0VGltZTsKICAgICBlbHNlCiAgICAgICAgIG1fbGFzdEVkZW5HQ0xlbmd0
aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1lOwpAQCAtMTMyMiwxMSArMTMyMiwxMSBAQCB2b2lk
IEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiAgICAgICAgIHJlbW92ZURlYWRI
ZWFwU25hcHNob3ROb2RlcygqaGVhcFByb2ZpbGVyKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FT
U0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24gfHwgbV9vcGVyYXRp
b25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKTsKLSAgICBtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPSBOb09wZXJhdGlvbjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2NvbGxlY3Rpb25TY29wZSk7
CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBOdWxsb3B0OwogCiAgICAgZm9yIChhdXRvKiBvYnNl
cnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+ZGlkR2FyYmFnZUNvbGxlY3Qo
b3BlcmF0aW9uKTsKKyAgICAgICAgb2JzZXJ2ZXItPmRpZEdhcmJhZ2VDb2xsZWN0KHNjb3BlKTsK
IH0KIAogdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVhZHMoKQpAQCAtMTM4OCw3ICsxMzg4
LDcgQEAgYm9vbCBIZWFwOjppc1ZhbGlkQWxsb2NhdGlvbihzaXplX3QpCiAgICAgaWYgKCFpc1Zh
bGlkVGhyZWFkU3RhdGUobV92bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICht
X29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pCisgICAgaWYgKGlzQ3VycmVudFRo
cmVhZEJ1c3koKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJldHVybiB0cnVl
OwpAQCAtMTQ2NSwyNCArMTQ2NSwxNCBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVm
ZmVyKEpTQ2VsCiAgICAgbV93cml0ZUJhcnJpZXJCdWZmZXIuYWRkKGNlbGwpOwogfQogCi1ib29s
IEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xs
ZWN0aW9uVHlwZSkgY29uc3QKK2Jvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihPcHRp
b25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKSBjb25zdAogewogICAgIGlmICghT3B0aW9uczo6
dXNlR2VuZXJhdGlvbmFsR0MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBzd2l0Y2gg
KHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7Ci0gICAgY2FzZSBFZGVuQ29sbGVjdGlvbjoKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKKyAgICBpZiAoIXNjb3BlKQogICAg
ICAgICByZXR1cm4gbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuICpzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw7CiB9CiAKIHZv
aWQgSGVhcDo6YWRkTG9naWNhbGx5RW1wdHlXZWFrQmxvY2soV2Vha0Jsb2NrKiBibG9jaykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTcgKzIy
LDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisjaW5jbHVk
ZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQu
aCIKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgogI2lu
Y2x1ZGUgIkhlYXBPYnNlcnZlci5oIgotI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24uaCIKICNpbmNs
dWRlICJMaXN0YWJsZUhhbmRsZXIuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIK
ICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgog
I2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNp
bmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAi
U2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCkBAIC00OCw3ICs0
OSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBBbGxvY2F0aW9uU2NvcGU7CiBjbGFz
cyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4
dDsKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9maWxlcjsKIGNs
YXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIEhlYXBWZXJpZmllcjsKK2NsYXNzIEhlbHBpbmdI
ZWFwU2NvcGU7CiBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CiBjbGFzcyBKSVRTdHViUm91dGlu
ZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwpAQCAtMTM5LDExICsxNDAsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoSGVhcE9ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2Vy
dmVycy5hcHBlbmQob2JzZXJ2ZXIpOyB9CiAgICAgdm9pZCByZW1vdmVPYnNlcnZlcihIZWFwT2Jz
ZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KG9ic2VydmVyKTsgfQog
Ci0gICAgLy8gdHJ1ZSBpZiBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCi0gICAgYm9vbCBpc0Nv
bGxlY3RpbmcoKTsKLSAgICBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbkluUHJvZ3Jlc3MoKSB7IHJl
dHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7IH0KLSAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRp
b24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwotICAgIGJvb2wgaXNCdXN5KCk7CisgICAg
TXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRvclN0YXRl
OyB9CisgICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBjb2xsZWN0aW9uU2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsgfQorCisgICAgLy8gV2UncmUgYWx3YXlzIGJ1
c3kgb24gdGhlIGNvbGxlY3Rpb24gdGhyZWFkcy4gT24gdGhlIG1haW4gdGhyZWFkLCB0aGlzIHJl
dHVybnMgdHJ1ZSBpZiB3ZSdyZQorICAgIC8vIGhlbHBpbmcgaGVhcC4KKyAgICBib29sIGlzQ3Vy
cmVudFRocmVhZEJ1c3koKTsKKyAgICAKICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNw
YWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1
YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCk7IH0KICAgICBNYXJrZWRTcGFjZTo6
U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0RGVzdHJ1Y3RvcigpIHsgcmV0dXJuIG1fb2JqZWN0
U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aERlc3RydWN0b3IoKTsgfQogICAgIE1hcmtlZFNw
YWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCkgeyByZXR1cm4gbV9vYmpl
Y3RTcGFjZS5zdWJzcGFjZUZvckF1eGlsaWFyeURhdGEoKTsgfQpAQCAtMTcxLDcgKzE3NCw3IEBA
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7
CiAKICAgICBib29sIHNob3VsZENvbGxlY3QoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSA9IEFueUNvbGxlY3Rpb24pOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdChPcHRpb25hbDxDb2xsZWN0aW9uU2Nv
cGU+ID0gTnVsbG9wdCk7CiAgICAgYm9vbCBjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKEdDRGVm
ZXJyYWxDb250ZXh0KiA9IG51bGxwdHIpOyAvLyBSZXR1cm5zIHRydWUgaWYgaXQgZGlkIGNvbGxl
Y3QuCiAgICAgdm9pZCBjb2xsZWN0QWNjb3JkaW5nVG9EZWZlckdDUHJvYmFiaWxpdHkoKTsKIApA
QCAtMjY4LDcgKzI3MSw2IEBAIHB1YmxpYzoKICAgICBjb25zdCB1bnNpZ25lZCogYWRkcmVzc09m
QmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuICZtX2JhcnJpZXJUaHJlc2hvbGQ7IH0K
IAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNjb3BlOwogICAgIGZyaWVu
ZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIGNsYXNzIERlZmVyR0M7CiAgICAgZnJpZW5k
IGNsYXNzIERlZmVyR0NGb3JBV2hpbGU7CkBAIC0yNzgsNiArMjgwLDcgQEAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgSGFuZGxlU2V0OwogICAgIGZyaWVuZCBjbGFzcyBIZWFwVXRpbDsKICAg
ICBmcmllbmQgY2xhc3MgSGVhcFZlcmlmaWVyOworICAgIGZyaWVuZCBjbGFzcyBIZWxwaW5nSGVh
cFNjb3BlOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViUm91dGluZTsKICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsK
QEAgLTI5Myw3ICsyOTYsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZy
aWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NE
ZWZlcnJhbENvbnRleHQqLCBzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0V2l0aG91dEFueVN3
ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKKyAgICB2
b2lkIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9IE51
bGxvcHQpOwogCiAgICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOyAvLyBG
b3IgdXNlIHdpdGggb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzLgogICAgIHZvaWQqIGFsbG9jYXRl
V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0aG91
dCBkZXN0cnVjdG9ycy4KQEAgLTMxMiwxMCArMzE1LDEwIEBAIHByaXZhdGU6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNpemVf
dCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1v
cnlTbG93Q2FzZShzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0SW1wbChIZWFwT3BlcmF0aW9u
LCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpSZWdp
c3RlclN0YXRlJik7CisgICAgdm9pZCBjb2xsZWN0SW1wbChDb2xsZWN0aW9uU2NvcGUsIHZvaWQq
IHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3Rh
dGUmKTsKIAogICAgIHZvaWQgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgIHZvaWQgd2ls
bFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKTsKKyAgICB2b2lk
IHdpbGxTdGFydENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPik7CiAgICAgdm9p
ZCBmbHVzaE9sZFN0cnVjdHVyZUlEVGFibGVzKCk7CiAgICAgdm9pZCBmbHVzaFdyaXRlQmFycmll
ckJ1ZmZlcigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpb24oKTsKQEAgLTM2Niw3ICszNjksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja3MoKTsK
ICAgICBib29sIHN3ZWVwTmV4dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKCk7CiAKLSAgICBib29s
IHNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xsZWN0aW9u
VHlwZSkgY29uc3Q7CisgICAgYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKE9wdGlvbmFsPENv
bGxlY3Rpb25TY29wZT4gcmVxdWVzdGVkQ29sbGVjdGlvblNjb3BlKSBjb25zdDsKIAogICAgIHZv
aWQgaW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxE
ZXB0aCgpOwpAQCAtMzk0LDcgKzM5Nyw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fdG90YWxC
eXRlc1Zpc2l0ZWQ7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlzQ3ljbGU7CiAg
ICAgCi0gICAgSGVhcE9wZXJhdGlvbiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7CisgICAgT3B0aW9u
YWw8Q29sbGVjdGlvblNjb3BlPiBtX2NvbGxlY3Rpb25TY29wZTsKKyAgICBNdXRhdG9yU3RhdGUg
bV9tdXRhdG9yU3RhdGUgeyBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcgfTsKICAgICBTdHJ1Y3R1cmVJ
RFRhYmxlIG1fc3RydWN0dXJlSURUYWJsZTsKICAgICBNYXJrZWRTcGFjZSBtX29iamVjdFNwYWNl
OwogICAgIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0PEFycmF5QnVmZmVyPiBtX2FycmF5QnVmZmVy
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkocmV2aXNp
b24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMjEgKzQ1LDE2IEBAIGlubGluZSBib29sIEhlYXA6OnNob3Vs
ZENvbGxlY3QoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFtX2lzU2FmZVRvQ29s
bGVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgIT0gTm9PcGVyYXRpb24pCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpIHx8IG11dGF0b3JT
dGF0ZSgpID09IE11dGF0b3JTdGF0ZTo6SGVscGluZ0hlYXApCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICByZXR1cm4gbV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKTsKICAgICBy
ZXR1cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IG1fbWF4RWRlblNpemU7CiB9CiAKLWlu
bGluZSBib29sIEhlYXA6OmlzQnVzeSgpCitpbmxpbmUgYm9vbCBIZWFwOjppc0N1cnJlbnRUaHJl
YWRCdXN5KCkKIHsKLSAgICByZXR1cm4gbV9vcGVyYXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0
aW9uOwotfQotCi1pbmxpbmUgYm9vbCBIZWFwOjppc0NvbGxlY3RpbmcoKQotewotICAgIHJldHVy
biBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24gfHwgbV9vcGVyYXRpb25J
blByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uOworICAgIHJldHVybiBtYXlCZUdDVGhyZWFkKCkg
fHwgbXV0YXRvclN0YXRlKCkgPT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nSGVhcDsKIH0KIAogQUxX
QVlTX0lOTElORSBIZWFwKiBIZWFwOjpoZWFwKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQpAQCAtNzYs
NyArNzEsNyBAQCBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBKU1ZhbHVlIHYpCiAKIEFM
V0FZU19JTkxJTkUgYm9vbCBIZWFwOjppc01hcmtlZChjb25zdCB2b2lkKiByYXdDZWxsKQogewot
ICAgIEFTU0VSVCghbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQobWF5QmVHQ1RocmVhZCgp
ICE9IEdDVGhyZWFkVHlwZTo6SGVscGVyKTsKICAgICBIZWFwQ2VsbCogY2VsbCA9IGJpdHdpc2Vf
Y2FzdDxIZWFwQ2VsbCo+KHJhd0NlbGwpOwogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlv
bigpKQogICAgICAgICByZXR1cm4gY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsK
QEAgLTE2MSw3ICsxNTYsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeUFs
bG9jCiBpbmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQoQ2VsbFN0YXRl
IG9sZFN0YXRlLCBzaXplX3Qgc2l6ZSkKIHsKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGRvdWJs
ZS1jb3VudCB0aGUgZXh0cmEgbWVtb3J5IHRoYXQgd2FzIHJlcG9ydGVkIGluIHByZXZpb3VzIGNv
bGxlY3Rpb25zLgotICAgIGlmIChvcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rp
b24gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5KQorICAgIGlmIChjb2xsZWN0aW9u
U2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRl
OjpPbGRHcmV5KQogICAgICAgICByZXR1cm47CiAKICAgICBzaXplX3QqIGNvdW50ZXIgPSAmbV9l
eHRyYU1lbW9yeVNpemU7CkBAIC0xNzcsNyArMTcyLDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6cmVw
b3J0RXh0cmFNZW1vcnlWaXNpdAogaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0ZXJuYWxNZW1v
cnlWaXNpdGVkKENlbGxTdGF0ZSBvbGRTdGF0ZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0byBkb3VibGUtY291bnQgdGhlIGV4dGVybmFsIG1lbW9yeSB0aGF0IHdhcyBy
ZXBvcnRlZCBpbiBwcmV2aW91cyBjb2xsZWN0aW9ucy4KLSAgICBpZiAob3BlcmF0aW9uSW5Qcm9n
cmVzcygpID09IEVkZW5Db2xsZWN0aW9uICYmIG9sZFN0YXRlID09IENlbGxTdGF0ZTo6T2xkR3Jl
eSkKKyAgICBpZiAoY29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuICYm
IG9sZFN0YXRlID09IENlbGxTdGF0ZTo6T2xkR3JleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
c2l6ZV90KiBjb3VudGVyID0gJm1fZXh0ZXJuYWxNZW1vcnlTaXplOwpAQCAtMzcyLDcgKzM2Nyw3
IEBAIGlubGluZSBib29sIEhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGUKIAogaW5saW5lIHZv
aWQgSGVhcDo6Y29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5KCkKIHsKLSAgICBp
ZiAoaXNEZWZlcnJlZCgpIHx8ICFtX2lzU2FmZVRvQ29sbGVjdCB8fCBtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgIT0gTm9PcGVyYXRpb24pCisgICAgaWYgKGlzRGVmZXJyZWQoKSB8fCAhbV9pc1NhZmVU
b0NvbGxlY3QgfHwgY29sbGVjdGlvblNjb3BlKCkgfHwgbXV0YXRvclN0YXRlKCkgIT0gTXV0YXRv
clN0YXRlOjpSdW5uaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmFuZG9tTnVtYmVy
KCkgPCBPcHRpb25zOjpkZWZlckdDUHJvYmFiaWxpdHkoKSkgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5o
IgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MzMsNyArMzMsNyBAQCBjbGFzcyBIZWFwT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwg
fkhlYXBPYnNlcnZlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsR2FyYmFnZUNvbGxlY3Qo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KEhlYXBPcGVyYXRpb24p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoQ29sbGVjdGlvblNjb3Bl
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSGVhcE9wZXJhdGlvbi5oIgotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5h
bWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCi17Ci0gICAgc3dp
dGNoIChvcGVyYXRpb24pIHsKLSAgICBjYXNlIE5vT3BlcmF0aW9uOgotICAgICAgICBvdXQucHJp
bnQoIk5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQWxsb2NhdGlvbjoKLSAgICAg
ICAgb3V0LnByaW50KCJBbGxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGdWxsQ29s
bGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJGdWxsIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkVkZW4iKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJB
bnkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotCi0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWVudW0gSGVhcE9wZXJhdGlvbiB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBGdWxs
Q29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rpb24sIEFueUNvbGxlY3Rpb24gfTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVhbTsKLQotdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SGVhcE9wZXJhdGlvbik7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywyNCArNDMsNiBA
QCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1CiAgICAgbV9jeWNsZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4obV9udW1iZXJPZkN5Y2xlcyk7CiB9CiAKLWNv
bnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6Y29sbGVjdGlvblR5cGVOYW1lKEhlYXBPcGVyYXRpb24g
dHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE5vT3BlcmF0aW9uOgotICAg
ICAgICByZXR1cm4gIk5vT3BlcmF0aW9uIjsKLSAgICBjYXNlIEFueUNvbGxlY3Rpb246Ci0gICAg
ICAgIHJldHVybiAiQW55Q29sbGVjdGlvbiI7Ci0gICAgY2FzZSBBbGxvY2F0aW9uOgotICAgICAg
ICByZXR1cm4gIkFsbG9jYXRpb24iOwotICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246Ci0gICAgICAg
IHJldHVybiAiRWRlbkNvbGxlY3Rpb24iOwotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246Ci0gICAg
ICAgIHJldHVybiAiRnVsbENvbGxlY3Rpb24iOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOyAvLyBTaWxlbmNpbmcgYSBjb21waWxl
ciB3YXJuaW5nLgotfQotCiBjb25zdCBjaGFyKiBIZWFwVmVyaWZpZXI6OnBoYXNlTmFtZShIZWFw
VmVyaWZpZXI6OlBoYXNlIHBoYXNlKQogewogICAgIHN3aXRjaCAocGhhc2UpIHsKQEAgLTgxLDcg
KzYzLDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmluaXRpYWxpemVHQ0N5Y2xlKCkKIHsKICAgICBI
ZWFwKiBoZWFwID0gbV9oZWFwOwogICAgIGluY3JlbWVudEN5Y2xlKCk7Ci0gICAgY3VycmVudEN5
Y2xlKCkuY29sbGVjdGlvblR5cGUgPSBoZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCk7CisgICAg
Y3VycmVudEN5Y2xlKCkuc2NvcGUgPSAqaGVhcC0+Y29sbGVjdGlvblNjb3BlKCk7CiB9CiAKIHN0
cnVjdCBHYXRoZXJMaXZlT2JqRnVuY3RvciA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3IgewpA
QCAtMTk1LDcgKzE3Nyw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpyZXBvcnRPYmplY3QoTGl2ZU9i
amUKIAogICAgIGlmIChvYmpEYXRhLmlzQ29uZmlybWVkRGVhZCkgewogICAgICAgICBkYXRhTG9n
RigiRk9VTkQgZGVhZCBvYmogJXAgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwKLSAgICAgICAg
ICAgIG9iaiwgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCksIGxpc3QubmFt
ZSk7CisgICAgICAgICAgICBvYmosIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29wZU5hbWUoY3lj
bGUuc2NvcGUoKSksIGxpc3QubmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIw
Niw3ICsxODgsNyBAQCB2b2lkIEhlYXBWZXJpZmllcjo6cmVwb3J0T2JqZWN0KExpdmVPYmplCiAg
ICAgZGF0YUxvZ0YoIkZPVU5EIG9iaiAlcCB0eXBlICclcycgYnV0dGVyZmx5ICVwIChiYXNlICVw
KSBpbiBHQ1slZF0gJXMgbGlzdCAnJXMnXG4iLAogICAgICAgICBvYmosIHN0cnVjdHVyZS0+Y2xh
c3NJbmZvKCktPmNsYXNzTmFtZSwKICAgICAgICAgYnV0dGVyZmx5LCBidXR0ZXJmbHlCYXNlLAot
ICAgICAgICBjeWNsZUluZGV4LCBjeWNsZS5jb2xsZWN0aW9uVHlwZU5hbWUoKSwgbGlzdC5uYW1l
KTsKKyAgICAgICAgY3ljbGVJbmRleCwgY29sbGVjdGlvblNjb3BlTmFtZShjeWNsZS5zY29wZSgp
KSwgbGlzdC5uYW1lKTsKIH0KIAogdm9pZCBIZWFwVmVyaWZpZXI6OmNoZWNrSWZSZWNvcmRlZChK
U09iamVjdCogb2JqKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlm
aWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlm
aWVyLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBWZXJpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAg
ICAvLyBvYmplY3Qgd2FzIGluIGFueSBvZiB0aG9zZSBsaXN0cy4KICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGNoZWNrSWZSZWNvcmRlZChKU09iamVjdCopOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbGxlY3Rpb25UeXBlTmFtZShIZWFwT3BlcmF0aW9uKTsKICAgICBzdGF0aWMgY29u
c3QgY2hhciogcGhhc2VOYW1lKFBoYXNlKTsKIAogcHJpdmF0ZToKQEAgLTY1LDE0ICs2NCw5IEBA
IHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIEhlYXBPcGVyYXRpb24g
Y29sbGVjdGlvblR5cGU7CisgICAgICAgIENvbGxlY3Rpb25TY29wZSBzY29wZTsKICAgICAgICAg
TGl2ZU9iamVjdExpc3QgYmVmb3JlOwogICAgICAgICBMaXZlT2JqZWN0TGlzdCBhZnRlcjsKLQot
ICAgICAgICBjb25zdCBjaGFyKiBjb2xsZWN0aW9uVHlwZU5hbWUoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gSGVhcFZlcmlmaWVyOjpjb2xsZWN0aW9uVHlwZU5hbWUoY29s
bGVjdGlvblR5cGUpOwotICAgICAgICB9CiAgICAgfTsKIAogICAgIHZvaWQgaW5jcmVtZW50Q3lj
bGUoKSB7IG1fY3VycmVudEN5Y2xlID0gKG1fY3VycmVudEN5Y2xlICsgMSkgJSBtX251bWJlck9m
Q3ljbGVzOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWxwaW5nSGVhcFNj
b3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVscGluZ0hl
YXBTY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
bHBpbmdIZWFwU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIZWFwLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBIZWxwaW5nSGVhcFNjb3BlIHsKK3B1YmxpYzoKKyAgICBIZWxwaW5nSGVhcFNj
b3BlKEhlYXAmIGhlYXApCisgICAgICAgIDogbV9oZWFwKGhlYXApCisgICAgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX2hlYXAubV9tdXRhdG9yU3RhdGUgPT0gTXV0YXRvclN0YXRlOjpSdW5u
aW5nKTsKKyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0YXRlID0gTXV0YXRvclN0YXRlOjpIZWxw
aW5nSGVhcDsKKyAgICB9CisgICAgCisgICAgfkhlbHBpbmdIZWFwU2NvcGUoKQorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLm1fbXV0YXRvclN0YXRlID09IE11dGF0b3JTdGF0
ZTo6SGVscGluZ0hlYXApOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3RhdGUgPSBNdXRhdG9y
U3RhdGU6OlJ1bm5pbmc7CisgICAgfQorCitwcml2YXRlOgorICAgIEhlYXAmIG1faGVhcDsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9MYXJnZUFsbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBMYXJnZUFsbG9jYXRpb246OnJlYXBXZWFrU2V0KCkKIAogdm9p
ZCBMYXJnZUFsbG9jYXRpb246OmZsaXAoKQogewotICAgIEFTU0VSVChoZWFwKCktPm9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbik7CisgICAgQVNTRVJUKGhlYXAoKS0+Y29s
bGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKICAgICBjbGVhck1hcmtl
ZCgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFs
bG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKIAotI2lu
Y2x1ZGUgIkFsbG9jYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5o
IgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWxwaW5nSGVhcFNjb3BlLmgiCiAjaW5j
bHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgpAQCAtMTg1LDcgKzE4NSw2IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmRvVGUKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBtX2hlYXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQVNTRVJUKG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsK
ICAgICB9CiAgICAgaWYgKCsrYWxsb2NhdGlvbkNvdW50ID49IE9wdGlvbnM6OnNsb3dQYXRoQWxs
b2NzQmV0d2VlbkdDcygpKQogICAgICAgICBhbGxvY2F0aW9uQ291bnQgPSAwOwpAQCAtMjE2LDcg
KzIxNSw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAK
ICAgICBtX2hlYXAtPmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoZGVmZXJyYWxDb250ZXh0KTsK
ICAgICAKLSAgICBBbGxvY2F0aW9uU2NvcGUgYWxsb2NhdGlvblNjb3BlKCptX2hlYXApOworICAg
IEhlbHBpbmdIZWFwU2NvcGUgaGVhbHBpbmdIZWFwKCptX2hlYXApOwogCiAgICAgdm9pZCogcmVz
dWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRGVzdHJ1Y3Rpb25Nb2RlLmgiCiAjaW5jbHVkZSAi
RnJlZUxpc3QuaCIKICNpbmNsdWRlICJIZWFwQ2VsbC5oIgotI2luY2x1ZGUgIkhlYXBPcGVyYXRp
b24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25TdGF0dXMuaCIKICNpbmNsdWRlICJXZWFrU2V0Lmgi
CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM4LDcgKzMz
OCw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIAogICAgIG1f
YWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFrU2V0cyk7CiAgICAgCi0gICAg
aWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKQorICAg
IGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikK
ICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9sYXJn
ZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fbGFyZ2VBbGxv
Y2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IDA7CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9p
ZCBNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhIZWFwUm9vdAogICAgIAogICAgIG1fbmV3QWN0
aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+b3BlcmF0
aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX2hlYXAtPmNvbGxl
Y3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9hY3RpdmVX
ZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKIH0KIApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgTWFy
a2VkU3BhY2U6OnJlYXBXZWFrU2V0cygpCiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5m
b3JFYWNoKHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCkgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZvckVh
Y2godmlzaXQpOwogfQogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c3Rv
cEFsbG9jYXRpbmcoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yTWFya2luZygpCiB7
Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9u
KQorICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbikKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24g
PSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKICAgICAgICAgbV9s
YXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24gPSAwOwpAQCAtNDUzLDcgKzQ1
Myw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiAKIHZvaWQgTWFya2VkU3BhY2U6OmJl
Z2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09
IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0g
Q29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAg
ICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0
dXMgewogICAgICAgICAgICAgICAgIGFsbG9jYXRvci5iZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVj
dGlvbigpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZFNw
YWNlOjpmaW5kRW0KIAogdm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkKIHsKLSAg
ICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsK
KyAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVk
ZW4pIHsKICAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgICAgIFsmXSAoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICAg
ICAgYWxsb2NhdG9yLnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0YXRvclN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTXV0YXRvclN0YXRlIHN0YXRlKQoreworICAg
IHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIE11dGF0b3JTdGF0ZTo6UnVubmluZzoKKyAgICAg
ICAgb3V0LnByaW50KCJSdW5uaW5nIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE11dGF0
b3JTdGF0ZTo6SGVscGluZ0hlYXA6CisgICAgICAgIG91dC5wcmludCgiSGVscGluZ0hlYXAiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTXV0YXRvclN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTXV0YXRvclN0YXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTXV0YXRvclN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFz
cyBNdXRhdG9yU3RhdGUgeworICAgIC8vIFRoZSBtdXRhdG9yIGlzIHJ1bm5pbmcgd2hlbiBpdCdz
IG5vdCBpbnNpZGUgYSBIZWFwIHNsb3cgcGF0aC4KKyAgICBSdW5uaW5nLAorICAgIAorICAgIC8v
IFRoZSBtdXRhdG9yIGlzIGluIGEgR0Mgc2xvdyBwYXRoLCBwYXlpbmcgdGhlIGhlYXAgdGF4LiBJ
dCdzIGdlbmVyYWxseSBub3Qgc2FmZSB0byBkbyBhbnkKKyAgICAvLyBnZW5lcmFsIEpTIGNvZGUg
d2hlbiBpbiB0aGlzIHN0YXRlLgorICAgIEhlbHBpbmdIZWFwCit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6Ok11dGF0b3JTdGF0ZSk7CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3IuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgU2xvdFZpc2l0
b3I6On5TbG90VmlzaXRvcigpCiAKIHZvaWQgU2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2luZygp
CiB7Ci0gICAgaWYgKGhlYXAoKS0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0
aW9uKQorICAgIGlmIChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29w
ZTo6RnVsbCkKICAgICAgICAgQVNTRVJUKG1fb3BhcXVlUm9vdHMuaXNFbXB0eSgpKTsgLy8gU2hv
dWxkIGhhdmUgbWVyZ2VkIGJ5IG5vdy4KICAgICBlbHNlCiAgICAgICAgIHJlc2V0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyMCwxNyArMzIwLDE2IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50
OjpnZXRSZW1vdGVPYmplY3QKICAgICByZXN1bHQgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0
KGNlbGwsIG9iamVjdEdyb3VwLCB0cnVlKTsKIH0KIAotc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlIHByb3RvY29sVHlwZUZvckhlYXBPcGVy
YXRpb24oSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCitzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUgcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJh
dGlvbihDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiB7Ci0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsK
LSAgICBjYXNlIEZ1bGxDb2xsZWN0aW9uOgorICAgIHN3aXRjaCAoc2NvcGUpIHsKKyAgICBjYXNl
IENvbGxlY3Rpb25TY29wZTo6RnVsbDoKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOwotICAgIGNhc2UgRWRlbkNv
bGxlY3Rpb246CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46CiAgICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6UGFy
dGlhbDsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpU
eXBlOjpGdWxsOwogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OkZ1bGw7
CiB9CiAKIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojp3aWxsR2FyYmFnZUNvbGxlY3QoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9ySGVhcEFnZW50LmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEhlYXBPYnNlcnZlcgog
ICAgIHZvaWQgd2lsbEdhcmJhZ2VDb2xsZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRHYXJi
YWdlQ29sbGVjdChKU0M6OkhlYXBPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkR2Fy
YmFnZUNvbGxlY3QoSlNDOjpDb2xsZWN0aW9uU2NvcGUpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBjbGVhckhlYXBTbmFwc2hvdHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA3NjE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzU1LDkgKzc1NSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNT
RVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1
c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAg
IGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkp
KQpAQCAtOTAwLDggKzkwMCw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENh
bGxGcmEKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2bS5pc0Nv
bGxlY3RvckJ1c3koKSk7Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIEFTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOworICAgIGlmICh2bS5pc0Nv
bGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwog
CiAgICAgYm9vbCBpc0pTQ2FsbCA9IChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SlMpOwpAQCAtOTYy
LDEwICs5NjIsMTAgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQVNT
RVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKICAgICAvLyBXZSB0aHJvdyBpbiB0aGlzIGNhc2UgYmVjYXVzZSB3ZSBoYXZlIHRvIHJldHVy
biBzb21ldGhpbmcgInZhbGlkIiBidXQgd2UncmUKICAgICAvLyBhbHJlYWR5IGluIGFuIGludmFs
aWQgc3RhdGUuCi0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0Nv
bGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKICAg
ICBib29sIGlzSlNDb25zdHJ1Y3QgPSAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpK
Uyk7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpw
cmVwYXJlRm9yCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKICAgICAKLSAgICBpZiAodm0u
aXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRo
cmVhZCgpKQogICAgICAgICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwogCiAgICAgLy8gQ29t
cGlsZSB0aGUgY2FsbGVlOgpAQCAtMTA1Myw5ICsxMDUzLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShDYWxsRnJhbWVDbAogICAgIFZNJiB2bSA9ICpjbG9zdXJlLnZtOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2
bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwogCiAgICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CkBAIC0x
MDc2LDkgKzEwNzYsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRh
CiAKICAgICBBU1NFUlQoc2NvcGUtPnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNT
RVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBW
TUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKQEAgLTEx
ODIsOSArMTE4Miw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3IK
IAogICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NF
UlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JC
dXN5KCkpOworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
OwotICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JC
dXN5T25DdXJyZW50VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIFZN
RW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9u
IDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwotICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIENv
ZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2UpOwogCkBAIC0xNzQsNyArMTc0LDcgQEAgSlNJbnRl
cm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwogICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAg
IHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUds
b2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBp
bml0aWF0b3IpOwogfQpAQCAtMTg1LDcgKzE4NSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2Fk
QW5kRXZhbHVhdGVNb2R1bGUKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwotICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5
bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CiAKQEAgLTIx
Miw3ICsyMTIsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+
dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdU
YWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3ko
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJy
ZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+
dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVs
ZU5hbWUpLCBpbml0aWF0b3IpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIEpTSW50ZXJuYWxQcm9t
aXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSoKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsK
IAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2bSk7
CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVj
U3RhdGUqCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9t
aWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxl
Y3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JC
dXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5tb2R1bGVMb2FkZXIoKS0+bGlua0FuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIGlkZW50aWZpZXJU
b0pTVmFsdWUoZXhlYy0+dm0oKSwgbW9kdWxlS2V5KSwgaW5pdGlhdG9yKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjY3LDcgKzI2Nyw3IEBAIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoVk0q
IHYKIHsKICAgICBpZiAoIW1fdm0pCiAgICAgICAgIHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VS
VCghbV92bS0+YXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkgfHwgIW1fdm0t
PmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+YXBpTG9jaygp
LmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkgfHwgIW1fdm0tPmlzQ29sbGVjdG9yQnVzeU9u
Q3VycmVudFRocmVhZCgpKTsKICAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2Nr
KCkuZHJvcEFsbExvY2tzKHRoaXMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMTMsOSArMTEzLDkgQEAgcHVibGljOgogICAgIEpTU3RyaW5nKiBu
dWxsT2JqZWN0U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9udWxsT2JqZWN0U3RyaW5nOyB9CiAg
ICAgSlNTdHJpbmcqIHVuZGVmaW5lZE9iamVjdFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdW5k
ZWZpbmVkT2JqZWN0U3RyaW5nOyB9CiAKLSAgICBib29sIG5lZWRzVG9CZVZpc2l0ZWQoSGVhcE9w
ZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkgY29uc3QKKyAgICBib29sIG5lZWRzVG9CZVZpc2l0ZWQo
Q29sbGVjdGlvblNjb3BlIHNjb3BlKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rp
b25UeXBlID09IEZ1bGxDb2xsZWN0aW9uKQorICAgICAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlv
blNjb3BlOjpGdWxsKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBt
X25lZWRzVG9CZVZpc2l0ZWQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsNyArNTc2LDcgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wUmVnRXhwVHJhY2UoKTsKIAotICAgIGJvb2wg
aXNDb2xsZWN0b3JCdXN5KCkgeyByZXR1cm4gaGVhcC5pc0J1c3koKTsgfQorICAgIGJvb2wgaXND
b2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkgeyByZXR1cm4gaGVhcC5pc0N1cnJlbnRUaHJl
YWRCdXN5KCk7IH0KIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgIGJvb2wgaXNJbml0
aWFsaXppbmdPYmplY3QoKSBjb25zdDsgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAkocmV2aXNp
b24gMjA3NjE4KQorKysgU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MCwxNCArMTkwLDE0IEBAIGJvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9y
VGhyZWFkKFQKIH0KICNlbmRpZgogCi1zdGF0aWMgVGhyZWFkU3BlY2lmaWM8Ym9vbD4qIGlzR0NU
aHJlYWQ7CitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPj4qIGlz
R0NUaHJlYWQ7CiAKIHZvaWQgaW5pdGlhbGl6ZUdDVGhyZWFkcygpCiB7Ci0gICAgaXNHQ1RocmVh
ZCA9IG5ldyBUaHJlYWRTcGVjaWZpYzxib29sPigpOworICAgIGlzR0NUaHJlYWQgPSBuZXcgVGhy
ZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPj4oKTsKIH0KIAotdm9pZCByZWdpc3Rl
ckdDVGhyZWFkKCkKK3ZvaWQgcmVnaXN0ZXJHQ1RocmVhZChHQ1RocmVhZFR5cGUgdHlwZSkKIHsK
ICAgICBpZiAoIWlzR0NUaHJlYWQpIHsKICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGlmIHdlJ3Jl
IHJ1bm5pbmcgaW4gYSBwcm9jZXNzIHRoYXQgZG9lc24ndCBjYXJlIGFib3V0CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCByZWdpc3RlckdDVGhyZWFkKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgICoqaXNHQ1RocmVhZCA9IHRydWU7CisgICAgKippc0dDVGhyZWFkID0gdHlwZTsKIH0K
IAogYm9vbCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCkKQEAgLTIxNiw5ICsyMTYsMTMgQEAgYm9v
bCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCkKICAgICByZXR1cm4gaXNNYWluVGhyZWFkKCk7CiB9
CiAKLWJvb2wgbWF5QmVHQ1RocmVhZCgpCitPcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NU
aHJlYWQoKQogewotICAgIHJldHVybiBpc0dDVGhyZWFkICYmIGlzR0NUaHJlYWQtPmlzU2V0KCkg
JiYgKippc0dDVGhyZWFkOworICAgIGlmICghaXNHQ1RocmVhZCkKKyAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgaWYgKCFpc0dDVGhyZWFkLT5pc1NldCgpKQorICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICByZXR1cm4gKippc0dDVGhyZWFkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9XVEYvd3Rm
L01haW5UaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMTIgQEAKICNpbmNsdWRl
IDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xh
c3MgUHJpbnRTdHJlYW07CisKIHR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKIAog
Ly8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCkBAIC02Nyw4ICs3MCwxNSBA
QCBpbmxpbmUgYm9vbCBpc1VJVGhyZWFkKCkgeyByZXR1cm4gaXNNYWluCiAKIHZvaWQgaW5pdGlh
bGl6ZUdDVGhyZWFkcygpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhy
ZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYXlCZUdDVGhyZWFkKCk7CitlbnVtIGNs
YXNzIEdDVGhyZWFkVHlwZSB7CisgICAgTWFpbiwKKyAgICBIZWxwZXIKK307CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEdDVGhyZWFkVHlwZSk7CisKK1dURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJlYWRUeXBlKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBPcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKTsKIAogLy8gTk9URTogdGhlc2Ug
ZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRh
dGlvbi4KQEAgLTg4LDYgKzk4LDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vz
c01haW5UaAogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpHQ1RocmVhZFR5cGU7
CiB1c2luZyBXVEY6OmNhbGxPbk1haW5UaHJlYWQ7CiB1c2luZyBXVEY6OmNhbkFjY2Vzc1RocmVh
ZExvY2FsRGF0YUZvclRocmVhZDsKIHVzaW5nIFdURjo6aXNNYWluVGhyZWFkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292242</attachid>
            <date>2016-10-20 13:17:22 -0700</date>
            <delta_ts>2016-10-20 15:00:18 -0700</delta_ts>
            <desc>getting closer</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>95534</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNzYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDUxLDYgKzQ1MSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAKICAgICBoZWFw
L0FsbG9jYXRvckF0dHJpYnV0ZXMuY3BwCiAgICAgaGVhcC9Db2RlQmxvY2tTZXQuY3BwCisgICAg
aGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAK
ICAgICBoZWFwL0RlZmVyR0MuY3BwCiAgICAgaGVhcC9EZXN0cnVjdGlvbk1vZGUuY3BwCkBAIC00
NjQsNyArNDY1LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBoZWFwL0hlYXAu
Y3BwCiAgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAot
ICAgIGhlYXAvSGVhcE9wZXJhdGlvbi5jcHAKICAgICBoZWFwL0hlYXBQcm9maWxlci5jcHAKICAg
ICBoZWFwL0hlYXBTbmFwc2hvdC5jcHAKICAgICBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
CkBAIC00ODAsNiArNDgwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBoZWFw
L01hcmtlZEFsbG9jYXRvci5jcHAKICAgICBoZWFwL01hcmtlZEJsb2NrLmNwcAogICAgIGhlYXAv
TWFya2VkU3BhY2UuY3BwCisgICAgaGVhcC9NdXRhdG9yU3RhdGUuY3BwCiAgICAgaGVhcC9TbG90
VmlzaXRvci5jcHAKICAgICBoZWFwL1dlYWsuY3BwCiAgICAgaGVhcC9XZWFrQmxvY2suY3BwCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NzcsMTQgKzE2NzcsMTQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZ1bGxHQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KEZ1bGxDb2xs
ZWN0aW9uKTsKKyAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpGdWxs
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMtPmhlYXAoKS0+c2l6
ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KEVkZW5Db2xsZWN0aW9u
KTsKKyAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMtPmhlYXAoKS0+c2l6ZUFmdGVy
TGFzdEVkZW5Db2xsZWN0aW9uKCkpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNCYXNlLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjUs
NyArMTY1LDcgQEAgdm9pZCBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbgogCiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
ZXhlYyk7Ci0gICAgZXhlYy0+dm0oKS5oZWFwLmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOworICAg
IGV4ZWMtPnZtKCkuaGVhcC5jb2xsZWN0KENvbGxlY3Rpb25TY29wZTo6RWRlbik7CiB9CiAKIHZv
aWQgSlNEaXNhYmxlR0NUaW1lcih2b2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNyAr
NTEwLDYgQEAKIAkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICov
OyB9OwogCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1
QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgzNjRCNzE2NEIwQzEx
MDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJh
bmNoRGlyZWN0aW9uLmggKi87IH07Ci0JCTBGODZBMjZEMUQ2Rjc5NjUwMENCMEM5MiAvKiBIZWFw
T3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGODZBMjZDMUQ2Rjc5NjIwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCAqLzsgfTsK
IAkJMEY4NkEyNkYxRDZGN0IzMzAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkUxRDZGN0IzMTAwQ0IwQzky
IC8qIEdDVHlwZU1hcC5oICovOyB9OwogCQkwRjg2QUUyMDFDNTMxMUM1MDA2QkU4RUMgLyogQjND
b21wdXRlRGl2aXNpb25NYWdpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY4NkFFMUYxQzUzMTFDNTAwNkJFOEVDIC8qIEIzQ29tcHV0ZURpdmlzaW9u
TWFnaWMuaCAqLzsgfTsKIAkJMEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNl
RGVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg4
NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTkyLDYgKzU5MSwxMiBAQAogCQkw
RkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI3MTUwRTk1MkEwMEI5QTJE
OSAvKiBERkdOb2RlRmxhZ3MuY3BwICovOyB9OwogCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkg
LyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkE1ODFCODE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggKi87IH07
CiAJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjkxNTBFOTUyQTAwQjlB
MkQ5IC8qIERGR05vZGVUeXBlLmggKi87IH07CisJCTBGQTc2MjA0MURCOTI0MjYwMEI3QTJGRCAv
KiBDb2xsZWN0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5j
cHAgKi87IH07CisJCTBGQTc2MjA1MURCOTI0MjkwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAx
MURCOTI0MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkE3NjIwNjFEQjkyNDMxMDBCN0EyRkQg
LyogTXV0YXRvclN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwICov
OyB9OworCQkwRkE3NjIwNzFEQjkyNDMzMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMzFEQjkyNDIz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZBNzYyMDkxREI5MjgzRTAwQjdBMkZEIC8qIEhlbHBpbmdI
ZWFwU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQTc2MjA4MURCOTI4M0MwMEI3QTJGRCAvKiBIZWxwaW5nSGVhcFNjb3BlLmggKi87IH07CisJ
CTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjBBMURCOTU5RjYwMEI3
QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCAqLzsgfTsKIAkJMEZBN0E4RUIxOEI0MTNDODAwNTIz
NzFEIC8qIFJlZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkE3QThFOTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLzsgfTsKIAkJMEZBN0E4
RUMxOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RUExOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQTdBOEVFMThD
RTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RUQxOENFNEZEODAwNTIz
NzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgKi87IH07CkBAIC02MjMsNyArNjI4
LDYgQEAKIAkJMEZCNEZCNzMxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MDFC
Qzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCAqLzsgfTsKIAkJMEZCNEZCNzQx
QkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzExQkM4NDMxNDAwMjVDQTVBIC8qIEZU
TExhenlTbG93UGF0aC5oICovOyB9OwogCQkwRkI0RkI3NTFCQzg0MzE0MDAyNUNBNUEgLyogRlRM
TGF6eVNsb3dQYXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCNEZCNzIxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwu
aCAqLzsgfTsKLQkJMEZCNTMwMzkxRDkwNDA0QzAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTMwMzgx
RDkwNDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovOyB9OwogCQkwRkI1NDY3NzE0
RjU5QjVDMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4
OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQjU0Njc5MTRGNUM0NkIwMDJDMjk4OSAvKiBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkI1NDY3ODE0RjVDNDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwICovOyB9OwogCQkwRkI1NDY3QjE0RjVDN0UxMDAyQzI5ODkgLyogTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTE1Niw3ICsxMTYwLDYgQEAKIAkJMkE0QkI3RjMxOEE0MTE3OTAwOEEwRkNE
IC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEJCN0YyMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRW
YWx1ZUludGVybmFsLmggKi87IH07CiAJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0
ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkE0RUM5MDkxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5j
cHAgKi87IH07CiAJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVD
OTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyQTZGNDYyNjE3RTk1OUNFMDBD
NDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdB
NThFRjE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVm
ZXJHQy5jcHAgKi87IH07CiAJCTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJBODM2MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLzsgfTsKIAkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4MzQsNyAr
MjgzNyw2IEBACiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVC
NTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFu
Y2hEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNo
RGlyZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGODZBMjZDMUQ2Rjc5NjIwMENCMEM5MiAvKiBIZWFwT3BlcmF0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBPcGVyYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg2QTI2RTFENkY3QjMxMDBD
QjBDOTIgLyogR0NUeXBlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdD
VHlwZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg2QUUxRjFDNTMxMUM1
MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmg7IHBhdGggPSBiMy9CM0NvbXB1
dGVEaXZpc2lvbk1hZ2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODg1RTEw
MTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCeXRlY29kZVVzZURlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjkxNSw2ICsyOTE3LDEyIEBACiAJCTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBE
RkdOb2RlRmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
Tm9kZUZsYWdzLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkE1ODFCODE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVGbGFncy5oOyBwYXRo
ID0gZGZnL0RGR05vZGVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE1
ODFCOTE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHTm9kZVR5cGUuaDsgcGF0aCA9IGRmZy9ERkdOb2RlVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMDFEQjkyNDIzMDBCN0EyRkQgLyog
Q29sbGVjdGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbGxlY3Rpb25TY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTc2
MjAxMURCOTI0MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29sbGVjdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRvclN0YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzYyMDMxREI5MjQyMzAwQjdBMkZEIC8qIE11
dGF0b3JTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdG9yU3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzYyMDgxREI5MjgzQzAwQjdB
MkZEIC8qIEhlbHBpbmdIZWFwU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGVscGluZ0hlYXBTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3
NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpbmdTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkE3QThFOTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQTdBOEVBMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5NTYsNyArMjk2NCw2
IEBACiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoLmNwcDsg
cGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExhenlTbG93UGF0aC5oOyBwYXRoID0gZnRs
L0ZUTExhenlTbG93UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3
MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGhDYWxsLmg7IHBhdGggPSBmdGwvRlRM
TGF6eVNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkI1MzAz
ODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2NzgxNEY1QzQ2ODAw
MkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzQ1MCw3ICszNDU3LDYgQEAKIAkJMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpT
TWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
QTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRlQmFycmllckJ1ZmZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBX
cml0ZUJhcnJpZXJCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3Jp
dGVCYXJyaWVyQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJBNkY0NjI1
MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJBODM2MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkZW5HQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTgzNjM4NDE4
RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01NDQ3LDcgKzU0NTMsNyBAQAogCQkxNDJFMzEyQTEzNEZGMEE2
MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJMEZCNTMwMzgxRDkwNDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICov
LAorCQkJCTBGQTc2MjBBMURCOTU5RjYwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCAqLywK
IAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkgLyogQWxsb2NhdG9yQXR0cmlidXRlcy5jcHAg
Ki8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMu
aCAqLywKIAkJCQkwRjA3MEE0MjFENTQzQTg5MDA2RTcyMzIgLyogQ2VsbENvbnRhaW5lci5oICov
LApAQCAtNTQ1Niw2ICs1NDYyLDggQEAKIAkJCQkwRkQ4QTMxMTE3RDQzMjZDMDBDQTJDNDAgLyog
Q29kZUJsb2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyogQ29k
ZUJsb2NrU2V0LmggKi8sCiAJCQkJMEY2NjRDRTcxREEzMDRFRDAwQjAwQTExIC8qIENvZGVCbG9j
a1NldElubGluZXMuaCAqLywKKwkJCQkwRkE3NjIwMDFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVj
dGlvblNjb3BlLmNwcCAqLywKKwkJCQkwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVj
dGlvblNjb3BlLmggKi8sCiAJCQkJMTQ2QjE0REIxMkVCNUIxMjAwMUJFQzFCIC8qIENvbnNlcnZh
dGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFGMjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2Vy
dmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJH
Qy5jcHAgKi8sCkBAIC01NTAwLDggKzU1MDgsNiBAQAogCQkJCUMyREE3NzgyMThFMjU5OTkwMDY2
RkNCNiAvKiBIZWFwSW5saW5lcy5oICovLAogCQkJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAv
KiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLywKIAkJCQlBNTMzOUVDODFCQjRCNDUxMDA1NEYwMDUg
LyogSGVhcE9ic2VydmVyLmggKi8sCi0JCQkJMEY4NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8qIEhl
YXBPcGVyYXRpb24uY3BwICovLAotCQkJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFw
T3BlcmF0aW9uLmggKi8sCiAJCQkJQTUzOThGQTkxQzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9m
aWxlci5jcHAgKi8sCiAJCQkJQTUzOThGQUExQzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxl
ci5oICovLAogCQkJCTE0Rjk3NDQ2MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3Iu
aCAqLywKQEAgLTU1MTYsNiArNTUyMiw3IEBACiAJCQkJMEZBREU2NzIxRDREMjNCQzAwNzY4NDU3
IC8qIEhlYXBVdGlsLmggKi8sCiAJCQkJRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBW
ZXJpZmllci5jcHAgKi8sCiAJCQkJRkU3QkE2MEUxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJp
Zmllci5oICovLAorCQkJCTBGQTc2MjA4MURCOTI4M0MwMEI3QTJGRCAvKiBIZWxwaW5nSGVhcFNj
b3BlLmggKi8sCiAJCQkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dl
ZXBlci5jcHAgKi8sCiAJCQkJQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFs
U3dlZXBlci5oICovLAogCQkJCTBGNzY2RDI5MTVBOENDMzQwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZVNldC5jcHAgKi8sCkBAIC01NTQxLDYgKzU1NDgsOCBAQAogCQkJCTBGN0M1RkI5MUQ4ODk1
MDUwMDQ0RjVFMiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLywKIAkJCQkxNDJENkYwRTEzNTM5
QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLywKIAkJCQkxNDJENkYwRjEzNTM5QTQxMDBC
MDJFODYgLyogTWFya1N0YWNrLmggKi8sCisJCQkJMEZBNzYyMDIxREI5MjQyMzAwQjdBMkZEIC8q
IE11dGF0b3JTdGF0ZS5jcHAgKi8sCisJCQkJMEZBNzYyMDMxREI5MjQyMzAwQjdBMkZEIC8qIE11
dGF0b3JTdGF0ZS5oICovLAogCQkJCUFEREIxRjYyMThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVS
b290U2V0LmggKi8sCiAJCQkJQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9y
LmNwcCAqLywKIAkJCQkxNEJBNzhGMDEzQUFCODhGMDA1QjdDMkMgLyogU2xvdFZpc2l0b3IuaCAq
LywKQEAgLTc1MDAsNiArNzUwOSw3IEBACiAJCQkJMEZFQzg1MDMxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQmFzaWNCbG9ja1V0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwNDFCREFDREFD
MDA4MEZGNzQgLyogQjNCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUw
NjFCREFDREFDMDA4MEZGNzQgLyogQjNDaGVja1NwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGQTc2MjA3MURCOTI0MzMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUM4NTA4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NoZWNrVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUM4NTBBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW1vbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc2MDAsNyArNzYxMCw2IEBACiAJCQkJNjJENzU1RDcxQjg0RkI0
QTAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBC
ODNCMTE0QkNGNzE4MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjkzMzI5RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTBGQjUzMDM5MUQ5MDQwNEMwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTYyNzY3MzI0MUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNCN0UyQjE5
QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNzkwNSw2
ICs3OTE0LDggQEAKIAkJCQkyQUQyRURGQjE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25N
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNDYwNzBFMUY0OTdGMDAzMjMyQ0YgLyogRXJy
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDJFOTBEMEUxODM5REIwMDBGOTI5NyAvKiBFcnJv
ckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0Ey
RkQgLyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwOTFEQjky
ODNFMDBCN0EyRkQgLyogSGVscGluZ0hlYXBTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVC
NThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMwMkU5OEQwRTE4M0UzODAwMEY5Mjk3IC8qIEVycm9ySW5zdGFuY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDJFOTBGMEUxODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDU0LDcgKzgwNjUsNiBAQAogCQkJCTJBRDg5MzJCMTdF
Mzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MzM5RUM5MUJCNEI0NjAwMDU0RjAwNSAvKiBIZWFwT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUFEMkZDQkVCMURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVh
cFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjREMzFFMzE2MUNENjk1MDAyQUE0
REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRTUyNkJFMTU5MEVG
MDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovLApAQCAtODExNyw2ICs4MTI3
LDcgQEAKIAkJCQlBMTgxOTNFMzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdGRUQg
LyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTgxOTNFNDFC
NEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZBNzYyMDUxREI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxODdBMEYxQzAzMEQ2QzAwMzhCQkNBIC8q
IFNuaXBwZXRPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3MDFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQ4MSw3ICs5NDkyLDYgQEAKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5REY3NDQgLyogREZH
UGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5MDA4MkM1RTggLyog
REZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZD
OTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkwRjg2QTI2RDFENkY3OTY1MDBDQjBDOTIgLyogSGVhcE9wZXJh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNFMDFBQTE5RDM1M0E1MDBGNjFCN0YgLyog
REZHUHJlUG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFQzE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZCMTc2NjIxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTk2MjgsNiArOTYzOCw3IEBACiAJCQkJQTU4RTM1OTExODYwREVDRjAwMUYy
NEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEzRTVD
QTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkE3NjIwNDFEQjkyNDI2MDBCN0EyRkQgLyogQ29s
bGVjdGlvblNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEE3QkVGMUI4Mjk3NUEwMDJE
OTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NTUx
N0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNUNFRUUxNDE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC05NzgyLDYgKzk3OTMsNyBAQAogCQkJCURDMTdFODE3MUM5QzkxRDYwMDhB
NkFCMyAvKiBTaGFkb3dDaGlja2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mjk5RDlEMTdE
MTI4MzcwMDVGNUZGOSAvKiBKU1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzkwREQ2RjE4
MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RkE3NjIwNjFEQjkyNDMxMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBDTG9vcFN0YWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3MEVDMEVDMjFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVy
YXRvci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ3NCw3
ICszNDc0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aQogICAg
ICAgICAvLyBUaGlzIGFjY29tcGxpc2hlcyAoMSksIGFuZCBkb2VzIGl0cyBvd24gYm9vay1rZWVw
aW5nIGFib3V0IHdoZXRoZXIgaXQgaGFzIGFscmVhZHkgaGFwcGVuZWQuCiAgICAgICAgIGlmICgh
aml0Q29kZSgpLT5kZmdDb21tb24oKS0+aW52YWxpZGF0ZSgpKSB7CiAgICAgICAgICAgICAvLyBX
ZSd2ZSBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQuCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCh0aGlzICE9IHJlcGxhY2VtZW50KCkgfHwgKG1fdm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkgJiYg
IUhlYXA6OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQodGhpcyAhPSByZXBsYWNlbWVudCgpIHx8IChtX3ZtLT5oZWFwLmlzQ3Vy
cmVudFRocmVhZEJ1c3koKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJTY3JpcHRFeGVjdXRhYmxl
KCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTA2LDcg
KzM1MDYsNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpCiAKICAg
ICAvLyBKZXR0aXNvbiBjYW4gaGFwcGVuIGR1cmluZyBHQy4gV2UgZG9uJ3Qgd2FudCB0byBpbnN0
YWxsIGNvZGUgdG8gYSBkZWFkIGV4ZWN1dGFibGUKICAgICAvLyBiZWNhdXNlIHRoYXQgd291bGQg
YWRkIGEgZGVhZCBvYmplY3QgdG8gdGhlIHJlbWVtYmVyZWQgc2V0LgotICAgIGlmIChtX3ZtLT5o
ZWFwLmlzQ29sbGVjdGluZygpICYmICFIZWFwOjppc01hcmtlZChvd25lclNjcmlwdEV4ZWN1dGFi
bGUoKSkpCisgICAgaWYgKG1fdm0tPmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFw
Ojppc01hcmtlZChvd25lclNjcmlwdEV4ZWN1dGFibGUoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgyKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDkgKzEw
MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRp
b25RdWV1ZSgpKQogICAgICAgICAgICAgZGF0YUxvZyhtX3dvcmtsaXN0LCAiOiBDb21waWxpbmcg
IiwgbV9wbGFuLT5rZXkoKSwgIiBhc3luY2hyb25vdXNseVxuIik7CiAgICAgICAgIAotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9wbGFuLT52bS0+aGVhcC5pc0NvbGxlY3RpbmcoKSk7CisgICAg
ICAgIC8vIFRoZXJlJ3Mgbm8gd2F5IGZvciB0aGUgR0MgdG8gYmUgc2FmZXBvaW50aW5nIHNpbmNl
IHdlIG93biByaWdodFRvUnVuLgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BsYW4tPnZtLT5o
ZWFwLm11dGF0b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6SGVscGluZ0hlYXApOwogICAgICAg
ICBtX3BsYW4tPmNvbXBpbGVJblRocmVhZCgqbV9sb25nTGl2ZWRTdGF0ZSwgJm1fZGF0YSk7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+c3RhZ2UgPT0gUGxhbjo6Q2FuY2VsbGVkIHx8
ICFtX3BsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV9wbGFuLT5zdGFnZSA9PSBQbGFuOjpDYW5jZWxsZWQgfHwgbV9wbGFuLT52bS0+aGVhcC5t
dXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwKTsKICAgICAgICAgCiAg
ICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3dvcmtsaXN0Lm1fbG9j
ayk7CkBAIC0xMjMsNyArMTI0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX3dvcmtsaXN0Lm1fcGxhbkNvbXBpbGVkLm5vdGlmeUFsbCgpOwogICAgICAgICB9Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT52bS0+aGVhcC5tdXRhdG9yU3RhdGUoKSAh
PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBX
b3JrUmVzdWx0OjpDb250aW51ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZS5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZQogCiAgICAgaWYgKHNhZmVw
b2ludFJlc3VsdC5kaWRHZXRDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJFTEVB
U0VfQVNTRVJUKCFzdGF0ZS5ncmFwaC5tX3ZtLmhlYXAuaXNDb2xsZWN0aW5nKCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHN0YXRlLmdyYXBoLm1fdm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRh
dG9yU3RhdGU6OkhlbHBpbmdIZWFwKTsKICAgICAKICAgICBpZiAoc3RhdGUuYWxsb2NhdGlvbkZh
aWxlZCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QWxsb2NhdGluZ1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQWxsb2NhdGluZ1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSGVhcC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgQWxsb2NhdGluZ1Njb3BlIHsKK3B1YmxpYzoKKyAgICBBbGxv
Y2F0aW5nU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAgOiBtX2hlYXAoaGVhcCkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5tX211dGF0b3JTdGF0ZSA9PSBNdXRhdG9yU3Rh
dGU6OlJ1bm5pbmcpOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3RhdGUgPSBNdXRhdG9yU3Rh
dGU6OkFsbG9jYXRpbmc7CisgICAgfQorICAgIAorICAgIH5BbGxvY2F0aW5nU2NvcGUoKQorICAg
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLm1fbXV0YXRvclN0YXRlID09IE11dGF0
b3JTdGF0ZTo6QWxsb2NhdGluZyk7CisgICAgICAgIG1faGVhcC5tX211dGF0b3JTdGF0ZSA9IE11
dGF0b3JTdGF0ZTo6UnVubmluZzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSGVhcCYgbV9oZWFw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkobm9uZXhpc3RlbnQpCkBAIC0x
LDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIZWFwLmgiCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1jbGFzcyBBbGxvY2F0aW9uU2NvcGUgewotcHVibGljOgotICAgIEFsbG9jYXRpb25TY29wZShI
ZWFwJiBoZWFwKQotICAgICAgICA6IG1faGVhcChoZWFwKQotICAgICAgICAsIG1fbGFzdE9wZXJh
dGlvbihtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fbGFzdE9wZXJhdGlvbiA9PSBOb09wZXJhdGlvbiB8fCBtX2xhc3RPcGVyYXRpb24gPT0gQWxs
b2NhdGlvbik7Ci0gICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBBbGxvY2F0
aW9uOwotICAgIH0KLSAgICAKLSAgICB+QWxsb2NhdGlvblNjb3BlKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID09IEFsbG9jYXRpb24pOwotICAg
ICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID0gbV9sYXN0T3BlcmF0aW9uOwotICAg
IH0KLXByaXZhdGU6Ci0gICAgSGVhcCYgbV9oZWFwOwotICAgIEhlYXBPcGVyYXRpb24gbV9sYXN0
T3BlcmF0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENvZGVCbG9ja1NldDo6bGFzdENoYW5jZVRvRmlu
YWxpemUoCiAgICAgICAgIGNvZGVCbG9jay0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ry
b3koY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tTZXQ6OmRlbGV0ZVVubWFya2VkQW5k
VW5yZWZlcmVuY2VkKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCit2b2lkIENvZGVCbG9j
a1NldDo6ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoQ29sbGVjdGlvblNjb3BlIHNjb3Bl
KQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOwotICAgIEhhc2hTZXQ8Q29kZUJs
b2NrKj4mIHNldCA9IGNvbGxlY3Rpb25UeXBlID09IEVkZW5Db2xsZWN0aW9uID8gbV9uZXdDb2Rl
QmxvY2tzIDogbV9vbGRDb2RlQmxvY2tzOworICAgIEhhc2hTZXQ8Q29kZUJsb2NrKj4mIHNldCA9
IHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiA/IG1fbmV3Q29kZUJsb2NrcyA6IG1fb2xk
Q29kZUJsb2NrczsKICAgICBWZWN0b3I8Q29kZUJsb2NrKj4gdW5tYXJrZWQ7CiAgICAgZm9yIChD
b2RlQmxvY2sqIGNvZGVCbG9jayA6IHNldCkgewogICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQo
Y29kZUJsb2NrKSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6OmRlbGV0ZVVu
bWFya2VkQW5kVW5yZQogICAgIH0KIAogICAgIC8vIEFueSByZW1haW5pbmcgeW91bmcgQ29kZUJs
b2NrcyBhcmUgbGl2ZSBhbmQgbmVlZCB0byBiZSBwcm9tb3RlZCB0byB0aGUgc2V0IG9mIG9sZCBD
b2RlQmxvY2tzLgotICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBFZGVuQ29sbGVjdGlvbikKKyAg
ICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBwcm9tb3RlWW91
bmdDb2RlQmxvY2tzKGxvY2tlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4
ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgi
CiAjaW5jbHVkZSAiR0NTZWdtZW50ZWRBcnJheS5oIgotI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24u
aCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICAvLyBEZWxldGUgYWxsIGNvZGUgYmxvY2tzIHRoYXQgYXJlIG9ubHkgcmVmZXJlbmNlZCBi
eSB0aGlzIHNldCAoaS5lLiBvd25lZAogICAgIC8vIGJ5IHRoaXMgc2V0KSwgYW5kIHRoYXQgaGF2
ZSBub3QgYmVlbiBtYXJrZWQuCi0gICAgdm9pZCBkZWxldGVVbm1hcmtlZEFuZFVucmVmZXJlbmNl
ZChIZWFwT3BlcmF0aW9uKTsKKyAgICB2b2lkIGRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2Vk
KENvbGxlY3Rpb25TY29wZSk7CiAgICAgCiAgICAgLy8gQWRkIGFsbCBjdXJyZW50bHkgZXhlY3V0
aW5nIENvZGVCbG9ja3MgdG8gdGhlIHJlbWVtYmVyZWQgc2V0IHRvIGJlIAogICAgIC8vIHJlLXNj
YW5uZWQgZHVyaW5nIHRoZSBuZXh0IGNvbGxlY3Rpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29sbGVjdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBjb2xsZWN0aW9uU2NvcGVOYW1lKENv
bGxlY3Rpb25TY29wZSBzY29wZSkKK3sKKyAgICBzd2l0Y2ggKHNjb3BlKSB7CisgICAgY2FzZSBD
b2xsZWN0aW9uU2NvcGU6OkVkZW46CisgICAgICAgIHJldHVybiAiRWRlbiI7CisgICAgY2FzZSBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGw6CisgICAgICAgIHJldHVybiAiRnVsbCI7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29sbGVjdGlvblNjb3BlIHNjb3BlKQoreworICAg
IG91dC5wcmludChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUoc2NvcGUpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rp
b25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxl
Y3Rpb25TY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbGxlY3Rpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgQ29s
bGVjdGlvblNjb3BlIHsgRWRlbiwgRnVsbCB9OworCitjb25zdCBjaGFyKiBjb2xsZWN0aW9uU2Nv
cGVOYW1lKENvbGxlY3Rpb25TY29wZSk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3Bh
Y2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rpb25TY29wZSk7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NB
Y3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5
LDcgKzM5LDcgQEAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYQogCiB2
b2lkIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigpCiB7Ci0gICAgbV92bS0+
aGVhcC5jb2xsZWN0KEVkZW5Db2xsZWN0aW9uKTsKKyAgICBtX3ZtLT5oZWFwLmNvbGxlY3QoQ29s
bGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogZG91YmxlIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6
Omxhc3RHQ0xlbmd0aCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0Nv
bGxlY3RpbwogICAgIH0KICNlbmRpZgogCi0gICAgaGVhcC5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9u
KTsKKyAgICBoZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKIH0KIAogZG91Ymxl
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NUeXBlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIZWFwT3BlcmF0aW9uLmgiCisjaW5j
bHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0zNSwyMCArMzUsMjQgQEAgc3RydWN0IEdDVHlwZU1hcCB7CiAg
ICAgVCBlZGVuOwogICAgIFQgZnVsbDsKICAgICAKLSAgICBUJiBvcGVyYXRvcltdKEhlYXBPcGVy
YXRpb24gb3BlcmF0aW9uKQorICAgIFQmIG9wZXJhdG9yW10oQ29sbGVjdGlvblNjb3BlIHNjb3Bl
KQogICAgIHsKLSAgICAgICAgaWYgKG9wZXJhdGlvbiA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICAg
ICAgc3dpdGNoIChzY29wZSkgeworICAgICAgICBjYXNlIENvbGxlY3Rpb25TY29wZTo6RnVsbDoK
ICAgICAgICAgICAgIHJldHVybiBmdWxsOwotICAgICAgICBBU1NFUlQob3BlcmF0aW9uID09IEVk
ZW5Db2xsZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGVkZW47CisgICAgICAgIGNhc2UgQ29sbGVj
dGlvblNjb3BlOjpFZGVuOgorICAgICAgICAgICAgcmV0dXJuIGVkZW47CisgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgY29uc3QgVCYgb3BlcmF0b3JbXShIZWFwT3BlcmF0aW9uIG9wZXJhdGlv
bikgY29uc3QKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKENvbGxlY3Rpb25TY29wZSBzY29wZSkg
Y29uc3QKICAgICB7Ci0gICAgICAgIGlmIChvcGVyYXRpb24gPT0gRnVsbENvbGxlY3Rpb24pCisg
ICAgICAgIHN3aXRjaCAoc2NvcGUpIHsKKyAgICAgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkZ1
bGw6CiAgICAgICAgICAgICByZXR1cm4gZnVsbDsKLSAgICAgICAgQVNTRVJUKG9wZXJhdGlvbiA9
PSBFZGVuQ29sbGVjdGlvbik7Ci0gICAgICAgIHJldHVybiBlZGVuOworICAgICAgICBjYXNlIENv
bGxlY3Rpb25TY29wZTo6RWRlbjoKKyAgICAgICAgICAgIHJldHVybiBlZGVuOworICAgICAgICB9
CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSGVhcFNuYXBzaG90LmgiCiAj
aW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJIZWFwVmVyaWZpZXIuaCIKKyNp
bmNsdWRlICJIZWxwaW5nSGVhcFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVy
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNl
dC5oIgpAQCAtMTQwLDE1ICsxNDEsMTUgQEAgSGFzaE1hcDxjb25zdCBjaGFyKiwgR0NUeXBlTWFw
PFNpbXBsZVN0YQogICAgIHJldHVybiAqcmVzdWx0OwogfQogCi1TaW1wbGVTdGF0cyYgdGltaW5n
U3RhdHMoY29uc3QgY2hhciogbmFtZSwgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCitTaW1wbGVT
dGF0cyYgdGltaW5nU3RhdHMoY29uc3QgY2hhciogbmFtZSwgQ29sbGVjdGlvblNjb3BlIHNjb3Bl
KQogewotICAgIHJldHVybiB0aW1pbmdTdGF0cygpLmFkZChuYW1lLCBHQ1R5cGVNYXA8U2ltcGxl
U3RhdHM+KCkpLml0ZXJhdG9yLT52YWx1ZVtvcGVyYXRpb25dOworICAgIHJldHVybiB0aW1pbmdT
dGF0cygpLmFkZChuYW1lLCBHQ1R5cGVNYXA8U2ltcGxlU3RhdHM+KCkpLml0ZXJhdG9yLT52YWx1
ZVtzY29wZV07CiB9CiAKIGNsYXNzIFRpbWluZ1Njb3BlIHsKIHB1YmxpYzoKLSAgICBUaW1pbmdT
Y29wZShIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29uc3QgY2hhciogbmFtZSkKLSAgICAgICAg
OiBtX29wZXJhdGlvbihvcGVyYXRpb24pCisgICAgVGltaW5nU2NvcGUoT3B0aW9uYWw8Q29sbGVj
dGlvblNjb3BlPiBzY29wZSwgY29uc3QgY2hhciogbmFtZSkKKyAgICAgICAgOiBtX3Njb3BlKHNj
b3BlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKICAgICAgICAgaWYgKG1lYXN1cmVQ
aGFzZVRpbWluZygpKQpAQCAtMTU2LDE4ICsxNTcsMTggQEAgcHVibGljOgogICAgIH0KICAgICAK
ICAgICBUaW1pbmdTY29wZShIZWFwJiBoZWFwLCBjb25zdCBjaGFyKiBuYW1lKQotICAgICAgICA6
IFRpbWluZ1Njb3BlKGhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcygpLCBuYW1lKQorICAgICAgICA6
IFRpbWluZ1Njb3BlKGhlYXAuY29sbGVjdGlvblNjb3BlKCksIG5hbWUpCiAgICAgewogICAgIH0K
ICAgICAKLSAgICB2b2lkIHNldE9wZXJhdGlvbihIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikKKyAg
ICB2b2lkIHNldFNjb3BlKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiAgICAgewot
ICAgICAgICBtX29wZXJhdGlvbiA9IG9wZXJhdGlvbjsKKyAgICAgICAgbV9zY29wZSA9IHNjb3Bl
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldE9wZXJhdGlvbihIZWFwJiBoZWFwKQorICAgIHZv
aWQgc2V0U2NvcGUoSGVhcCYgaGVhcCkKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGlvbihoZWFw
Lm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgICAgIHNldFNjb3BlKGhlYXAuY29sbGVjdGlv
blNjb3BlKCkpOwogICAgIH0KICAgICAKICAgICB+VGltaW5nU2NvcGUoKQpAQCAtMTc1LDEzICsx
NzYsMTMgQEAgcHVibGljOgogICAgICAgICBpZiAobWVhc3VyZVBoYXNlVGltaW5nKCkpIHsKICAg
ICAgICAgICAgIGRvdWJsZSBhZnRlciA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1TKCk7
CiAgICAgICAgICAgICBkb3VibGUgdGltaW5nID0gYWZ0ZXIgLSBtX2JlZm9yZTsKLSAgICAgICAg
ICAgIFNpbXBsZVN0YXRzJiBzdGF0cyA9IHRpbWluZ1N0YXRzKG1fbmFtZSwgbV9vcGVyYXRpb24p
OworICAgICAgICAgICAgU2ltcGxlU3RhdHMmIHN0YXRzID0gdGltaW5nU3RhdHMobV9uYW1lLCAq
bV9zY29wZSk7CiAgICAgICAgICAgICBzdGF0cy5hZGQodGltaW5nKTsKLSAgICAgICAgICAgIGRh
dGFMb2coIltHQzoiLCBtX29wZXJhdGlvbiwgIl0gIiwgbV9uYW1lLCAiIHRvb2s6ICIsIHRpbWlu
ZywgIiBtcyAoYXZlcmFnZSAiLCBzdGF0cy5tZWFuKCksICIgbXMpLlxuIik7CisgICAgICAgICAg
ICBkYXRhTG9nKCJbR0M6IiwgKm1fc2NvcGUsICJdICIsIG1fbmFtZSwgIiB0b29rOiAiLCB0aW1p
bmcsICIgbXMgKGF2ZXJhZ2UgIiwgc3RhdHMubWVhbigpLCAiIG1zKS5cbiIpOwogICAgICAgICB9
CiAgICAgfQogcHJpdmF0ZToKLSAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9uOworICAgIE9w
dGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9zY29wZTsKICAgICBkb3VibGUgbV9iZWZvcmU7CiAg
ICAgY29uc3QgY2hhciogbV9uYW1lOwogfTsKQEAgLTIwMyw3ICsyMDQsNiBAQCBIZWFwOjpIZWFw
KFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0
ZXNQZXJDeWNsZSkKICAgICAsIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSkKICAgICAs
IG1fdG90YWxCeXRlc1Zpc2l0ZWQoMCkKLSAgICAsIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09w
ZXJhdGlvbikKICAgICAsIG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fZXh0cmFNZW1vcnlT
aXplKDApCiAgICAgLCBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUoMCkKQEAgLTI1Miw3ICsy
NTIsOCBAQCBib29sIEhlYXA6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQogdm9pZCBIZWFw
OjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmVu
dHJ5U2NvcGUpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBO
b09wZXJhdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fY29sbGVjdGlvblNjb3BlKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX211dGF0b3JTdGF0ZSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcp
OwogCiAgICAgbV9hcnJheUJ1ZmZlcnMubGFzdENoYW5jZVRvRmluYWxpemUoKTsKICAgICBtX2Nv
ZGVCbG9ja3MtPmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBAIC00MDgsNyArNDA5LDcgQEAgdm9p
ZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLAogICAgICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogCi0gICAgICAgIGlmIChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fY29sbGVjdGlvblNj
b3BlID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgewogICAgICAgICAgICAgbV9vcGFxdWVSb290
cy5jbGVhcigpOwogICAgICAgICAgICAgbV9zbG90VmlzaXRvci5jbGVhck1hcmtTdGFjaygpOwog
ICAgICAgICB9CkBAIC00MzEsNyArNDMyLDcgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91Ymxl
IGdjU3RhcnRUaW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvdFZpc2l0b3IgPSBtX2F2
YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAgICAgV1RGOjpyZWdpc3RlckdDVGhyZWFkKCk7CisgICAgICAgICAg
ICAgICAgV1RGOjpyZWdpc3RlckdDVGhyZWFkKEdDVGhyZWFkVHlwZTo6SGVscGVyKTsKIAogICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBw
YXJhbGxlbE1vZGVFbmFibGVyKCpzbG90VmlzaXRvcik7CkBAIC01MjYsNyArNTI3LDcgQEAgdm9p
ZCBIZWFwOjpnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoQ29ucwogdm9pZCBIZWFwOjpiZWdpbk1h
cmtpbmcoKQogewogICAgIFRpbWluZ1Njb3BlIHRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6YmVn
aW5NYXJraW5nIik7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVj
dGlvbikKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxs
KQogICAgICAgICBtX2NvZGVCbG9ja3MtPmNsZWFyTWFya3NGb3JGdWxsQ29sbGVjdGlvbigpOwog
ICAgIAogICAgIHsKQEAgLTU0NCw3ICs1NDUsNyBAQCB2b2lkIEhlYXA6OnZpc2l0RXh0ZXJuYWxS
ZW1lbWJlcmVkU2V0KCkKIAogdm9pZCBIZWFwOjp2aXNpdFNtYWxsU3RyaW5ncygpCiB7Ci0gICAg
aWYgKCFtX3ZtLT5zbWFsbFN0cmluZ3MubmVlZHNUb0JlVmlzaXRlZChtX29wZXJhdGlvbkluUHJv
Z3Jlc3MpKQorICAgIGlmICghbV92bS0+c21hbGxTdHJpbmdzLm5lZWRzVG9CZVZpc2l0ZWQoKm1f
Y29sbGVjdGlvblNjb3BlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV92bS0+c21hbGxTdHJp
bmdzLnZpc2l0U3Ryb25nUmVmZXJlbmNlcyhtX3Nsb3RWaXNpdG9yKTsKQEAgLTc2Myw3ICs3NjQs
NyBAQCB2b2lkIEhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyhkb3VibGUgZ2NTCiAgICAgICAgIGRh
dGFMb2dGKCJcbk51bWJlciBvZiBsaXZlIE9iamVjdHMgYWZ0ZXIgR0MgJWx1LCB0b29rICUuNmYg
c2Vjc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmlzaXRDb3VudCksIFdURjo6bW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBnY1N0YXJ0VGltZSk7CiAgICAgfQogICAgIAot
ICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYg
KG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV90
b3RhbEJ5dGVzVmlzaXRlZCA9IDA7CiAKICAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkVGhpc0N5Y2xl
ID0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0ZWQoKSArIHRocmVhZEJ5dGVzVmlzaXRlZCgpOwpA
QCAtODcxLDcgKzg3Miw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcygpCiAgICAg
Ly8gSWYgSmF2YVNjcmlwdCBpcyBydW5uaW5nLCBpdCdzIG5vdCBzYWZlIHRvIGRlbGV0ZSBhbGwg
SmF2YVNjcmlwdCBjb2RlLCBzaW5jZQogICAgIC8vIHdlJ2xsIGVuZCB1cCByZXR1cm5pbmcgdG8g
ZGVsZXRlZCBjb2RlLgogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5lbnRyeVNjb3BlKTsKLSAg
ICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKKyAgICBBU1NF
UlQoIW1fY29sbGVjdGlvblNjb3BlKTsKIAogICAgIGNvbXBsZXRlQWxsSklUUGxhbnMoKTsKIApA
QCAtOTA4LDcgKzkwOSw3IEBAIHZvaWQgSGVhcDo6Y2xlYXJVbm1hcmtlZEV4ZWN1dGFibGVzKCkK
IHZvaWQgSGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKQogewogICAgIGNsZWFyVW5t
YXJrZWRFeGVjdXRhYmxlcygpOwotICAgIG1fY29kZUJsb2Nrcy0+ZGVsZXRlVW5tYXJrZWRBbmRV
bnJlZmVyZW5jZWQobV9vcGVyYXRpb25JblByb2dyZXNzKTsKKyAgICBtX2NvZGVCbG9ja3MtPmRl
bGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKCptX2NvbGxlY3Rpb25TY29wZSk7CiAgICAgbV9q
aXRTdHViUm91dGluZXMtPmRlbGV0ZVVubWFya2VkSmV0dGlzb25lZFN0dWJSb3V0aW5lcygpOwog
fQogCkBAIC05MzIsNyArOTMzLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCiAg
ICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29sbGVj
dFdpdGhvdXRBbnlTd2VlcChGdWxsQ29sbGVjdGlvbik7CisgICAgY29sbGVjdFdpdGhvdXRBbnlT
d2VlcChDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZl
ckdDKCp0aGlzKTsKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3Rz
KCkpKQpAQCAtOTU1LDI5ICs5NTYsMjkgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgp
CiAgICAgc3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja3MoKTsKIH0KIAotdm9pZCBIZWFw
Ojpjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCit2b2lkIEhlYXA6OmNvbGxl
Y3QoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVj
dCkKICAgICAgICAgcmV0dXJuOwotCi0gICAgY29sbGVjdFdpdGhvdXRBbnlTd2VlcChjb2xsZWN0
aW9uVHlwZSk7CisgICAgCisgICAgY29sbGVjdFdpdGhvdXRBbnlTd2VlcChzY29wZSk7CiB9CiAK
LU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RXaXRob3V0QW55U3dlZXAoSGVhcE9wZXJh
dGlvbiBjb2xsZWN0aW9uVHlwZSkKK05FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RXaXRo
b3V0QW55U3dlZXAoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKIHsKICAgICB2b2lk
KiBzdGFja1RvcDsKICAgICBBTExPQ0FURV9BTkRfR0VUX1JFR0lTVEVSX1NUQVRFKHJlZ2lzdGVy
cyk7CiAKLSAgICBjb2xsZWN0SW1wbChjb2xsZWN0aW9uVHlwZSwgd3RmVGhyZWFkRGF0YSgpLnN0
YWNrKCkub3JpZ2luKCksICZzdGFja1RvcCwgcmVnaXN0ZXJzKTsKKyAgICBjb2xsZWN0SW1wbChz
Y29wZSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkub3JpZ2luKCksICZzdGFja1RvcCwgcmVnaXN0
ZXJzKTsKIAogICAgIHNhbml0aXplU3RhY2tGb3JWTShtX3ZtKTsKIH0KIAotTkVWRVJfSU5MSU5F
IHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSwgdm9p
ZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJT
dGF0ZSYgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpCitORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xs
ZWN0SW1wbChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlLCB2b2lkKiBzdGFja09yaWdp
biwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpSZWdpc3RlclN0YXRlJiBjYWxsZWVT
YXZlZFJlZ2lzdGVycykKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7Ci0gICAgVGltaW5nU2NvcGUgY29sbGVjdEltcGxUaW1pbmdTY29wZShjb2xsZWN0
aW9uVHlwZSwgIkhlYXA6OmNvbGxlY3RJbXBsIik7CisgICAgVGltaW5nU2NvcGUgY29sbGVjdElt
cGxUaW1pbmdTY29wZShzY29wZSwgIkhlYXA6OmNvbGxlY3RJbXBsIik7CiAgICAgCiAjaWYgRU5B
QkxFKEFMTE9DQVRJT05fTE9HR0lORykKICAgICBkYXRhTG9nRigiSlNDIEdDIHN0YXJ0aW5nIGNv
bGxlY3Rpb24uXG4iKTsKQEAgLTk5MCw4MSArOTkxLDc4IEBAIE5FVkVSX0lOTElORSB2b2lkIEhl
YXA6OmNvbGxlY3RJbXBsKEhlYXAKICAgICB9CiAgICAgCiAgICAgZG91YmxlIGdjU3RhcnRUaW1l
OwotICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUgZWFybHlUaW1pbmdTY29wZShjb2xsZWN0aW9u
VHlwZSwgIkhlYXA6OmNvbGxlY3RJbXBsIGJlZm9yZSBtYXJrUm9vdHMiKTsKLQotICAgICAgICBp
ZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKLSAgICAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUg
YXdoaWxlKCp0aGlzKTsKLSAgICAgICAgICAgIHZtKCktPnR5cGVQcm9maWxlckxvZygpLT5wcm9j
ZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkdDIikpOwotICAgICAgICB9Ci0KKyAgICAKKyAg
ICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKKyAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBh
d2hpbGUoKnRoaXMpOworICAgICAgICB2bSgpLT50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xv
Z0VudHJpZXMoQVNDSUlMaXRlcmFsKCJHQyIpKTsKKyAgICB9CisgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICAgICAgewotICAgICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBhd2hpbGUoKnRoaXMp
OwotICAgICAgICAgICAgSklUV29ya2xpc3Q6Omluc3RhbmNlKCktPmNvbXBsZXRlQWxsRm9yVk0o
Km1fdm0pOwotICAgICAgICB9CisgICAgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGls
ZSgqdGhpcyk7CisgICAgICAgIEpJVFdvcmtsaXN0OjppbnN0YW5jZSgpLT5jb21wbGV0ZUFsbEZv
clZNKCptX3ZtKTsKKyAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKLQotICAgICAgICB2bSgp
LT5zaGFkb3dDaGlja2VuKCkudXBkYXRlKCp2bSgpLCB2bSgpLT50b3BDYWxsRnJhbWUpOwotCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOwotICAgICAgICBBU1NFUlQo
dm0oKS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21p
Y1N0cmluZ1RhYmxlKCkpOwotICAgICAgICBBU1NFUlQobV9pc1NhZmVUb0NvbGxlY3QpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24p
OwotCi0gICAgICAgIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsKLSAgICAgICAgd2lsbFN0YXJ0
Q29sbGVjdGlvbihjb2xsZWN0aW9uVHlwZSk7CisgICAgCisgICAgdm0oKS0+c2hhZG93Q2hpY2tl
bigpLnVwZGF0ZSgqdm0oKSwgdm0oKS0+dG9wQ2FsbEZyYW1lKTsKKyAgICAKKyAgICBSRUxFQVNF
X0FTU0VSVCghbV9kZWZlcnJhbERlcHRoKTsKKyAgICBBU1NFUlQodm0oKS0+Y3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAg
QVNTRVJUKG1faXNTYWZlVG9Db2xsZWN0KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xsZWN0
aW9uU2NvcGUpOworICAgIAorICAgIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsKKyAgICB3aWxs
U3RhcnRDb2xsZWN0aW9uKHNjb3BlKTsKKyAgICB7CisgICAgICAgIEhlbHBpbmdIZWFwU2NvcGUg
aGVscGluZ0hlYXBTY29wZSgqdGhpcyk7CisgICAgICAgIAorICAgICAgICBjb2xsZWN0SW1wbFRp
bWluZ1Njb3BlLnNldFNjb3BlKCp0aGlzKTsKICAgICAgICAgCi0gICAgICAgIGNvbGxlY3RJbXBs
VGltaW5nU2NvcGUuc2V0T3BlcmF0aW9uKCp0aGlzKTsKLSAgICAgICAgZWFybHlUaW1pbmdTY29w
ZS5zZXRPcGVyYXRpb24oKnRoaXMpOwotCiAgICAgICAgIGdjU3RhcnRUaW1lID0gV1RGOjptb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICAgICAgaWYgKG1fdmVyaWZpZXIpIHsKICAg
ICAgICAgICAgIC8vIFZlcmlmeSB0aGF0IGxpdmUgb2JqZWN0cyBmcm9tIHRoZSBsYXN0IEdDIGN5
Y2xlIGhhdmVuJ3QgYmVlbiBjb3JydXB0ZWQgYnkKICAgICAgICAgICAgIC8vIG11dGF0b3JzIGJl
Zm9yZSB3ZSBiZWdpbiB0aGlzIG5ldyBHQyBjeWNsZS4KICAgICAgICAgICAgIG1fdmVyaWZpZXIt
PnZlcmlmeShIZWFwVmVyaWZpZXI6OlBoYXNlOjpCZWZvcmVHQyk7Ci0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV92ZXJpZmllci0+aW5pdGlhbGl6ZUdDQ3ljbGUoKTsKICAgICAgICAgICAg
IG1fdmVyaWZpZXItPmdhdGhlckxpdmVPYmplY3RzKEhlYXBWZXJpZmllcjo6UGhhc2U6OkJlZm9y
ZU1hcmtpbmcpOwogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAgIGZsdXNoT2xkU3RydWN0
dXJlSURUYWJsZXMoKTsKICAgICAgICAgc3RvcEFsbG9jYXRpb24oKTsKICAgICAgICAgcHJlcGFy
ZUZvck1hcmtpbmcoKTsKICAgICAgICAgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKLQorICAg
ICAgICAKICAgICAgICAgaWYgKEhhc093blByb3BlcnR5Q2FjaGUqIGNhY2hlID0gdm0oKS0+aGFz
T3duUHJvcGVydHlDYWNoZSgpKQogICAgICAgICAgICAgY2FjaGUtPmNsZWFyKCk7CisgICAgICAg
IAorICAgICAgICBtYXJrUm9vdHMoZ2NTdGFydFRpbWUsIHN0YWNrT3JpZ2luLCBzdGFja1RvcCwg
Y2FsbGVlU2F2ZWRSZWdpc3RlcnMpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmVyaWZpZXIp
IHsKKyAgICAgICAgICAgIG1fdmVyaWZpZXItPmdhdGhlckxpdmVPYmplY3RzKEhlYXBWZXJpZmll
cjo6UGhhc2U6OkFmdGVyTWFya2luZyk7CisgICAgICAgICAgICBtX3ZlcmlmaWVyLT52ZXJpZnko
SGVhcFZlcmlmaWVyOjpQaGFzZTo6QWZ0ZXJNYXJraW5nKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICAgICAgdm0oKS0+dHlw
ZVByb2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKKyAgICAgICAgCisgICAgICAg
IHJlYXBXZWFrSGFuZGxlcygpOworICAgICAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NN
YXBzKCk7CisgICAgICAgIHN3ZWVwQXJyYXlCdWZmZXJzKCk7CisgICAgICAgIHNuYXBzaG90VW5z
d2VwdCgpOworICAgICAgICBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CisgICAg
ICAgIHJlbW92ZURlYWRDb21waWxlcldvcmtsaXN0RW50cmllcygpOworICAgICAgICBkZWxldGVV
bm1hcmtlZENvbXBpbGVkQ29kZSgpOworICAgICAgICBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hl
cygpOworICAgICAgICAKKyAgICAgICAgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CisgICAg
ICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKHRoaXMpOwor
ICAgICAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7CisgICAgICAg
IAorICAgICAgICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOworICAgICAgICB1cGRhdGVBbGxvY2F0
aW9uTGltaXRzKCk7CiAgICAgfQotCi0gICAgbWFya1Jvb3RzKGdjU3RhcnRUaW1lLCBzdGFja09y
aWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKLSAgICAKLSAgICBUaW1pbmdT
Y29wZSBsYXRlVGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjpjb2xsZWN0SW1wbCBhZnRlciBtYXJr
Um9vdHMiKTsKLQotICAgIGlmIChtX3ZlcmlmaWVyKSB7Ci0gICAgICAgIG1fdmVyaWZpZXItPmdh
dGhlckxpdmVPYmplY3RzKEhlYXBWZXJpZmllcjo6UGhhc2U6OkFmdGVyTWFya2luZyk7Ci0gICAg
ICAgIG1fdmVyaWZpZXItPnZlcmlmeShIZWFwVmVyaWZpZXI6OlBoYXNlOjpBZnRlck1hcmtpbmcp
OwotICAgIH0KLQotICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKLSAgICAgICAgdm0oKS0+
dHlwZVByb2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKLQotICAgIHJlYXBXZWFr
SGFuZGxlcygpOwotICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKLSAgICBz
d2VlcEFycmF5QnVmZmVycygpOwotICAgIHNuYXBzaG90VW5zd2VwdCgpOwotICAgIGZpbmFsaXpl
VW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKLSAgICByZW1vdmVEZWFkQ29tcGlsZXJXb3JrbGlz
dEVudHJpZXMoKTsKLSAgICBkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpOwotICAgIGRlbGV0
ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7Ci0KLSAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIo
KTsKLSAgICBtX2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZyh0aGlz
KTsKLSAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7Ci0KLSAgICBw
cmVwYXJlRm9yQWxsb2NhdGlvbigpOwotICAgIHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKICAg
ICBkaWRGaW5pc2hDb2xsZWN0aW9uKGdjU3RhcnRUaW1lKTsKICAgICByZXN1bWVDb21waWxlclRo
cmVhZHMoKTsKICAgICBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKQEAgLTExMDMsMjIgKzExMDEs
MjIgQEAgdm9pZCBIZWFwOjpzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCkKICNlbmRpZgogfQogCi12
b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlw
ZSkKK3ZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2Nv
cGU+IHNjb3BlKQogewogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICBkYXRhTG9n
KCI9PiAiKTsKICAgICAKLSAgICBpZiAoc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihjb2xsZWN0aW9u
VHlwZSkpIHsKLSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gRnVsbENvbGxlY3Rpb247
CisgICAgaWYgKHNob3VsZERvRnVsbENvbGxlY3Rpb24oc2NvcGUpKSB7CisgICAgICAgIG1fY29s
bGVjdGlvblNjb3BlID0gQ29sbGVjdGlvblNjb3BlOjpGdWxsOwogICAgICAgICBtX3Nob3VsZERv
RnVsbENvbGxlY3Rpb24gPSBmYWxzZTsKICAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAg
ICAgICAgICAgICBkYXRhTG9nKCJGdWxsQ29sbGVjdGlvbiwgIik7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gRWRlbkNvbGxlY3Rpb247CisgICAgICAgIG1f
Y29sbGVjdGlvblNjb3BlID0gQ29sbGVjdGlvblNjb3BlOjpFZGVuOwogICAgICAgICBpZiAoT3B0
aW9uczo6bG9nR0MoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkVkZW5Db2xsZWN0aW9uLCAiKTsK
ICAgICB9Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikg
eworICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsK
ICAgICAgICAgbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29s
bGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgICAgIG1fZXh0cmFNZW1vcnlT
aXplID0gMDsKICAgICAgICAgbV9kZXByZWNhdGVkRXh0cmFNZW1vcnlTaXplID0gMDsKQEAgLTEx
MjksNyArMTEyNyw3IEBAIHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmEK
ICAgICAgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCiAgICAgICAgICAgICBtX2Z1bGxB
Y3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVjdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFT
U0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pOworICAgICAgICBB
U1NFUlQobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKICAgICAg
ICAgbV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAr
IG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgfQogCkBAIC0xMTQ3LDcgKzExNDUsNyBA
QCB2b2lkIEhlYXA6OmZsdXNoT2xkU3RydWN0dXJlSURUYWJsZXMoKQogCiB2b2lkIEhlYXA6OmZs
dXNoV3JpdGVCYXJyaWVyQnVmZmVyKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNz
ID09IEVkZW5Db2xsZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxl
Y3Rpb25TY29wZTo6RWRlbikgewogICAgICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5mbHVzaCgq
dGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTcxLDcgKzExNjksNyBAQCB2b2lk
IEhlYXA6OnJlYXBXZWFrSGFuZGxlcygpCiAKIHZvaWQgSGVhcDo6cHJ1bmVTdGFsZUVudHJpZXNG
cm9tV2Vha0dDTWFwcygpCiB7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBGdWxs
Q29sbGVjdGlvbikKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgIT0gQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChhdXRvJiBwcnVuZUNhbGxiYWNrIDog
bV93ZWFrR0NNYXBzLnZhbHVlcygpKQogICAgICAgICBwcnVuZUNhbGxiYWNrKCk7CkBAIC0xMTk1
LDcgKzExOTMsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKIAog
dm9pZCBIZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKQogewotICAgIGlmIChtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9u
U2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGlmICghbV9sb2dpY2Fs
bHlFbXB0eVdlYWtCbG9ja3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9pbmRleE9mTmV4dExv
Z2ljYWxseUVtcHR5V2Vha0Jsb2NrVG9Td2VlcCA9IDA7CiAgICAgfQpAQCAtMTI0Myw3ICsxMjQx
LDcgQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKICAgICBpZiAoT3B0aW9u
czo6Z2NNYXhIZWFwU2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVh
cFNpemUoKSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwogCi0g
ICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlm
IChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAg
Ly8gVG8gYXZvaWQgcGF0aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZlcnkg
bGFyZ2UgaGVhcHMsIHdlIHNldAogICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGltaXQg
YmFzZWQgb24gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCiAgICAgICAgIC8v
IGZpeGVkIG1pbmltdW0uCkBAIC0xMjk4LDggKzEyOTYsOCBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFs
bG9jYXRpb25MaW1pdHMoKQogdm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBn
Y1N0YXJ0VGltZSkKIHsKICAgICBkb3VibGUgZ2NFbmRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fb3BlcmF0
aW9uSW5Qcm9ncmVzczsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xs
ZWN0aW9uKQorICAgIENvbGxlY3Rpb25TY29wZSBzY29wZSA9ICptX2NvbGxlY3Rpb25TY29wZTsK
KyAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2xhc3RG
dWxsR0NMZW5ndGggPSBnY0VuZFRpbWUgLSBnY1N0YXJ0VGltZTsKICAgICBlbHNlCiAgICAgICAg
IG1fbGFzdEVkZW5HQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1lOwpAQCAtMTMyMiwx
MSArMTMyMCwxMSBAQCB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiAg
ICAgICAgIHJlbW92ZURlYWRIZWFwU25hcHNob3ROb2RlcygqaGVhcFByb2ZpbGVyKTsKICAgICB9
CiAKLSAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxl
Y3Rpb24gfHwgbV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKTsKLSAgICBt
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKKyAgICBSRUxFQVNFX0FTU0VSVCht
X2NvbGxlY3Rpb25TY29wZSk7CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBOdWxsb3B0OwogCiAg
ICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+
ZGlkR2FyYmFnZUNvbGxlY3Qob3BlcmF0aW9uKTsKKyAgICAgICAgb2JzZXJ2ZXItPmRpZEdhcmJh
Z2VDb2xsZWN0KHNjb3BlKTsKIH0KIAogdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVhZHMo
KQpAQCAtMTM4OCw3ICsxMzg2LDcgQEAgYm9vbCBIZWFwOjppc1ZhbGlkQWxsb2NhdGlvbihzaXpl
X3QpCiAgICAgaWYgKCFpc1ZhbGlkVGhyZWFkU3RhdGUobV92bSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pCisg
ICAgaWYgKGlzQ3VycmVudFRocmVhZEJ1c3koKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAogICAgIHJldHVybiB0cnVlOwpAQCAtMTQ2NSwyNCArMTQ2MywxNCBAQCB2b2lkIEhlYXA6OmZs
dXNoV3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsCiAgICAgbV93cml0ZUJhcnJpZXJCdWZmZXIuYWRk
KGNlbGwpOwogfQogCi1ib29sIEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJh
dGlvbiByZXF1ZXN0ZWRDb2xsZWN0aW9uVHlwZSkgY29uc3QKK2Jvb2wgSGVhcDo6c2hvdWxkRG9G
dWxsQ29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKSBjb25zdAogewog
ICAgIGlmICghT3B0aW9uczo6dXNlR2VuZXJhdGlvbmFsR0MoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBzd2l0Y2ggKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7Ci0gICAgY2FzZSBF
ZGVuQ29sbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgRnVsbENvbGxl
Y3Rpb246Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKKyAg
ICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4gbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICpzY29wZSA9PSBDb2xsZWN0aW9uU2Nv
cGU6OkZ1bGw7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTG9naWNhbGx5RW1wdHlXZWFrQmxvY2soV2Vh
a0Jsb2NrKiBibG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9u
IDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIsMTcgKzIyLDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NJbmNv
bWluZ1JlZkNvdW50ZWRTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJI
YW5kbGVTdGFjay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgotI2luY2x1ZGUgIkhlYXBP
cGVyYXRpb24uaCIKICNpbmNsdWRlICJMaXN0YWJsZUhhbmRsZXIuaCIKICNpbmNsdWRlICJNYWNo
aW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAi
TWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRh
YmxlLmgiCkBAIC00OCw3ICs0OSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBBbGxv
Y2F0aW9uU2NvcGU7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFz
cyBHQ0RlZmVycmFsQ29udGV4dDsKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgSGVhcDsKIGNsYXNz
IEhlYXBQcm9maWxlcjsKIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIEhlYXBWZXJpZmll
cjsKK2NsYXNzIEhlbHBpbmdIZWFwU2NvcGU7CiBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CiBj
bGFzcyBKSVRTdHViUm91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwpAQCAtMTM5LDEx
ICsxNDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoSGVhcE9ic2VydmVyKiBv
YnNlcnZlcikgeyBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIpOyB9CiAgICAgdm9pZCByZW1v
dmVPYnNlcnZlcihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZUZp
cnN0KG9ic2VydmVyKTsgfQogCi0gICAgLy8gdHJ1ZSBpZiBjb2xsZWN0aW9uIGlzIGluIHByb2dy
ZXNzCi0gICAgYm9vbCBpc0NvbGxlY3RpbmcoKTsKLSAgICBIZWFwT3BlcmF0aW9uIG9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSB7IHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7IH0KLSAgICAvLyB0
cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwotICAgIGJv
b2wgaXNCdXN5KCk7CisgICAgTXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbXV0YXRvclN0YXRlOyB9CisgICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBjb2xs
ZWN0aW9uU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsgfQorCisgICAg
Ly8gV2UncmUgYWx3YXlzIGJ1c3kgb24gdGhlIGNvbGxlY3Rpb24gdGhyZWFkcy4gT24gdGhlIG1h
aW4gdGhyZWFkLCB0aGlzIHJldHVybnMgdHJ1ZSBpZiB3ZSdyZQorICAgIC8vIGhlbHBpbmcgaGVh
cC4KKyAgICBib29sIGlzQ3VycmVudFRocmVhZEJ1c3koKTsKKyAgICAKICAgICBNYXJrZWRTcGFj
ZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3IoKSB7IHJldHVy
biBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVjdG9yKCk7IH0K
ICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0RGVzdHJ1Y3Rvcigp
IHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aERlc3RydWN0b3Io
KTsgfQogICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRh
KCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvckF1eGlsaWFyeURhdGEoKTsgfQpA
QCAtMTcxLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNv
bGxlY3RBbGxHYXJiYWdlKCk7CiAKICAgICBib29sIHNob3VsZENvbGxlY3QoKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSA9
IEFueUNvbGxlY3Rpb24pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdChPcHRp
b25hbDxDb2xsZWN0aW9uU2NvcGU+ID0gTnVsbG9wdCk7CiAgICAgYm9vbCBjb2xsZWN0SWZOZWNl
c3NhcnlPckRlZmVyKEdDRGVmZXJyYWxDb250ZXh0KiA9IG51bGxwdHIpOyAvLyBSZXR1cm5zIHRy
dWUgaWYgaXQgZGlkIGNvbGxlY3QuCiAgICAgdm9pZCBjb2xsZWN0QWNjb3JkaW5nVG9EZWZlckdD
UHJvYmFiaWxpdHkoKTsKIApAQCAtMjY4LDcgKzI3MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCB1
bnNpZ25lZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuICZtX2Jh
cnJpZXJUaHJlc2hvbGQ7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlv
blNjb3BlOworICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW5nU2NvcGU7CiAgICAgZnJpZW5kIGNs
YXNzIENvZGVCbG9jazsKICAgICBmcmllbmQgY2xhc3MgRGVmZXJHQzsKICAgICBmcmllbmQgY2xh
c3MgRGVmZXJHQ0ZvckFXaGlsZTsKQEAgLTI3OCw2ICsyODEsNyBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBIYW5kbGVTZXQ7CiAgICAgZnJpZW5kIGNsYXNzIEhlYXBVdGlsOwogICAgIGZy
aWVuZCBjbGFzcyBIZWFwVmVyaWZpZXI7CisgICAgZnJpZW5kIGNsYXNzIEhlbHBpbmdIZWFwU2Nv
cGU7CiAgICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJSb3V0aW5lOwogICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwpAQCAt
MjkzLDcgKzI5Nyw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5k
IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVy
cmFsQ29udGV4dCosIHNpemVfdCk7CiAKLSAgICB2b2lkIGNvbGxlY3RXaXRob3V0QW55U3dlZXAo
SGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSA9IEFueUNvbGxlY3Rpb24pOworICAgIHZvaWQg
Y29sbGVjdFdpdGhvdXRBbnlTd2VlcChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+ID0gTnVsbG9w
dCk7CiAKICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1
c2Ugd2l0aCBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMuCiAgICAgdm9pZCogYWxsb2NhdGVXaXRo
b3V0RGVzdHJ1Y3RvcihzaXplX3QpOyAvLyBGb3IgdXNlIHdpdGggb2JqZWN0cyB3aXRob3V0IGRl
c3RydWN0b3JzLgpAQCAtMzEyLDEwICszMTYsMTAgQEAgcHJpdmF0ZToKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkU2xvd0Nhc2Uoc2l6ZV90KTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeVNs
b3dDYXNlKHNpemVfdCk7CiAKLSAgICB2b2lkIGNvbGxlY3RJbXBsKEhlYXBPcGVyYXRpb24sIHZv
aWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVy
U3RhdGUmKTsKKyAgICB2b2lkIGNvbGxlY3RJbXBsKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4s
IHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lz
dGVyU3RhdGUmKTsKIAogICAgIHZvaWQgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgIHZv
aWQgd2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKTsKKyAg
ICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPik7CiAg
ICAgdm9pZCBmbHVzaE9sZFN0cnVjdHVyZUlEVGFibGVzKCk7CiAgICAgdm9pZCBmbHVzaFdyaXRl
QmFycmllckJ1ZmZlcigpOwogICAgIHZvaWQgc3RvcEFsbG9jYXRpb24oKTsKQEAgLTM2Niw3ICsz
NzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtCbG9j
a3MoKTsKICAgICBib29sIHN3ZWVwTmV4dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKCk7CiAKLSAg
ICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xs
ZWN0aW9uVHlwZSkgY29uc3Q7CisgICAgYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKE9wdGlv
bmFsPENvbGxlY3Rpb25TY29wZT4gcmVxdWVzdGVkQ29sbGVjdGlvblNjb3BlKSBjb25zdDsKIAog
ICAgIHZvaWQgaW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAgIHZvaWQgZGVjcmVtZW50RGVm
ZXJyYWxEZXB0aCgpOwpAQCAtMzk0LDcgKzM5OCw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1f
dG90YWxCeXRlc1Zpc2l0ZWQ7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlzQ3lj
bGU7CiAgICAgCi0gICAgSGVhcE9wZXJhdGlvbiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7CisgICAg
T3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX2NvbGxlY3Rpb25TY29wZTsKKyAgICBNdXRhdG9y
U3RhdGUgbV9tdXRhdG9yU3RhdGUgeyBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcgfTsKICAgICBTdHJ1
Y3R1cmVJRFRhYmxlIG1fc3RydWN0dXJlSURUYWJsZTsKICAgICBNYXJrZWRTcGFjZSBtX29iamVj
dFNwYWNlOwogICAgIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0PEFycmF5QnVmZmVyPiBtX2FycmF5
QnVmZmVyczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAko
cmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjEgKzQ1LDE2IEBAIGlubGluZSBib29sIEhlYXA6
OnNob3VsZENvbGxlY3QoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFtX2lzU2Fm
ZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpIHx8IG11
dGF0b3JTdGF0ZSgpID09IE11dGF0b3JTdGF0ZTo6SGVscGluZ0hlYXApCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICByZXR1
cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKTsK
ICAgICByZXR1cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IG1fbWF4RWRlblNpemU7CiB9
CiAKLWlubGluZSBib29sIEhlYXA6OmlzQnVzeSgpCitpbmxpbmUgYm9vbCBIZWFwOjppc0N1cnJl
bnRUaHJlYWRCdXN5KCkKIHsKLSAgICByZXR1cm4gbV9vcGVyYXRpb25JblByb2dyZXNzICE9IE5v
T3BlcmF0aW9uOwotfQotCi1pbmxpbmUgYm9vbCBIZWFwOjppc0NvbGxlY3RpbmcoKQotewotICAg
IHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24gfHwgbV9vcGVy
YXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uOworICAgIHJldHVybiBtYXlCZUdDVGhy
ZWFkKCkgfHwgbXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpBbGxvY2F0aW5nOwogfQog
CiBBTFdBWVNfSU5MSU5FIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSGVhcENlbGwqIGNlbGwpCkBA
IC03Niw3ICs3MSw3IEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFsdWUgdikK
IAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwp
CiB7Ci0gICAgQVNTRVJUKCFtYXlCZUdDVGhyZWFkKCkpOworICAgIEFTU0VSVChtYXlCZUdDVGhy
ZWFkKCkgIT0gR0NUaHJlYWRUeXBlOjpIZWxwZXIpOwogICAgIEhlYXBDZWxsKiBjZWxsID0gYml0
d2lzZV9jYXN0PEhlYXBDZWxsKj4ocmF3Q2VsbCk7CiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxv
Y2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtl
ZCgpOwpAQCAtMTYxLDcgKzE1Niw3IEBAIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVt
b3J5QWxsb2MKIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChDZWxs
U3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQogewogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
ZG91YmxlLWNvdW50IHRoZSBleHRyYSBtZW1vcnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlv
dXMgY29sbGVjdGlvbnMuCi0gICAgaWYgKG9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29s
bGVjdGlvbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCisgICAgaWYgKGNvbGxl
Y3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxs
U3RhdGU6Ok9sZEdyZXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNpemVfdCogY291bnRlciA9
ICZtX2V4dHJhTWVtb3J5U2l6ZTsKQEAgLTE3Nyw3ICsxNzIsNyBAQCBpbmxpbmUgdm9pZCBIZWFw
OjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0CiBpbmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRlcm5h
bE1lbW9yeVZpc2l0ZWQoQ2VsbFN0YXRlIG9sZFN0YXRlLCBzaXplX3Qgc2l6ZSkKIHsKICAgICAv
LyBXZSBkb24ndCB3YW50IHRvIGRvdWJsZS1jb3VudCB0aGUgZXh0ZXJuYWwgbWVtb3J5IHRoYXQg
d2FzIHJlcG9ydGVkIGluIHByZXZpb3VzIGNvbGxlY3Rpb25zLgotICAgIGlmIChvcGVyYXRpb25J
blByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpP
bGRHcmV5KQorICAgIGlmIChjb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVk
ZW4gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5KQogICAgICAgICByZXR1cm47CiAK
ICAgICBzaXplX3QqIGNvdW50ZXIgPSAmbV9leHRlcm5hbE1lbW9yeVNpemU7CkBAIC0zNzIsNyAr
MzY3LDcgQEAgaW5saW5lIGJvb2wgSGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZQogCiBpbmxp
bmUgdm9pZCBIZWFwOjpjb2xsZWN0QWNjb3JkaW5nVG9EZWZlckdDUHJvYmFiaWxpdHkoKQogewot
ICAgIGlmIChpc0RlZmVycmVkKCkgfHwgIW1faXNTYWZlVG9Db2xsZWN0IHx8IG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikKKyAgICBpZiAoaXNEZWZlcnJlZCgpIHx8ICFtX2lz
U2FmZVRvQ29sbGVjdCB8fCBjb2xsZWN0aW9uU2NvcGUoKSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBN
dXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmFu
ZG9tTnVtYmVyKCkgPCBPcHRpb25zOjpkZWZlckdDUHJvYmFiaWxpdHkoKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgJKHJldmlzaW9uIDIwNzYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSGVhcE9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIZWFwT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkhlYXBPYnNlcnZlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsR2FyYmFn
ZUNvbGxlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KEhlYXBP
cGVyYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoQ29sbGVj
dGlvblNjb3BlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyMDc2MTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCi17
Ci0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsKLSAgICBjYXNlIE5vT3BlcmF0aW9uOgotICAgICAg
ICBvdXQucHJpbnQoIk5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQWxsb2NhdGlv
bjoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBGdWxsQ29sbGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJGdWxsIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkVkZW4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKLSAgICAgICAgb3V0
LnByaW50KCJBbnkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9uIDIwNzYx
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWVudW0gSGVhcE9wZXJhdGlvbiB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0
aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rpb24sIEFueUNvbGxlY3Rpb24gfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVh
bTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SGVhcE9wZXJh
dGlvbik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mywy
NCArNDMsNiBAQCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1CiAgICAg
bV9jeWNsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4obV9udW1iZXJPZkN5Y2xlcyk7
CiB9CiAKLWNvbnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6Y29sbGVjdGlvblR5cGVOYW1lKEhlYXBP
cGVyYXRpb24gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE5vT3BlcmF0
aW9uOgotICAgICAgICByZXR1cm4gIk5vT3BlcmF0aW9uIjsKLSAgICBjYXNlIEFueUNvbGxlY3Rp
b246Ci0gICAgICAgIHJldHVybiAiQW55Q29sbGVjdGlvbiI7Ci0gICAgY2FzZSBBbGxvY2F0aW9u
OgotICAgICAgICByZXR1cm4gIkFsbG9jYXRpb24iOwotICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246
Ci0gICAgICAgIHJldHVybiAiRWRlbkNvbGxlY3Rpb24iOwotICAgIGNhc2UgRnVsbENvbGxlY3Rp
b246Ci0gICAgICAgIHJldHVybiAiRnVsbENvbGxlY3Rpb24iOwotICAgIH0KLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOyAvLyBTaWxlbmNpbmcg
YSBjb21waWxlciB3YXJuaW5nLgotfQotCiBjb25zdCBjaGFyKiBIZWFwVmVyaWZpZXI6OnBoYXNl
TmFtZShIZWFwVmVyaWZpZXI6OlBoYXNlIHBoYXNlKQogewogICAgIHN3aXRjaCAocGhhc2UpIHsK
QEAgLTgxLDcgKzYzLDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmluaXRpYWxpemVHQ0N5Y2xlKCkK
IHsKICAgICBIZWFwKiBoZWFwID0gbV9oZWFwOwogICAgIGluY3JlbWVudEN5Y2xlKCk7Ci0gICAg
Y3VycmVudEN5Y2xlKCkuY29sbGVjdGlvblR5cGUgPSBoZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCk7CisgICAgY3VycmVudEN5Y2xlKCkuc2NvcGUgPSAqaGVhcC0+Y29sbGVjdGlvblNjb3BlKCk7
CiB9CiAKIHN0cnVjdCBHYXRoZXJMaXZlT2JqRnVuY3RvciA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1
bmN0b3IgewpAQCAtMTk1LDcgKzE3Nyw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpyZXBvcnRPYmpl
Y3QoTGl2ZU9iamUKIAogICAgIGlmIChvYmpEYXRhLmlzQ29uZmlybWVkRGVhZCkgewogICAgICAg
ICBkYXRhTG9nRigiRk9VTkQgZGVhZCBvYmogJXAgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwK
LSAgICAgICAgICAgIG9iaiwgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCks
IGxpc3QubmFtZSk7CisgICAgICAgICAgICBvYmosIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29w
ZU5hbWUoY3ljbGUuc2NvcGUpLCBsaXN0Lm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMDYsNyArMTg4LDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OnJlcG9ydE9iamVjdChMaXZl
T2JqZQogICAgIGRhdGFMb2dGKCJGT1VORCBvYmogJXAgdHlwZSAnJXMnIGJ1dHRlcmZseSAlcCAo
YmFzZSAlcCkgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwKICAgICAgICAgb2JqLCBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUsCiAgICAgICAgIGJ1dHRlcmZseSwgYnV0dGVyZmx5
QmFzZSwKLSAgICAgICAgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCksIGxp
c3QubmFtZSk7CisgICAgICAgIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29wZU5hbWUoY3ljbGUu
c2NvcGUpLCBsaXN0Lm5hbWUpOwogfQogCiB2b2lkIEhlYXBWZXJpZmllcjo6Y2hlY2tJZlJlY29y
ZGVkKEpTT2JqZWN0KiBvYmopCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFZlcmlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGlj
OgogICAgIC8vIG9iamVjdCB3YXMgaW4gYW55IG9mIHRob3NlIGxpc3RzLgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY2hlY2tJZlJlY29yZGVkKEpTT2JqZWN0Kik7CiAKLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29sbGVjdGlvblR5cGVOYW1lKEhlYXBPcGVyYXRpb24pOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBwaGFzZU5hbWUoUGhhc2UpOwogCiBwcml2YXRlOgpAQCAtNjUsMTQgKzY0
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgSGVhcE9wZXJh
dGlvbiBjb2xsZWN0aW9uVHlwZTsKKyAgICAgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlOwogICAg
ICAgICBMaXZlT2JqZWN0TGlzdCBiZWZvcmU7CiAgICAgICAgIExpdmVPYmplY3RMaXN0IGFmdGVy
OwotCi0gICAgICAgIGNvbnN0IGNoYXIqIGNvbGxlY3Rpb25UeXBlTmFtZSgpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZWFwVmVyaWZpZXI6OmNvbGxlY3Rpb25UeXBlTmFt
ZShjb2xsZWN0aW9uVHlwZSk7Ci0gICAgICAgIH0KICAgICB9OwogCiAgICAgdm9pZCBpbmNyZW1l
bnRDeWNsZSgpIHsgbV9jdXJyZW50Q3ljbGUgPSAobV9jdXJyZW50Q3ljbGUgKyAxKSAlIG1fbnVt
YmVyT2ZDeWNsZXM7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlbHBpbmdI
ZWFwU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWxw
aW5nSGVhcFNjb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVscGluZ0hlYXBTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhlYXAuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEhlbHBpbmdIZWFwU2NvcGUgeworcHVibGljOgorICAgIEhlbHBpbmdI
ZWFwU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAgOiBtX2hlYXAoaGVhcCkKKyAgICAgICAgLCBt
X29sZFN0YXRlKG1faGVhcC5tX211dGF0b3JTdGF0ZSkKKyAgICB7CisgICAgICAgIG1faGVhcC5t
X211dGF0b3JTdGF0ZSA9IE11dGF0b3JTdGF0ZTo6SGVscGluZ0hlYXA7CisgICAgfQorICAgIAor
ICAgIH5IZWxwaW5nSGVhcFNjb3BlKCkKKyAgICB7CisgICAgICAgIG1faGVhcC5tX211dGF0b3JT
dGF0ZSA9IG1fb2xkU3RhdGU7CisgICAgfQorCitwcml2YXRlOgorICAgIEhlYXAmIG1faGVhcDsK
KyAgICBNdXRhdG9yU3RhdGUgbV9vbGRTdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5j
cHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdl
QWxsb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBMYXJn
ZUFsbG9jYXRpb246OnJlYXBXZWFrU2V0KCkKIAogdm9pZCBMYXJnZUFsbG9jYXRpb246OmZsaXAo
KQogewotICAgIEFTU0VSVChoZWFwKCktPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29s
bGVjdGlvbik7CisgICAgQVNTRVJUKGhlYXAoKS0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsKICAgICBjbGVhck1hcmtlZCgpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIw
NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKIAotI2luY2x1ZGUgIkFsbG9jYXRpb25TY29wZS5o
IgorI2luY2x1ZGUgIkFsbG9jYXRpbmdTY29wZS5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxs
YmFjay5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIu
aCIKQEAgLTE4NSw3ICsxODUsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya2VkQWxsb2NhdG9y
Ojpkb1RlCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9oZWFwLT5jb2xsZWN0
QWxsR2FyYmFnZSgpOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtX2hlYXAtPm1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAgICAgfQogICAgIGlmICgrK2FsbG9jYXRp
b25Db3VudCA+PSBPcHRpb25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkKICAgICAgICAg
YWxsb2NhdGlvbkNvdW50ID0gMDsKQEAgLTIxNCwxMCArMjEzLDEwIEBAIHZvaWQqIE1hcmtlZEFs
bG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZUkKICAgICAKICAgICBkaWRDb25zdW1lRnJlZUxpc3Qo
KTsKICAgICAKKyAgICBBbGxvY2F0aW5nU2NvcGUgaGVhbHBpbmdIZWFwKCptX2hlYXApOworCiAg
ICAgbV9oZWFwLT5jb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKGRlZmVycmFsQ29udGV4dCk7CiAg
ICAgCi0gICAgQWxsb2NhdGlvblNjb3BlIGFsbG9jYXRpb25TY29wZSgqbV9oZWFwKTsKLQogICAg
IHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICAKICAg
ICBpZiAoTElLRUxZKHJlc3VsdCAhPSAwKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAog
I2luY2x1ZGUgIkRlc3RydWN0aW9uTW9kZS5oIgogI2luY2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5j
bHVkZSAiSGVhcENlbGwuaCIKLSNpbmNsdWRlICJIZWFwT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SXRlcmF0aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vha1NldC5oIgogI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
Y3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIE1hcmtl
ZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiAKICAgICBtX2FjdGl2ZVdlYWtTZXRzLnRh
a2VGcm9tKG1fbmV3QWN0aXZlV2Vha1NldHMpOwogICAgIAotICAgIGlmIChtX2hlYXAtPm9wZXJh
dGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikKKyAgICBpZiAobV9oZWFwLT5jb2xs
ZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pCiAgICAgICAgIG1fbGFyZ2VB
bGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNl
cnlPZmZzZXQ7CiAgICAgZWxzZQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zm
c2V0Rm9yU3dlZXAgPSAwOwpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnZp
c2l0V2Vha1NldHMoSGVhcFJvb3QKICAgICAKICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmZvckVh
Y2godmlzaXQpOwogICAgIAotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9
PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIG1fYWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2
aXNpdCk7CiB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpyZWFwV2Vh
a1NldHMoKQogICAgIAogICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiAg
ICAgCi0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0
aW9uKQorICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29w
ZTo6RnVsbCkKICAgICAgICAgbV9hY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKIH0KIApA
QCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnN0b3BBbGxvY2F0aW5nKCkKIAog
dm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAt
Pm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikKKyAgICBpZiAobV9oZWFw
LT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pCiAgICAgICAgIG1f
bGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uID0gbV9sYXJnZUFsbG9jYXRp
b25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc09m
ZnNldEZvclRoaXNDb2xsZWN0aW9uID0gMDsKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIE1hcmtl
ZFNwYWNlOjpzaHJpbmsoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogewot
ICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikg
eworICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RnVsbCkgewogICAgICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICAgICAgWyZdIChNYXJr
ZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAg
ICAgICBhbGxvY2F0b3IuYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKQEAgLTU5Nyw3
ICs1OTcsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRTcGFjZTo6ZmluZEVtCiAKIHZv
aWQgTWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCgpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3Bl
cmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7CisgICAgaWYgKG1faGVhcC0+
Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKSB7CiAgICAgICAgIGZv
ckVhY2hBbGxvY2F0b3IoCiAgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2Nh
dG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgICAgIGFsbG9jYXRvci5zbmFw
c2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTXV0YXRvclN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRh
dG9yU3RhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIE11dGF0b3JTdGF0ZSBzdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7
CisgICAgY2FzZSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmc6CisgICAgICAgIG91dC5wcmludCgiUnVu
bmluZyIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBNdXRhdG9yU3RhdGU6OkFsbG9jYXRp
bmc6CisgICAgICAgIG91dC5wcmludCgiQWxsb2NhdGluZyIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdIZWFwOgorICAgICAgICBvdXQucHJpbnQoIkhl
bHBpbmdIZWFwIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7
CisKK2VudW0gY2xhc3MgTXV0YXRvclN0YXRlIHsKKyAgICAvLyBUaGUgbXV0YXRvciBpcyBydW5u
aW5nIHdoZW4gaXQncyBub3QgaW5zaWRlIGEgSGVhcCBzbG93IHBhdGguCisgICAgUnVubmluZywK
KyAgICAKKyAgICAvLyBUaGUgbXV0YXRvciBpcyBpbiBhbiBhbGxvY2F0aW9uIHNsb3cgcGF0aC4K
KyAgICBBbGxvY2F0aW5nLAorICAgIAorICAgIC8vIFRoZSBtdXRhdG9yIHdhcyBhc2tlZCBieSB0
aGUgR0MgdG8gZG8gc29tZSB3b3JrLgorICAgIEhlbHBpbmdIZWFwCit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6Ok11dGF0b3JTdGF0ZSk7CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZp
c2l0b3IuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgU2xvdFZp
c2l0b3I6On5TbG90VmlzaXRvcigpCiAKIHZvaWQgU2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2lu
ZygpCiB7Ci0gICAgaWYgKGhlYXAoKS0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xs
ZWN0aW9uKQorICAgIGlmIChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25T
Y29wZTo6RnVsbCkKICAgICAgICAgQVNTRVJUKG1fb3BhcXVlUm9vdHMuaXNFbXB0eSgpKTsgLy8g
U2hvdWxkIGhhdmUgbWVyZ2VkIGJ5IG5vdy4KICAgICBlbHNlCiAgICAgICAgIHJlc2V0KCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyMCwxNyArMzIwLDE2IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFn
ZW50OjpnZXRSZW1vdGVPYmplY3QKICAgICByZXN1bHQgPSBpbmplY3RlZFNjcmlwdC53cmFwT2Jq
ZWN0KGNlbGwsIG9iamVjdEdyb3VwLCB0cnVlKTsKIH0KIAotc3RhdGljIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlIHByb3RvY29sVHlwZUZvckhlYXBP
cGVyYXRpb24oSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCitzdGF0aWMgSW5zcGVjdG9yOjpQcm90
b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUgcHJvdG9jb2xUeXBlRm9ySGVhcE9w
ZXJhdGlvbihDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiB7Ci0gICAgc3dpdGNoIChvcGVyYXRpb24p
IHsKLSAgICBjYXNlIEZ1bGxDb2xsZWN0aW9uOgorICAgIHN3aXRjaCAoc2NvcGUpIHsKKyAgICBj
YXNlIENvbGxlY3Rpb25TY29wZTo6RnVsbDoKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOwotICAgIGNhc2UgRWRl
bkNvbGxlY3Rpb246CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46CiAgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6
UGFydGlhbDsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9u
OjpUeXBlOjpGdWxsOwogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OkZ1
bGw7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojp3aWxsR2FyYmFnZUNvbGxlY3QoKQpA
QCAtMzQxLDcgKzM0MCw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojp3aWxsR2FyYmFnZUNv
bGwKICAgICBtX2djU3RhcnRUaW1lID0gbV9lbnZpcm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2go
KS0+ZWxhcHNlZFRpbWUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmRpZEdhcmJh
Z2VDb2xsZWN0KEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBJbnNwZWN0b3JIZWFwQWdl
bnQ6OmRpZEdhcmJhZ2VDb2xsZWN0KENvbGxlY3Rpb25TY29wZSBzY29wZSkKIHsKICAgICBBU1NF
UlQobV9lbmFibGVkKTsKICAgICBBU1NFUlQoIXN0ZDo6aXNuYW4obV9nY1N0YXJ0VGltZSkpOwpA
QCAtMzU2LDcgKzM1NSw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29s
bGUKICAgICAvLyBWTSBhcyB0aGUgaW5zcGVjdGVkIHBhZ2UuCiAKICAgICBHYXJiYWdlQ29sbGVj
dGlvbkRhdGEgZGF0YTsKLSAgICBkYXRhLnR5cGUgPSBwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0
aW9uKG9wZXJhdGlvbik7CisgICAgZGF0YS50eXBlID0gcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJh
dGlvbihzY29wZSk7CiAgICAgZGF0YS5zdGFydFRpbWUgPSBtX2djU3RhcnRUaW1lOwogICAgIGRh
dGEuZW5kVGltZSA9IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRU
aW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckhlYXBBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCShyZXZpc2lvbiAyMDc2MTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBI
ZWFwT2JzZXJ2ZXIKICAgICB2b2lkIHdpbGxHYXJiYWdlQ29sbGVjdCgpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoSlNDOjpIZWFwT3BlcmF0aW9uKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KEpTQzo6Q29sbGVjdGlvblNjb3BlKSBvdmVycmlkZTsK
IAogcHJvdGVjdGVkOgogICAgIHZvaWQgY2xlYXJIZWFwU25hcHNob3RzKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJl
dmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1NSw5ICs3NTUsOSBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9u
KCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIEFTU0VSVCghdm0u
aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZt
LmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGlmICh2bS5pc0NvbGxlY3Rv
ckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkKQEAgLTkwMCw4ICs5MDAsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBBU1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFT
U0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwotICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3ko
KSkKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKKyAg
ICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAgICAgICAgIHJldHVy
biBqc051bGwoKTsKIAogICAgIGJvb2wgaXNKU0NhbGwgPSAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6
OkpTKTsKQEAgLTk2MiwxMCArOTYyLDEwIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0
ZUNvbnN0cnVjdCgKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSk7CiAgICAgLy8gV2UgdGhyb3cgaW4gdGhpcyBjYXNlIGJlY2F1c2Ugd2Ug
aGF2ZSB0byByZXR1cm4gc29tZXRoaW5nICJ2YWxpZCIgYnV0IHdlJ3JlCiAgICAgLy8gYWxyZWFk
eSBpbiBhbiBpbnZhbGlkIHN0YXRlLgotICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAg
ICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dT
Y29wZSkpOwogCiAgICAgYm9vbCBpc0pTQ29uc3RydWN0ID0gKGNvbnN0cnVjdFR5cGUgPT0gQ29u
c3RydWN0VHlwZTo6SlMpOwpAQCAtMTAyOCw3ICsxMDI4LDcgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJ
bnRlcnByZXRlcjo6cHJlcGFyZUZvcgogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CiAgICAg
Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1
c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsK
IAogICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKQEAgLTEwNTMsOSArMTA1Myw5IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBWTSYgdm0gPSAqY2xvc3Vy
ZS52bTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIEFTU0VSVCghdm0uaXNDb2xs
ZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJl
bnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3ko
KSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAgICAgICAg
IHJldHVybiBqc051bGwoKTsKIAogICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVj
a1BvaW50OwpAQCAtMTA3Niw5ICsxMDc2LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZShFdmFsRXhlY3V0YQogCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZt
KCkpOwogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2
bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSk7Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2
bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmpl
Y3QoKSk7CkBAIC0xMTgyLDkgKzExODIsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
KE1vZHVsZVByb2dyCiAKICAgICBBU1NFUlQoc2NvcGUtPnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0o
KSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZt
LmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZt
LmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxs
KCk7CiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVj
dCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBKU1ZhbHVlIGV2
YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBSRUxFQVNF
X0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNT
dHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQo
KSk7CiAKICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlKTsKIApAQCAtMTc0LDcgKzE3
NCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJl
YWQoKSk7CiAKICAgICByZXR1cm4gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGV4
ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBt
b2R1bGVOYW1lKSwgaW5pdGlhdG9yKTsKIH0KQEAgLTE4NSw3ICsxODUsNyBAQCBKU0ludGVybmFs
UHJvbWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBSRUxFQVNF
X0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNT
dHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQo
KSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9pbnRNb2R1bGUo
dm0pOwogCkBAIC0yMTIsNyArMjEyLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGUo
RXhlY1N0YXRlKgogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCku
YXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXND
b2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVj
dG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBsb2FkTW9kdWxlKGxvY2ss
IGV4ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBtb2R1bGVOYW1lKSwgaW5pdGlhdG9yKTsKIH0KQEAgLTIyMyw3ICsyMjMsNyBAQCBK
U0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqCiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEo
KS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0
b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJl
bnRUaHJlYWQoKSk7CiAKICAgICBTeW1ib2wqIGtleSA9IGNyZWF0ZVN5bWJvbEZvckVudHJ5UG9p
bnRNb2R1bGUodm0pOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgSlNWYWx1ZSBsaW5rQW5kRXZhbHVh
dGVNb2R1bGUoRXhlY1N0YXRlKgogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJl
YWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMt
PnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgp
LmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShleGVj
LCBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1vZHVsZUtleSksIGluaXRpYXRvcik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHJldmlzaW9u
IDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJv
cEFsbExvY2tzKFZNKiB2CiB7CiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIW1fdm0tPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9j
aygpIHx8ICFtX3ZtLT5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1f
dm0tPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpIHx8ICFtX3ZtLT5pc0Nv
bGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgbV9kcm9wcGVkTG9ja0NvdW50ID0g
bV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrcyh0aGlzKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgJKHJldmlzaW9uIDIwNzYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwg
MjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAwOSwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEzLDkgKzExMyw5IEBAIHB1YmxpYzoKICAg
ICBKU1N0cmluZyogbnVsbE9iamVjdFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbE9iamVj
dFN0cmluZzsgfQogICAgIEpTU3RyaW5nKiB1bmRlZmluZWRPYmplY3RTdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3VuZGVmaW5lZE9iamVjdFN0cmluZzsgfQogCi0gICAgYm9vbCBuZWVkc1RvQmVW
aXNpdGVkKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpIGNvbnN0CisgICAgYm9vbCBuZWVk
c1RvQmVWaXNpdGVkKENvbGxlY3Rpb25TY29wZSBzY29wZSkgY29uc3QKICAgICB7Ci0gICAgICAg
IGlmIChjb2xsZWN0aW9uVHlwZSA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICAgICAgaWYgKHNjb3Bl
ID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICByZXR1cm4gbV9uZWVkc1RvQmVWaXNpdGVkOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNTc2LDcgKzU3Niw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcFJlZ0V4cFRyYWNlKCk7
CiAKLSAgICBib29sIGlzQ29sbGVjdG9yQnVzeSgpIHsgcmV0dXJuIGhlYXAuaXNCdXN5KCk7IH0K
KyAgICBib29sIGlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpIHsgcmV0dXJuIGhlYXAu
aXNDdXJyZW50VGhyZWFkQnVzeSgpOyB9CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAg
ICBib29sIGlzSW5pdGlhbGl6aW5nT2JqZWN0KCkgY29uc3Q7IApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKU0RvbGxh
clZNUHJvdG90eXBlOjplZGVuR0MoRXhlY1N0YQogewogICAgIGlmICghZW5zdXJlQ3VycmVudFRo
cmVhZE93bnNKU0xvY2soZXhlYykpCiAgICAgICAgIHJldHVybjsKLSAgICBleGVjLT5oZWFwKCkt
PmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhlYXAoKS0+Y29sbGVjdChDb2xs
ZWN0aW9uU2NvcGU6OkVkZW4pOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9NYWluVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MCwxNCArMTkwLDE0IEBAIGJvb2wgY2FuQWNjZXNzVGhyZWFk
TG9jYWxEYXRhRm9yVGhyZWFkKFQKIH0KICNlbmRpZgogCi1zdGF0aWMgVGhyZWFkU3BlY2lmaWM8
Ym9vbD4qIGlzR0NUaHJlYWQ7CitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJl
YWRUeXBlPj4qIGlzR0NUaHJlYWQ7CiAKIHZvaWQgaW5pdGlhbGl6ZUdDVGhyZWFkcygpCiB7Ci0g
ICAgaXNHQ1RocmVhZCA9IG5ldyBUaHJlYWRTcGVjaWZpYzxib29sPigpOworICAgIGlzR0NUaHJl
YWQgPSBuZXcgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPj4oKTsKIH0KIAot
dm9pZCByZWdpc3RlckdDVGhyZWFkKCkKK3ZvaWQgcmVnaXN0ZXJHQ1RocmVhZChHQ1RocmVhZFR5
cGUgdHlwZSkKIHsKICAgICBpZiAoIWlzR0NUaHJlYWQpIHsKICAgICAgICAgLy8gVGhpcyBoYXBw
ZW5zIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBwcm9jZXNzIHRoYXQgZG9lc24ndCBjYXJlIGFib3V0
CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCByZWdpc3RlckdDVGhyZWFkKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgICoqaXNHQ1RocmVhZCA9IHRydWU7CisgICAgKippc0dDVGhyZWFk
ID0gdHlwZTsKIH0KIAogYm9vbCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCkKQEAgLTIxNiw5ICsy
MTYsMTMgQEAgYm9vbCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCkKICAgICByZXR1cm4gaXNNYWlu
VGhyZWFkKCk7CiB9CiAKLWJvb2wgbWF5QmVHQ1RocmVhZCgpCitPcHRpb25hbDxHQ1RocmVhZFR5
cGU+IG1heUJlR0NUaHJlYWQoKQogewotICAgIHJldHVybiBpc0dDVGhyZWFkICYmIGlzR0NUaHJl
YWQtPmlzU2V0KCkgJiYgKippc0dDVGhyZWFkOworICAgIGlmICghaXNHQ1RocmVhZCkKKyAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgaWYgKCFpc0dDVGhyZWFkLT5pc1NldCgpKQorICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gKippc0dDVGhyZWFkOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNv
dXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMTIg
QEAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2Ug
V1RGIHsKIAorY2xhc3MgUHJpbnRTdHJlYW07CisKIHR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRl
bnRpZmllcjsKIAogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCkBAIC02
Nyw4ICs3MCwxNSBAQCBpbmxpbmUgYm9vbCBpc1VJVGhyZWFkKCkgeyByZXR1cm4gaXNNYWluCiAK
IHZvaWQgaW5pdGlhbGl6ZUdDVGhyZWFkcygpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZWdpc3RlckdDVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYXlCZUdDVGhyZWFk
KCk7CitlbnVtIGNsYXNzIEdDVGhyZWFkVHlwZSB7CisgICAgTWFpbiwKKyAgICBIZWxwZXIKK307
CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEdDVGhyZWFkVHlwZSk7CisKK1dU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJlYWRUeXBlKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKTsKIAogLy8g
Tk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVh
ZCBpbXBsZW1lbnRhdGlvbi4KQEAgLTg4LDYgKzk4LDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRo
cmVhZFRvUHJvY2Vzc01haW5UaAogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjpH
Q1RocmVhZFR5cGU7CiB1c2luZyBXVEY6OmNhbGxPbk1haW5UaHJlYWQ7CiB1c2luZyBXVEY6OmNh
bkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZDsKIHVzaW5nIFdURjo6aXNNYWluVGhyZWFk
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292265</attachid>
            <date>2016-10-20 15:00:18 -0700</date>
            <delta_ts>2016-10-20 15:08:41 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>106254</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MSBA
QAorMjAxNi0xMC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSB0cmFja2luZyBvZiB0aGUgY29hcnNlLWdyYWluIEhlYXAgc3RhdGUgKGFsbG9jYXRpbmcg
b3Igbm90LCBjb2xsZWN0b3Igb3Igbm90LCBlZGVuIHZzIGZ1bGwpIHNob3VsZCByZXNwZWN0IHRo
ZSBvcnRob2dvbmFsaXR5IGJldHdlZW4gYWxsb2NhdGluZyBhbmQgY29sbGVjdGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXZSBuZWVk
IHRvIGtub3cgaWYgd2UncmUgY3VycmVudGx5IGluIGFuIGFsbG9jYXRpb24gc2xvdyBwYXRoLCBz
byB0aGF0IGNvZGUgY2FuIGFzc2VydCB0aGF0CisgICAgICAgIGl0J3Mgbm90IGJlaW5nIHVzZWQg
ZnJvbSBpbnNpZGUgYSBkZXN0cnVjdG9yIHRoYXQgcnVucyBkdXJpbmcgYSBzd2VlcC4gV2UgbmVl
ZCB0byBrbm93IGlmCisgICAgICAgIHdlJ3JlIGN1cnJlbnRseSBjb2xsZWN0aW5nLCBiZWNhdXNl
IHNvbWUgY29kZSBiZWhhdmVzIGRpZmZlcmVudGx5IGR1cmluZyBjb2xsZWN0aW9uLCBhbmQKKyAg
ICAgICAgb3RoZXIgY29kZSB3YW50cyB0byBhc3NlcnQgdGhhdCBpdCdzIG5vdCBiZWluZyB1c2Vk
IGZyb20gaW5zaWRlIGEgdmlzaXRDaGlsZHJlbiBtZXRob2QgdGhhdAorICAgICAgICBydW5zIGR1
cmluZyBtYXJraW5nLiBJZiB3ZSBhcmUgY29sbGVjdGluZywgd2UgbmVlZCB0byBrbm93IGlmIGl0
J3MgYW4gZWRlbiBjb2xsZWN0aW9uIG9yIGEKKyAgICAgICAgZnVsbCBjb2xsZWN0aW9uLiBJZiB3
ZSBhcmUgcmVxdWVzdGluZyBhIGNvbGxlY3Rpb24sIHdlIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBy
ZXF1ZXN0aW5nIGFuCisgICAgICAgIGVkZW4gY29sbGVjdGlvbiwgYSBmdWxsIGNvbGxlY3Rpb24s
IG9yIGFueSBraW5kIG9mIGNvbGxlY3Rpb24uCisgICAgICAgIAorICAgICAgICBQcmlvciB0byB0
aGlzIGNoYW5nZSwgeW91IHdvdWxkIHJlYXNvbiBhYm91dCBhbGwgb2YgdGhlc2UgdGhpbmdzIHVz
aW5nIHRoZSBIZWFwT3BlcmF0aW9uLiBJdAorICAgICAgICB0aGUgZm9sbG93aW5nIHN0YXRlczog
Tm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIEZ1bGxDb2xsZWN0aW9uLCBFZGVuQ29sbGVjdGlvbiwg
YW5kCisgICAgICAgIEFueUNvbGxlY3Rpb24uIE5vT3BlcmF0aW9uIHZlcnN1cyBBbGxvY2F0aW9u
IHdhcyBwcmltYXJpbHkgZm9yIGFzc2VydGluZyB0aGF0IHN3ZWVwIGRpZG4ndAorICAgICAgICBj
YWxsIGFyYml0cmFyeSBKUy4gRnVsbENvbGxlY3Rpb24gdmVyc3VzIEVkZW5Db2xsZWN0aW9uIHdh
cyBhYm91dCBkZXNjcmliaW5nIGdlbmVyYXRpb25zLiBXZQorICAgICAgICB3b3VsZCBldmVuIHVz
ZSBIZWFwT3BlcmF0aW9uIGluIHBsYWNlcyB3aGVyZSB3ZSBrbmV3IHRoYXQgaXQgY291bGQgb25s
eSBiZSBlaXRoZXIgRnVsbCBvcgorICAgICAgICBFZGVuLCBiZWNhdXNlIHdlIGp1c3QgbmVlZGVk
IGEgdmFyaWFibGUgdG8gdGVsbCB1cyB3aGljaCBnZW5lcmF0aW9uIHdlIHdlcmUgdGFsa2luZyBh
Ym91dC4KKyAgICAgICAgSXQgd2FzIGFsbCB2ZXJ5IGNvbmZ1c2luZy4KKyAgICAgICAgCisgICAg
ICAgIFdoZW4gaXQgY29tcGxldGVseSBicmVha3MgZG93biBpcyB0aGUgZmFjdCB0aGF0IGEgY29u
Y3VycmVudCBHQyBjYW4gYmUgYWxsb2NhdGluZywgb3Igbm90LCBvbgorICAgICAgICB0aGUgbWFp
biB0aHJlYWQuIEl0IGNvdWxkIGFsc28gYmUgcnVubmluZyBHQyBjb2RlIG9uIHRoZSBtYWluIHRo
cmVhZCwgb3Igbm90LiBJdCBjYW4ndCBiZQorICAgICAgICBydW5uaW5nIEdDIGNvZGUgaWYgaXQn
cyBhbHNvIGFsbG9jYXRpbmcsIHNvIHRoYXQncyB0aHJlZSBzdGF0ZXMgdGhhdCB0aGUgbXV0YXRv
ciBjb3VsZCBiZSBpbi4KKyAgICAgICAgQXQgdGhlIHNhbWUgdGltZSwgdGhlIEdDIGNvdWxkIGVp
dGhlciBiZSBydW5uaW5nIG9yIG5vdCwgYW5kIGlmIGl0J3MgcnVubmluZywgaXQgY291bGQgYmUg
YQorICAgICAgICBmdWxsIGNvbGxlY3Rpb24gb3IgYW4gZWRlbiBjb2xsZWN0aW9uLiBCZWNhdXNl
IHRoZSBtdXRhdG9yIGFuZCBjb2xsZWN0b3IgY2FuIHJ1biBhdCB0aGUgc2FtZQorICAgICAgICB0
aW1lLCBpdCBtZWFucyB0aGF0IHdlIG5lZWQgbmluZSBzdGF0ZXM6IGV2ZXJ5IGNvbWJpbmF0aW9u
IG9mIG11dGF0b3IgcnVubmluZywgYWxsb2NhdGluZywKKyAgICAgICAgb3IgaGVscGluZyBHQywg
Y3Jvc3NlZCB3aXRoIGNvbGxlY3RvciBub3QgcnVubmluZywgcnVubmluZyBlZGVuLCBvciBydW5u
aW5nIGZ1bGwuIFNvLCB0aGlzCisgICAgICAgIGNoYW5nZSBkZWNvdXBsZXMgbXV0YXRvciBzdGF0
ZSBmcm9tIGNvbGxlY3RvciBzdGF0ZS4KKyAgICAgICAgCisgICAgICAgIE11dGF0b3Igc3RhdGUg
aXMgZGVzY3JpYmVkIHVzaW5nIE11dGF0b3JTdGF0ZSwgd2hpY2ggY2FuIGJlIGVpdGhlciBNdXRh
dG9yU3RhdGU6OlJ1bm5pbmcsCisgICAgICAgIE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZywgb3Ig
TXV0YXRvclN0YXRlOjpIZWxwaW5nR0MuCisgICAgICAgIAorICAgICAgICBDb2xsZWN0b3Igc3Rh
dGUgaXMgZGVzY3JpYmVkIHVzaW5nIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4uIENvbGxlY3Rp
b25TY29wZSBkZXNjcmliZXMgaG93CisgICAgICAgIGJpZyB0aGUgc2NvcGUgb2YgdGhlIGNvbGxl
Y3Rpb24gaXMsIGFuZCBpdCBjYW4gYmUgZWl0aGVyIENvbGxlY3Rpb25TY29wZTo6RWRlbiBvcgor
ICAgICAgICBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwuIElmIHRoZSBPcHRpb25hbCBpcyBOdWxsb3B0
LCBpdCBtZWFucyB0aGF0IHdlIGFyZSBub3QgY29sbGVjdGluZy4gVGhpcworICAgICAgICB3YXks
IHlvdSBjYW4gdHJlYXQgY29sbGVjdGlvblNjb3BlIGFzIGEgYm9vbGVhbiAoYW4gT3B0aW9uYWwg
aXMgdHJ1ZSBpZmYgaXQncyBlbmdhZ2VkKS4gWW91CisgICAgICAgIGNhbiBwYXNzIGFyb3VuZCBq
dXN0IGEgQ29sbGVjdGlvblNjb3BlIGlmIHlvdSBrbm93IHRoYXQgeW91IG11c3QgYmUgY29sbGVj
dGluZy4gQWxzbywgd2UgY2FuCisgICAgICAgIHVzZSBOdWxsb3B0IGluIG1ldGhvZHMgdGhhdCBy
ZXF1ZXN0IGNvbGxlY3Rpb24uIEluIHRoYXQgY29udGV4dCwgaXQncyB0aGUgZXF1aXZhbGVudCBv
ZgorICAgICAgICBBbnlDb2xsZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgQW5vdGhlciB1c2Ug
b2YgSGVhcE9wZXJhdGlvbiB3YXMgdG8gYW5zd2VyIHF1ZXN0aW9ucyBhYm91dCB3aGV0aGVyIHRo
ZSBjYWxsZXIgaXMgcnVubmluZyBhcworICAgICAgICBwYXJ0IG9mIHRoZSBHQyBvciBhcyBwYXJ0
IG9mIHRoZSBtdXRhdG9yLiBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IGRvZXMgbm90IGFuc3dl
ciB0aGlzLAorICAgICAgICBzaW5jZSBjb2RlIHRoYXQgcnVucyBpbiB0aGUgbXV0YXRvciBhdCB0
aGUgc2FtZSB0aW1lIGFzIHRoZSBjb2xsZWN0b3IgaXMgcnVubmluZyBzaG91bGQgcnVuCisgICAg
ICAgIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBtdXRhdG9yIG5vdCBhcyBpZiBpdCB3YXMgcGFy
dCBvZiB0aGUgR0MuIE11dGF0b3JTdGF0ZSBkb2VzIG5vdAorICAgICAgICBhbnN3ZXIgdGhpcywg
c2luY2UgY29kZSB0aGF0IHJ1bnMgaW4gdGhlIGNvbGxlY3RvciB0aHJlYWQgYXQgdGhlIHNhbWUg
dGltZSBhcyB0aGUgbXV0YXRvciBpcworICAgICAgICBydW5uaW5nIHNob3VsZCBydW4gYXMgaWYg
aXQgd2FzIHBhcnQgb2YgdGhlIEdDIG5vdCBhcyBpZiBpdCB3YXMgcGFydCBvZiB0aGUgbXV0YXRv
ci4gU28sIHdlCisgICAgICAgIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBvbiB0aGUgY29sbGVjdG9y
IHRocmVhZCBvciB0aGUgbXV0YXRvciB0aHJlYWQuIFdlIGFscmVhZHkgaGF2ZSBhIFdURgorICAg
ICAgICBmYWNpbGl0eSBmb3IgdGhpcywgd2hpY2ggYW5zd2VycyBpZiBhIHRocmVhZCBpcyBhIEdD
IHRocmVhZC4gQnV0IHdlIGFscmVhZHkgdXNlIHRoaXMgdG8KKyAgICAgICAgYW5zd2VyIGEgc3Ry
b25nZXIgcXVlc3Rpb246IGFyZSB3ZSBwYXJ0IG9mIHRoZSBwYXJhbGxlbCBHQyBoZWxwZXJzPyBT
b21lIGZ1bmN0aW9ucyBpbiB0aGUgR0MsCisgICAgICAgIGxpa2UgbWFyayBiaXQgcXVlcmllcywg
d2lsbCB3b3JrIGZpbmUgaW4gYSBjb25jdXJyZW50IGNvbGxlY3RvciB0aHJlYWQgc28gbG9uZyBh
cyB0aGVyZSBpcyBubworICAgICAgICBwYXJhbGxlbCBtYXJraW5nLiBTbywgdGhpcyBjaGFuZ2Ug
YWxzbyBjaGFuZ2VzIFdURidzIG1heUJlR0NUaHJlYWQgdG8gdGVsbCB3aGF0IGtpbmQgb2YgR0MK
KyAgICAgICAgdGhyZWFkIHdlIG1heSBiZS4gVGhlICJzaG91bGQgSSBydW4gYXMgbXV0YXRvciIg
cXVlcnkgY2FuIG5vdyBiZSBhbnN3ZXJlZCBieSBjaGVja2luZyB3aXRoCisgICAgICAgIG1heUJl
R0NUaHJlYWQ7IGlmIHRydWUsIHRoZW4gcnVuIGFzIEdDLCBlbHNlIHJ1biBhcyBHQyBpZiBNdXRh
dG9yU3RhdGUgaXMgSGVscGluZ0dDLCBlbHNlIHJ1bgorICAgICAgICBhcyBtdXRhdG9yLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBkb2Vzbid0IGNoYW5nZSB0aGUgd2F5IHRoYXQgdGhlIEdDIGJl
aGF2ZXMsIGJ1dCBpdCBkb2VzIGNoYW5nZSBldmVyeSB1c2VyIG9mIGEKKyAgICAgICAgZnVuZGFt
ZW50YWwgZW51bS4gU28sIGl0J3MgYSBiaWcgY2hhbmdlLgorCisgICAgICAgICogQVBJL0pTQmFz
ZS5jcHA6CisgICAgICAgIChKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcpOgor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgICogZGZnL0RGR1dv
cmtsaXN0LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW5nU2NvcGUuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkFsbG9jYXRpbmdTY29wZTo6QWxsb2NhdGluZ1Njb3BlKToKKyAgICAg
ICAgKEpTQzo6QWxsb2NhdGluZ1Njb3BlOjp+QWxsb2NhdGluZ1Njb3BlKToKKyAgICAgICAgKiBo
ZWFwL0FsbG9jYXRpb25TY29wZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvQ29kZUJsb2Nr
U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpkZWxldGVVbm1hcmtlZEFuZFVu
cmVmZXJlbmNlZCk6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAgKiBo
ZWFwL0NvbGxlY3Rpb25TY29wZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpjb2xsZWN0aW9u
U2NvcGVOYW1lKToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogaGVh
cC9Db2xsZWN0aW9uU2NvcGUuaDogQWRkZWQuCisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0
eUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6ZG9D
b2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOgor
ICAgICAgICAoSlNDOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24pOgorICAg
ICAgICAqIGhlYXAvR0NUeXBlTWFwLmg6CisgICAgICAgIChKU0M6OkdDVHlwZU1hcDo6b3BlcmF0
b3JbXSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVh
cCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YmVnaW5NYXJraW5n
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRTbWFsbFN0cmluZ3MpOgorICAgICAgICAoSlND
OjpIZWFwOjp1cGRhdGVPYmplY3RDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpkZWxldGVB
bGxDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlVW5tYXJrZWRDb21waWxl
ZENvZGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0V2l0aG91
dEFueVN3ZWVwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEltcGwpOgorICAgICAgICAo
SlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Zmx1
c2hXcml0ZUJhcnJpZXJCdWZmZXIpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcnVuZVN0YWxlRW50
cmllc0Zyb21XZWFrR0NNYXBzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bm90aWZ5SW5jcmVtZW50
YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6
CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlND
OjpIZWFwOjppc1ZhbGlkQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnNob3VsZERv
RnVsbENvbGxlY3Rpb24pOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpI
ZWFwOjptdXRhdG9yU3RhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0aW9uU2NvcGUp
OgorICAgICAgICAoSlNDOjpIZWFwOjpvcGVyYXRpb25JblByb2dyZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6OnNob3VsZENv
bGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjppc0N1cnJlbnRUaHJlYWRCdXN5KToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6aXNNYXJrZWQpOgorICAgICAgICAoSlNDOjpIZWFwOjpyZXBvcnRFeHRy
YU1lbW9yeVZpc2l0ZWQpOgorICAgICAgICAoSlNDOjpIZWFwOjpyZXBvcnRFeHRlcm5hbE1lbW9y
eVZpc2l0ZWQpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWNjb3JkaW5nVG9EZWZlckdD
UHJvYmFiaWxpdHkpOgorICAgICAgICAoSlNDOjpIZWFwOjppc0J1c3kpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpIZWFwOjppc0NvbGxlY3RpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAv
SGVhcE9ic2VydmVyLmg6CisgICAgICAgICogaGVhcC9IZWFwT3BlcmF0aW9uLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBoZWFwL0hlYXBPcGVyYXRpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBo
ZWFwL0hlYXBWZXJpZmllci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6aW5pdGlh
bGl6ZUdDQ3ljbGUpOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnJlcG9ydE9iamVjdCk6
CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6Y29sbGVjdGlvblR5cGVOYW1lKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBoZWFwL0hlYXBWZXJpZmllci5oOgorICAgICAgICAoSlNDOjpIZWFwVmVy
aWZpZXI6OkdDQ3ljbGU6OmNvbGxlY3Rpb25UeXBlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICog
aGVhcC9IZWxwaW5nR0NTY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SGVscGluZ0dDU2Nv
cGU6OkhlbHBpbmdHQ1Njb3BlKToKKyAgICAgICAgKEpTQzo6SGVscGluZ0dDU2NvcGU6On5IZWxw
aW5nR0NTY29wZSk6CisgICAgICAgICogaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwOgorICAgICAg
ICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OmZsaXApOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxs
b2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkb1Rlc3RDb2xsZWN0
aW9uc0lmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNs
b3dDYXNlSW1wbCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAqIGhl
YXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZv
ckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZWFwV2Vha1NldHMpOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRT
cGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90
VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9NdXRhdG9yU3RhdGUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogaGVhcC9NdXRhdG9yU3RhdGUuaDog
QWRkZWQuCisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNs
b3RWaXNpdG9yOjpkaWRTdGFydE1hcmtpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6cHJvdG9jb2xUeXBl
Rm9ySGVhcE9wZXJhdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2Vu
dDo6ZGlkR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9ySGVhcEFnZW50Lmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRl
Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRD
YWxsKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25GdWxsR0MpOgorICAg
ICAgICAoZnVuY3Rpb25FZGVuR0MpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6bG9hZEFuZEV2YWx1YXRl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OmxpbmtB
bmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKToKKyAgICAgICAgKiBy
dW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAoSlNDOjpTbWFsbFN0cmluZ3M6Om5lZWRz
VG9CZVZpc2l0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06
OmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCk6CisgICAgICAgIChKU0M6OlZNOjppc0Nv
bGxlY3RvckJ1c3kpOiBEZWxldGVkLgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk1Qcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNUHJvdG90eXBlOjplZGVuR0MpOgorCiAy
MDE2LTEwLTIwICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0pTQ10gZGlzYWxsb3cgcmVmZXJlbmNlcyB0byBgYXdhaXRgIGluIEFzeW5jRnVuY3Rpb24gZm9y
bWFsIHBhcmFtZXRlcnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNDUxLDYgKzQ1MSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAKICAgICBoZWFwL0FsbG9jYXRvckF0dHJpYnV0ZXMuY3BwCiAgICAgaGVhcC9Db2RlQmxv
Y2tTZXQuY3BwCisgICAgaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCiAgICAgaGVhcC9Db25zZXJ2
YXRpdmVSb290cy5jcHAKICAgICBoZWFwL0RlZmVyR0MuY3BwCiAgICAgaGVhcC9EZXN0cnVjdGlv
bk1vZGUuY3BwCkBAIC00NjQsNyArNDY1LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0hlYXAuY3BwCiAgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAgICBoZWFwL0hlYXBI
ZWxwZXJQb29sLmNwcAotICAgIGhlYXAvSGVhcE9wZXJhdGlvbi5jcHAKICAgICBoZWFwL0hlYXBQ
cm9maWxlci5jcHAKICAgICBoZWFwL0hlYXBTbmFwc2hvdC5jcHAKICAgICBoZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwCkBAIC00ODAsNiArNDgwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKICAgICBoZWFwL01hcmtlZEJsb2Nr
LmNwcAogICAgIGhlYXAvTWFya2VkU3BhY2UuY3BwCisgICAgaGVhcC9NdXRhdG9yU3RhdGUuY3Bw
CiAgICAgaGVhcC9TbG90VmlzaXRvci5jcHAKICAgICBoZWFwL1dlYWsuY3BwCiAgICAgaGVhcC9X
ZWFrQmxvY2suY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA3NjE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nzcs
MTQgKzE2NzcsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQQog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZ1bGxHQyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgZXhlYy0+aGVhcCgpLT5j
b2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoQ29sbGVj
dGlvblNjb3BlOjpGdWxsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4
ZWMtPmhlYXAoKS0+c2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0
KEVkZW5Db2xsZWN0aW9uKTsKKyAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoQ29sbGVjdGlvblNj
b3BlOjpFZGVuKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMtPmhl
YXAoKS0+c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCkpKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RG
b3JEZWJ1Z2dpbgogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgZXhlYy0+dm0oKS5oZWFwLmNvbGxlY3QoRWRlbkNv
bGxlY3Rpb24pOworICAgIGV4ZWMtPnZtKCkuaGVhcC5jb2xsZWN0KENvbGxlY3Rpb25TY29wZTo6
RWRlbik7CiB9CiAKIHZvaWQgSlNEaXNhYmxlR0NUaW1lcih2b2lkKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01MTAsNyArNTEwLDYgQEAKIAkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1
MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi87IH07Ci0JCTBGODZBMjZEMUQ2Rjc5NjUw
MENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGODZBMjZDMUQ2Rjc5NjIwMENCMEM5MiAvKiBIZWFwT3BlcmF0
aW9uLmNwcCAqLzsgfTsKIAkJMEY4NkEyNkYxRDZGN0IzMzAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkUx
RDZGN0IzMTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovOyB9OwogCQkwRjg2QUUyMDFDNTMxMUM1
MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkFFMUYxQzUzMTFDNTAwNkJFOEVDIC8qIEIz
Q29tcHV0ZURpdmlzaW9uTWFnaWMuaCAqLzsgfTsKIAkJMEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZB
IC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTkyLDYg
KzU5MSwxMiBAQAogCQkwRkE1ODFCQTE1MEU5NTJDMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI3
MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwICovOyB9OwogCQkwRkE1ODFCQjE1
MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE1ODFCODE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9k
ZUZsYWdzLmggKi87IH07CiAJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgx
QjkxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggKi87IH07CisJCTBGQTc2MjA0MURC
OTI0MjYwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENv
bGxlY3Rpb25TY29wZS5jcHAgKi87IH07CisJCTBGQTc2MjA1MURCOTI0MjkwMEI3QTJGRCAvKiBD
b2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQTc2MjAxMURCOTI0MjMwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkE3NjIwNjFE
QjkyNDMxMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRh
dG9yU3RhdGUuY3BwICovOyB9OworCQkwRkE3NjIwNzFEQjkyNDMzMDBCN0EyRkQgLyogTXV0YXRv
clN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkE3NjIwMzFEQjkyNDIzMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZBNzYyMDkxREI5MjgzRTAwQjdB
MkZEIC8qIEhlbHBpbmdHQ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE3NjIwODFEQjkyODNDMDBCN0EyRkQgLyogSGVscGluZ0dDU2NvcGUu
aCAqLzsgfTsKKwkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMEEx
REI5NTlGNjAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oICovOyB9OwogCQkwRkE3QThFQjE4
QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovOyB9
OwogCQkwRkE3QThFQzE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQgLyog
UmVnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZBN0E4RUUxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3QThFRDE4
Q0U0RkQ4MDA1MjM3MUQgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcCAqLzsgfTsKQEAg
LTYyMyw3ICs2MjgsNiBAQAogCQkwRkI0RkI3MzFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovOyB9Owog
CQkwRkI0RkI3NDFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MTFCQzg0MzE0MDAy
NUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggKi87IH07CiAJCTBGQjRGQjc1MUJDODQzMTQwMDI1
Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoQ2FsbC5oICovOyB9OwotCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhBRTMgLyogQWxsb2Nh
dGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlvblNjb3BlLmggKi87IH07CiAJ
CTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzYxNEY1
OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMy
OTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4
OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMTU2LDcgKzExNjAsNiBAQAogCQkyQTRCQjdGMzE4QTQx
MTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8q
IEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLzsgfTsKIAkJMkE0RUM5MEIxODYwRDZDMjAwOTRG
NzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJy
aWVyQnVmZmVyLmNwcCAqLzsgfTsKIAkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRl
QmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkE0RUM5MEExODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTJBNkY0NjI2
MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVh
cE9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJBN0E1OEVGMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgwOEE0QzQwMDIw
QkRGNyAvKiBEZWZlckdDLmNwcCAqLzsgfTsKIAkJMkE4MzYzODUxOEQ3RDBFRTAwMDBFQkNDIC8q
IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODMxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OwogCQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRl
bkdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMjgzNCw3ICsyODM3LDYgQEAKIAkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGODMzNUI1MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzY0QjUxNjRCMEMwRTAwNTMzMjlB
IC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdCcmFuY2hEaXJlY3Rpb24uaDsgcGF0aCA9IGRmZy9ERkdCcmFuY2hEaXJlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY4NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8q
IEhlYXBPcGVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SGVhcE9wZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODZBMjZF
MUQ2RjdCMzEwMENCMEM5MiAvKiBHQ1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NUeXBlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODZB
RTFGMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaDsgcGF0aCA9
IGIzL0IzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlVXNlRGVmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yOTE1LDYgKzI5MTcsMTIgQEAKIAkJMEZBNTgxQjcxNTBFOTUyQTAw
QjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdOb2RlRmxhZ3MuY3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBE
RkdOb2RlRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9kZUZs
YWdzLmg7IHBhdGggPSBkZmcvREZHTm9kZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGQTU4MUI5MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdOb2RlVHlwZS5oOyBwYXRoID0gZGZnL0RGR05v
ZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTc2MjAwMURCOTI0MjMw
MEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29sbGVjdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xsZWN0aW9uU2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzYyMDIxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JT
dGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdG9yU3Rh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMzFEQjkyNDIzMDBC
N0EyRkQgLyogTXV0YXRvclN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE11dGF0b3JTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwODFE
QjkyODNDMDBCN0EyRkQgLyogSGVscGluZ0dDU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGVscGluZ0dDU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZBNzYyMEExREI5NTlGNjAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvY2F0aW5nU2NvcGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZBN0E4RTkxOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkE3QThFRDE4Q0U0RkQ4MDA1MjM3MUQgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTU2LDcg
KzI5NjQsNiBAQAogCQkwRkI0RkI3MDFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRo
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTExhenlTbG93UGF0
aC5jcHA7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZCNEZCNzExQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGguaDsgcGF0
aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZCNEZCNzIxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBwYXRoID0g
ZnRsL0ZUTExhenlTbG93UGF0aENhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEZCNTMwMzgxRDkwNDA0NjAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvY2F0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFs
dWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0Njc4MTRG
NUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTM0NTAsNyArMzQ1Nyw2IEBACiAJCTJBNEJCN0YyMThBNDExNzkwMDhBMEZD
RCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkE0RUM5MDkxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJpZXJCdWZmZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdyaXRlQmFycmllckJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQky
QTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE4
MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ0Nyw3ICs1NDUzLDcgQEAKIAkJMTQyRTMxMkEx
MzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2Nv
cGUuaCAqLywKKwkJCQkwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3Bl
LmggKi8sCiAJCQkJMEY5NjMwMzUxRDQxOTJDMzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0
ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRy
aWJ1dGVzLmggKi8sCiAJCQkJMEYwNzBBNDIxRDU0M0E4OTAwNkU3MjMyIC8qIENlbGxDb250YWlu
ZXIuaCAqLywKQEAgLTU0NTYsNiArNTQ2Miw4IEBACiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0Ey
QzQwIC8qIENvZGVCbG9ja1NldC5jcHAgKi8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQw
IC8qIENvZGVCbG9ja1NldC5oICovLAogCQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBD
b2RlQmxvY2tTZXRJbmxpbmVzLmggKi8sCisJCQkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8q
IENvbGxlY3Rpb25TY29wZS5jcHAgKi8sCisJCQkJMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8q
IENvbGxlY3Rpb25TY29wZS5oICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAvKiBD
b25zZXJ2YXRpdmVSb290cy5jcHAgKi8sCiAJCQkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8q
IENvbnNlcnZhdGl2ZVJvb3RzLmggKi8sCiAJCQkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8q
IERlZmVyR0MuY3BwICovLApAQCAtNTUwMCw4ICs1NTA4LDYgQEAKIAkJCQlDMkRBNzc4MjE4RTI1
OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCAqLywKIAkJCQkyQUQ4OTMyOTE3RTM4NjhGMDA2
NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi8sCiAJCQkJQTUzMzlFQzgxQkI0QjQ1MTAw
NTRGMDA1IC8qIEhlYXBPYnNlcnZlci5oICovLAotCQkJCTBGODZBMjZDMUQ2Rjc5NjIwMENCMEM5
MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCAqLywKLQkJCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTgg
LyogSGVhcE9wZXJhdGlvbi5oICovLAogCQkJCUE1Mzk4RkE5MUM3NTBEOTUwMDYwQTk2MyAvKiBI
ZWFwUHJvZmlsZXIuY3BwICovLAogCQkJCUE1Mzk4RkFBMUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFw
UHJvZmlsZXIuaCAqLywKIAkJCQkxNEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RW
aXNpdG9yLmggKi8sCkBAIC01NTE2LDYgKzU1MjIsNyBAQAogCQkJCTBGQURFNjcyMUQ0RDIzQkMw
MDc2ODQ1NyAvKiBIZWFwVXRpbC5oICovLAogCQkJCUZFN0JBNjBEMUExQTdDRUMwMEYxRjdCNCAv
KiBIZWFwVmVyaWZpZXIuY3BwICovLAogCQkJCUZFN0JBNjBFMUExQTdDRUMwMEYxRjdCNCAvKiBI
ZWFwVmVyaWZpZXIuaCAqLywKKwkJCQkwRkE3NjIwODFEQjkyODNDMDBCN0EyRkQgLyogSGVscGlu
Z0dDU2NvcGUuaCAqLywKIAkJCQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50
YWxTd2VlcGVyLmNwcCAqLywKIAkJCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVt
ZW50YWxTd2VlcGVyLmggKi8sCiAJCQkJMEY3NjZEMjkxNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lU2V0LmNwcCAqLywKQEAgLTU1NDEsNiArNTU0OCw4IEBACiAJCQkJMEY3QzVGQjkx
RDg4OTUwNTAwNDRGNUUyIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oICovLAogCQkJCTE0MkQ2RjBF
MTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBGMTM1MzlB
NDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLywKKwkJCQkwRkE3NjIwMjFEQjkyNDIzMDBCN0Ey
RkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLywKKwkJCQkwRkE3NjIwMzFEQjkyNDIzMDBCN0EyRkQg
LyogTXV0YXRvclN0YXRlLmggKi8sCiAJCQkJQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9w
YXF1ZVJvb3RTZXQuaCAqLywKIAkJCQlDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZp
c2l0b3IuY3BwICovLAogCQkJCTE0QkE3OEYwMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRv
ci5oICovLApAQCAtNzUwMCw2ICs3NTA5LDcgQEAKIAkJCQkwRkVDODUwMzFCREFDREFDMDA4MEZG
NzQgLyogQjNCYXNpY0Jsb2NrVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTA0MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM0Jsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUM4NTA2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NoZWNrU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZBNzYyMDcxREI5MjQzMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQzg1MDgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MEExQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29tbW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEQzQ1NEI4RDFEMDBFODI0MDA0QzE4QUYgLyogQWlyRHVtcEFz
SlMuaCBpbiBIZWFkZXJzICovLApAQCAtNzYwMCw3ICs3NjEwLDYgQEAKIAkJCQk2MkQ3NTVENzFC
ODRGQjRBMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZCNTMwMzkxRDkwNDA0QzAwRjI4QUUzIC8qIEFsbG9jYXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI3NjczMjQxQjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxN
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0I3
RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCkBAIC03
OTA1LDYgKzc5MTQsOCBAQAogCQkJCTJBRDJFREZCMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJh
dGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA0NjA3MEUxRjQ5N0YwMDMyMzJDRiAv
KiBFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEQwRTE4MzlEQjAwMEY5Mjk3IC8q
IEVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTc2MjBCMURCOTU5Rjkw
MEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTc2MjA5
MURCOTI4M0UwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMwMkU5OEQwRTE4M0UzODAwMEY5Mjk3IC8qIEVycm9ySW5zdGFuY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMDJFOTBGMEUxODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDU0LDcgKzgwNjUsNiBAQAogCQkJCTJBRDg5MzJC
MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1MzM5RUM5MUJCNEI0NjAwMDU0RjAwNSAvKiBIZWFwT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFEMkZDQkVCMURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUu
aCBpbiBIZWFkZXJzICovLAotCQkJCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3Bl
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyog
SGVhcFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjREMzFFMzE2MUNENjk1MDAy
QUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRTUyNkJFMTU5
MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovLApAQCAtODExNyw2ICs4
MTI3LDcgQEAKIAkJCQlBMTgxOTNFMzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTgxOTNF
NDFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZBNzYyMDUxREI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxODdBMEYxQzAzMEQ2QzAwMzhCQkNB
IC8qIFNuaXBwZXRPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3MDFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LApAQCAtOTQ4MSw3ICs5NDkyLDYgQEAKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5REY3NDQgLyog
REZHUGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5MDA4MkM1RTgg
LyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjg2QTI2RDFENkY3OTY1MDBDQjBDOTIgLyogSGVhcE9w
ZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNFMDFBQTE5RDM1M0E1MDBGNjFCN0Yg
LyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFQzE5
RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZCMTc2NjIxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTk2MjgsNiArOTYzOCw3IEBACiAJCQkJQTU4RTM1OTExODYwREVDRjAw
MUYyNEZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTEz
RTVDQTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1ODQwRTIwMTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1v
ZHVsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkE3NjIwNDFEQjkyNDI2MDBCN0EyRkQgLyog
Q29sbGVjdGlvblNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEE3QkVGMUI4Mjk3NUEw
MDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1
NTUxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNUNFRUUxNDE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC05NzgyLDYgKzk3OTMsNyBAQAogCQkJCURDMTdFODE3MUM5QzkxRDYw
MDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mjk5RDlE
MTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzkwREQ2
RjE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkE3NjIwNjFEQjkyNDMxMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBDTG9vcFN0YWNrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3MEVDMEVDMjFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJ
dGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ3
NCw3ICszNDc0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aQog
ICAgICAgICAvLyBUaGlzIGFjY29tcGxpc2hlcyAoMSksIGFuZCBkb2VzIGl0cyBvd24gYm9vay1r
ZWVwaW5nIGFib3V0IHdoZXRoZXIgaXQgaGFzIGFscmVhZHkgaGFwcGVuZWQuCiAgICAgICAgIGlm
ICghaml0Q29kZSgpLT5kZmdDb21tb24oKS0+aW52YWxpZGF0ZSgpKSB7CiAgICAgICAgICAgICAv
LyBXZSd2ZSBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQuCi0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCh0aGlzICE9IHJlcGxhY2VtZW50KCkgfHwgKG1fdm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkg
JiYgIUhlYXA6OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodGhpcyAhPSByZXBsYWNlbWVudCgpIHx8IChtX3ZtLT5oZWFwLmlz
Q3VycmVudFRocmVhZEJ1c3koKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJTY3JpcHRFeGVjdXRh
YmxlKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTA2
LDcgKzM1MDYsNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpCiAK
ICAgICAvLyBKZXR0aXNvbiBjYW4gaGFwcGVuIGR1cmluZyBHQy4gV2UgZG9uJ3Qgd2FudCB0byBp
bnN0YWxsIGNvZGUgdG8gYSBkZWFkIGV4ZWN1dGFibGUKICAgICAvLyBiZWNhdXNlIHRoYXQgd291
bGQgYWRkIGEgZGVhZCBvYmplY3QgdG8gdGhlIHJlbWVtYmVyZWQgc2V0LgotICAgIGlmIChtX3Zt
LT5oZWFwLmlzQ29sbGVjdGluZygpICYmICFIZWFwOjppc01hcmtlZChvd25lclNjcmlwdEV4ZWN1
dGFibGUoKSkpCisgICAgaWYgKG1fdm0tPmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFI
ZWFwOjppc01hcmtlZChvd25lclNjcmlwdEV4ZWN1dGFibGUoKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgyKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDkg
KzEwMywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGls
YXRpb25RdWV1ZSgpKQogICAgICAgICAgICAgZGF0YUxvZyhtX3dvcmtsaXN0LCAiOiBDb21waWxp
bmcgIiwgbV9wbGFuLT5rZXkoKSwgIiBhc3luY2hyb25vdXNseVxuIik7CiAgICAgICAgIAotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9wbGFuLT52bS0+aGVhcC5pc0NvbGxlY3RpbmcoKSk7Cisg
ICAgICAgIC8vIFRoZXJlJ3Mgbm8gd2F5IGZvciB0aGUgR0MgdG8gYmUgc2FmZXBvaW50aW5nIHNp
bmNlIHdlIG93biByaWdodFRvUnVuLgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BsYW4tPnZt
LT5oZWFwLm11dGF0b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKTsKICAgICAg
ICAgbV9wbGFuLT5jb21waWxlSW5UaHJlYWQoKm1fbG9uZ0xpdmVkU3RhdGUsICZtX2RhdGEpOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BsYW4tPnN0YWdlID09IFBsYW46OkNhbmNlbGxlZCB8
fCAhbV9wbGFuLT52bS0+aGVhcC5pc0NvbGxlY3RpbmcoKSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fcGxhbi0+c3RhZ2UgPT0gUGxhbjo6Q2FuY2VsbGVkIHx8IG1fcGxhbi0+dm0tPmhlYXAu
bXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpOwogICAgICAgICAKICAg
ICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fd29ya2xpc3QubV9sb2Nr
KTsKQEAgLTEyMyw3ICsxMjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fd29ya2xpc3QubV9wbGFuQ29tcGlsZWQubm90aWZ5QWxsKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcGxhbi0+dm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3BsYW4tPnZtLT5oZWFwLm11dGF0b3JTdGF0ZSgpICE9
IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBXb3Jr
UmVzdWx0OjpDb250aW51ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZQogCiAgICAgaWYgKHNhZmVwb2lu
dFJlc3VsdC5kaWRHZXRDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJFTEVBU0Vf
QVNTRVJUKCFzdGF0ZS5ncmFwaC5tX3ZtLmhlYXAuaXNDb2xsZWN0aW5nKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKHN0YXRlLmdyYXBoLm1fdm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9y
U3RhdGU6OkhlbHBpbmdHQyk7CiAgICAgCiAgICAgaWYgKHN0YXRlLmFsbG9jYXRpb25GYWlsZWQp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9j
YXRpbmdTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Fs
bG9jYXRpbmdTY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0FsbG9jYXRpbmdTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhlYXAuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEFsbG9jYXRpbmdTY29wZSB7CitwdWJsaWM6CisgICAgQWxsb2NhdGlu
Z1Njb3BlKEhlYXAmIGhlYXApCisgICAgICAgIDogbV9oZWFwKGhlYXApCisgICAgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX2hlYXAubV9tdXRhdG9yU3RhdGUgPT0gTXV0YXRvclN0YXRlOjpS
dW5uaW5nKTsKKyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0YXRlID0gTXV0YXRvclN0YXRlOjpB
bGxvY2F0aW5nOworICAgIH0KKyAgICAKKyAgICB+QWxsb2NhdGluZ1Njb3BlKCkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5tX211dGF0b3JTdGF0ZSA9PSBNdXRhdG9yU3Rh
dGU6OkFsbG9jYXRpbmcpOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3RhdGUgPSBNdXRhdG9y
U3RhdGU6OlJ1bm5pbmc7CisgICAgfQorCitwcml2YXRlOgorICAgIEhlYXAmIG1faGVhcDsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0aW9uU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNjb3BlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSGVhcC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xh
c3MgQWxsb2NhdGlvblNjb3BlIHsKLXB1YmxpYzoKLSAgICBBbGxvY2F0aW9uU2NvcGUoSGVhcCYg
aGVhcCkKLSAgICAgICAgOiBtX2hlYXAoaGVhcCkKLSAgICAgICAgLCBtX2xhc3RPcGVyYXRpb24o
bV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVzcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xh
c3RPcGVyYXRpb24gPT0gTm9PcGVyYXRpb24gfHwgbV9sYXN0T3BlcmF0aW9uID09IEFsbG9jYXRp
b24pOwotICAgICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsK
LSAgICB9Ci0gICAgCi0gICAgfkFsbG9jYXRpb25TY29wZSgpCi0gICAgewotICAgICAgICBBU1NF
UlQobV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBBbGxvY2F0aW9uKTsKLSAgICAgICAg
bV9oZWFwLm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IG1fbGFzdE9wZXJhdGlvbjsKLSAgICB9Ci1w
cml2YXRlOgotICAgIEhlYXAmIG1faGVhcDsKLSAgICBIZWFwT3BlcmF0aW9uIG1fbGFzdE9wZXJh
dGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03NywxMCArNzcsMTAgQEAgdm9pZCBDb2RlQmxvY2tTZXQ6Omxhc3RDaGFuY2VUb0ZpbmFsaXpl
KAogICAgICAgICBjb2RlQmxvY2stPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95KGNv
ZGVCbG9jayk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrU2V0OjpkZWxldGVVbm1hcmtlZEFuZFVucmVm
ZXJlbmNlZChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQordm9pZCBDb2RlQmxvY2tTZXQ6
OmRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKENvbGxlY3Rpb25TY29wZSBzY29wZSkKIHsK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKLSAgICBIYXNoU2V0PENvZGVCbG9jayo+
JiBzZXQgPSBjb2xsZWN0aW9uVHlwZSA9PSBFZGVuQ29sbGVjdGlvbiA/IG1fbmV3Q29kZUJsb2Nr
cyA6IG1fb2xkQ29kZUJsb2NrczsKKyAgICBIYXNoU2V0PENvZGVCbG9jayo+JiBzZXQgPSBzY29w
ZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4gPyBtX25ld0NvZGVCbG9ja3MgOiBtX29sZENvZGVC
bG9ja3M7CiAgICAgVmVjdG9yPENvZGVCbG9jayo+IHVubWFya2VkOwogICAgIGZvciAoQ29kZUJs
b2NrKiBjb2RlQmxvY2sgOiBzZXQpIHsKICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNvZGVC
bG9jaykpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQ29kZUJsb2NrU2V0OjpkZWxldGVVbm1hcmtl
ZEFuZFVucmUKICAgICB9CiAKICAgICAvLyBBbnkgcmVtYWluaW5nIHlvdW5nIENvZGVCbG9ja3Mg
YXJlIGxpdmUgYW5kIG5lZWQgdG8gYmUgcHJvbW90ZWQgdG8gdGhlIHNldCBvZiBvbGQgQ29kZUJs
b2Nrcy4KLSAgICBpZiAoY29sbGVjdGlvblR5cGUgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAgaWYg
KHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikKICAgICAgICAgcHJvbW90ZVlvdW5nQ29k
ZUJsb2Nrcyhsb2NrZXIpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogI2lu
Y2x1ZGUgIkdDU2VnbWVudGVkQXJyYXkuaCIKLSNpbmNsdWRlICJIZWFwT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ly8gRGVsZXRlIGFsbCBjb2RlIGJsb2NrcyB0aGF0IGFyZSBvbmx5IHJlZmVyZW5jZWQgYnkgdGhp
cyBzZXQgKGkuZS4gb3duZWQKICAgICAvLyBieSB0aGlzIHNldCksIGFuZCB0aGF0IGhhdmUgbm90
IGJlZW4gbWFya2VkLgotICAgIHZvaWQgZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoSGVh
cE9wZXJhdGlvbik7CisgICAgdm9pZCBkZWxldGVVbm1hcmtlZEFuZFVucmVmZXJlbmNlZChDb2xs
ZWN0aW9uU2NvcGUpOwogICAgIAogICAgIC8vIEFkZCBhbGwgY3VycmVudGx5IGV4ZWN1dGluZyBD
b2RlQmxvY2tzIHRvIHRoZSByZW1lbWJlcmVkIHNldCB0byBiZSAKICAgICAvLyByZS1zY2FubmVk
IGR1cmluZyB0aGUgbmV4dCBjb2xsZWN0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29sbGVjdGlvblNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDb2xsZWN0aW9uU2NvcGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgY2hhciogY29sbGVjdGlvblNjb3BlTmFtZShDb2xsZWN0
aW9uU2NvcGUgc2NvcGUpCit7CisgICAgc3dpdGNoIChzY29wZSkgeworICAgIGNhc2UgQ29sbGVj
dGlvblNjb3BlOjpFZGVuOgorICAgICAgICByZXR1cm4gIkVkZW4iOworICAgIGNhc2UgQ29sbGVj
dGlvblNjb3BlOjpGdWxsOgorICAgICAgICByZXR1cm4gIkZ1bGwiOworICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rpb25TY29wZSBzY29wZSkKK3sKKyAgICBvdXQu
cHJpbnQoSlNDOjpjb2xsZWN0aW9uU2NvcGVOYW1lKHNjb3BlKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2Nv
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9u
U2NvcGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xs
ZWN0aW9uU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIENvbGxlY3Rp
b25TY29wZSB7IEVkZW4sIEZ1bGwgfTsKKworY29uc3QgY2hhciogY29sbGVjdGlvblNjb3BlTmFt
ZShDb2xsZWN0aW9uU2NvcGUpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdU
RiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgSlNDOjpDb2xsZWN0aW9uU2NvcGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICsz
OSw3IEBAIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2EKIAogdm9pZCBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQogewotICAgIG1fdm0tPmhlYXAu
Y29sbGVjdChFZGVuQ29sbGVjdGlvbik7CisgICAgbV92bS0+aGVhcC5jb2xsZWN0KENvbGxlY3Rp
b25TY29wZTo6RWRlbik7CiB9CiAKIGRvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0
R0NMZW5ndGgoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0
aW8KICAgICB9CiAjZW5kaWYKIAotICAgIGhlYXAuY29sbGVjdChGdWxsQ29sbGVjdGlvbik7Cisg
ICAgaGVhcC5jb2xsZWN0KENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CiB9CiAKIGRvdWJsZSBGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvR0NUeXBlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NUeXBlTWFwLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDVHlwZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgorI2luY2x1ZGUg
IkNvbGxlY3Rpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMzUsMjAgKzM1LDI0IEBAIHN0cnVjdCBHQ1R5cGVNYXAgewogICAgIFQg
ZWRlbjsKICAgICBUIGZ1bGw7CiAgICAgCi0gICAgVCYgb3BlcmF0b3JbXShIZWFwT3BlcmF0aW9u
IG9wZXJhdGlvbikKKyAgICBUJiBvcGVyYXRvcltdKENvbGxlY3Rpb25TY29wZSBzY29wZSkKICAg
ICB7Ci0gICAgICAgIGlmIChvcGVyYXRpb24gPT0gRnVsbENvbGxlY3Rpb24pCisgICAgICAgIHN3
aXRjaCAoc2NvcGUpIHsKKyAgICAgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw6CiAgICAg
ICAgICAgICByZXR1cm4gZnVsbDsKLSAgICAgICAgQVNTRVJUKG9wZXJhdGlvbiA9PSBFZGVuQ29s
bGVjdGlvbik7Ci0gICAgICAgIHJldHVybiBlZGVuOworICAgICAgICBjYXNlIENvbGxlY3Rpb25T
Y29wZTo6RWRlbjoKKyAgICAgICAgICAgIHJldHVybiBlZGVuOworICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pIGNv
bnN0CisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShDb2xsZWN0aW9uU2NvcGUgc2NvcGUpIGNvbnN0
CiAgICAgewotICAgICAgICBpZiAob3BlcmF0aW9uID09IEZ1bGxDb2xsZWN0aW9uKQorICAgICAg
ICBzd2l0Y2ggKHNjb3BlKSB7CisgICAgICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpGdWxsOgog
ICAgICAgICAgICAgcmV0dXJuIGZ1bGw7Ci0gICAgICAgIEFTU0VSVChvcGVyYXRpb24gPT0gRWRl
bkNvbGxlY3Rpb24pOwotICAgICAgICByZXR1cm4gZWRlbjsKKyAgICAgICAgY2FzZSBDb2xsZWN0
aW9uU2NvcGU6OkVkZW46CisgICAgICAgICAgICByZXR1cm4gZWRlbjsKKyAgICAgICAgfQogICAg
IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAy
MDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkhlYXBTbmFwc2hvdC5oIgogI2luY2x1
ZGUgIkhlYXBTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiSGVhcFZlcmlmaWVyLmgiCisjaW5jbHVk
ZSAiSGVscGluZ0dDU2NvcGUuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lU2V0LmgiCkBA
IC0xNDAsMTUgKzE0MSwxNSBAQCBIYXNoTWFwPGNvbnN0IGNoYXIqLCBHQ1R5cGVNYXA8U2ltcGxl
U3RhCiAgICAgcmV0dXJuICpyZXN1bHQ7CiB9CiAKLVNpbXBsZVN0YXRzJiB0aW1pbmdTdGF0cyhj
b25zdCBjaGFyKiBuYW1lLCBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikKK1NpbXBsZVN0YXRzJiB0
aW1pbmdTdGF0cyhjb25zdCBjaGFyKiBuYW1lLCBDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiB7Ci0g
ICAgcmV0dXJuIHRpbWluZ1N0YXRzKCkuYWRkKG5hbWUsIEdDVHlwZU1hcDxTaW1wbGVTdGF0cz4o
KSkuaXRlcmF0b3ItPnZhbHVlW29wZXJhdGlvbl07CisgICAgcmV0dXJuIHRpbWluZ1N0YXRzKCku
YWRkKG5hbWUsIEdDVHlwZU1hcDxTaW1wbGVTdGF0cz4oKSkuaXRlcmF0b3ItPnZhbHVlW3Njb3Bl
XTsKIH0KIAogY2xhc3MgVGltaW5nU2NvcGUgewogcHVibGljOgotICAgIFRpbWluZ1Njb3BlKEhl
YXBPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBjaGFyKiBuYW1lKQotICAgICAgICA6IG1fb3Bl
cmF0aW9uKG9wZXJhdGlvbikKKyAgICBUaW1pbmdTY29wZShPcHRpb25hbDxDb2xsZWN0aW9uU2Nv
cGU+IHNjb3BlLCBjb25zdCBjaGFyKiBuYW1lKQorICAgICAgICA6IG1fc2NvcGUoc2NvcGUpCiAg
ICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgewogICAgICAgICBpZiAobWVhc3VyZVBoYXNlVGlt
aW5nKCkpCkBAIC0xNTYsMTggKzE1NywxOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIFRp
bWluZ1Njb3BlKEhlYXAmIGhlYXAsIGNvbnN0IGNoYXIqIG5hbWUpCi0gICAgICAgIDogVGltaW5n
U2NvcGUoaGVhcC5vcGVyYXRpb25JblByb2dyZXNzKCksIG5hbWUpCisgICAgICAgIDogVGltaW5n
U2NvcGUoaGVhcC5jb2xsZWN0aW9uU2NvcGUoKSwgbmFtZSkKICAgICB7CiAgICAgfQogICAgIAot
ICAgIHZvaWQgc2V0T3BlcmF0aW9uKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQorICAgIHZvaWQg
c2V0U2NvcGUoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKICAgICB7Ci0gICAgICAg
IG1fb3BlcmF0aW9uID0gb3BlcmF0aW9uOworICAgICAgICBtX3Njb3BlID0gc2NvcGU7CiAgICAg
fQogICAgIAotICAgIHZvaWQgc2V0T3BlcmF0aW9uKEhlYXAmIGhlYXApCisgICAgdm9pZCBzZXRT
Y29wZShIZWFwJiBoZWFwKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW9uKGhlYXAub3BlcmF0
aW9uSW5Qcm9ncmVzcygpKTsKKyAgICAgICAgc2V0U2NvcGUoaGVhcC5jb2xsZWN0aW9uU2NvcGUo
KSk7CiAgICAgfQogICAgIAogICAgIH5UaW1pbmdTY29wZSgpCkBAIC0xNzUsMTMgKzE3NiwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChtZWFzdXJlUGhhc2VUaW1pbmcoKSkgewogICAgICAgICAg
ICAgZG91YmxlIGFmdGVyID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lTVMoKTsKICAgICAg
ICAgICAgIGRvdWJsZSB0aW1pbmcgPSBhZnRlciAtIG1fYmVmb3JlOwotICAgICAgICAgICAgU2lt
cGxlU3RhdHMmIHN0YXRzID0gdGltaW5nU3RhdHMobV9uYW1lLCBtX29wZXJhdGlvbik7CisgICAg
ICAgICAgICBTaW1wbGVTdGF0cyYgc3RhdHMgPSB0aW1pbmdTdGF0cyhtX25hbWUsICptX3Njb3Bl
KTsKICAgICAgICAgICAgIHN0YXRzLmFkZCh0aW1pbmcpOwotICAgICAgICAgICAgZGF0YUxvZygi
W0dDOiIsIG1fb3BlcmF0aW9uLCAiXSAiLCBtX25hbWUsICIgdG9vazogIiwgdGltaW5nLCAiIG1z
IChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcykuXG4iKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIltHQzoiLCAqbV9zY29wZSwgIl0gIiwgbV9uYW1lLCAiIHRvb2s6ICIsIHRpbWluZywgIiBt
cyAoYXZlcmFnZSAiLCBzdGF0cy5tZWFuKCksICIgbXMpLlxuIik7CiAgICAgICAgIH0KICAgICB9
CiBwcml2YXRlOgotICAgIEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb247CisgICAgT3B0aW9uYWw8
Q29sbGVjdGlvblNjb3BlPiBtX3Njb3BlOwogICAgIGRvdWJsZSBtX2JlZm9yZTsKICAgICBjb25z
dCBjaGFyKiBtX25hbWU7CiB9OwpAQCAtMjAzLDcgKzIwNCw2IEBAIEhlYXA6OkhlYXAoVk0qIHZt
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5
Y2xlKQogICAgICwgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uKGZhbHNlKQogICAgICwgbV90b3Rh
bEJ5dGVzVmlzaXRlZCgwKQotICAgICwgbV9vcGVyYXRpb25JblByb2dyZXNzKE5vT3BlcmF0aW9u
KQogICAgICwgbV9vYmplY3RTcGFjZSh0aGlzKQogICAgICwgbV9leHRyYU1lbW9yeVNpemUoMCkK
ICAgICAsIG1fZGVwcmVjYXRlZEV4dHJhTWVtb3J5U2l6ZSgwKQpAQCAtMjUyLDcgKzI1Miw4IEBA
IGJvb2wgSGVhcDo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB2b2lkIEhlYXA6Omxhc3RD
aGFuY2VUb0ZpbmFsaXplKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+ZW50cnlTY29w
ZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0
aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fbXV0YXRvclN0YXRlID09IE11dGF0b3JTdGF0ZTo6UnVubmluZyk7CiAKICAg
ICBtX2FycmF5QnVmZmVycy5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogICAgIG1fY29kZUJsb2Nr
cy0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTQwOCw3ICs0MDksNyBAQCB2b2lkIEhlYXA6
Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFC
TEUoU0FNUExJTkdfUFJPRklMRVIpCiAKLSAgICAgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0g
Q29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgICAgICBtX29wYXF1ZVJvb3RzLmNsZWFy
KCk7CiAgICAgICAgICAgICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFya1N0YWNrKCk7CiAgICAgICAg
IH0KQEAgLTQzMSw3ICs0MzIsNyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFy
dFRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG90VmlzaXRvciA9IG1fYXZhaWxhYmxl
UGFyYWxsZWxTbG90VmlzaXRvcnMudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBXVEY6OnJlZ2lzdGVyR0NUaHJlYWQoKTsKKyAgICAgICAgICAgICAgICBX
VEY6OnJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJlYWRUeXBlOjpIZWxwZXIpOwogCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBQYXJhbGxlbE1vZGVFbmFibGVyIHBhcmFsbGVs
TW9kZUVuYWJsZXIoKnNsb3RWaXNpdG9yKTsKQEAgLTUyNiw3ICs1MjcsNyBAQCB2b2lkIEhlYXA6
OmdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhDb25zCiB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygp
CiB7CiAgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjpiZWdpbk1hcmtp
bmciKTsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQor
ICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAg
ICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJNYXJrc0ZvckZ1bGxDb2xsZWN0aW9uKCk7CiAgICAgCiAg
ICAgewpAQCAtNTQ0LDcgKzU0NSw3IEBAIHZvaWQgSGVhcDo6dmlzaXRFeHRlcm5hbFJlbWVtYmVy
ZWRTZXQoKQogCiB2b2lkIEhlYXA6OnZpc2l0U21hbGxTdHJpbmdzKCkKIHsKLSAgICBpZiAoIW1f
dm0tPnNtYWxsU3RyaW5ncy5uZWVkc1RvQmVWaXNpdGVkKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcykp
CisgICAgaWYgKCFtX3ZtLT5zbWFsbFN0cmluZ3MubmVlZHNUb0JlVmlzaXRlZCgqbV9jb2xsZWN0
aW9uU2NvcGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZtLT5zbWFsbFN0cmluZ3Mudmlz
aXRTdHJvbmdSZWZlcmVuY2VzKG1fc2xvdFZpc2l0b3IpOwpAQCAtNzYzLDcgKzc2NCw3IEBAIHZv
aWQgSGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKGRvdWJsZSBnY1MKICAgICAgICAgZGF0YUxvZ0Yo
IlxuTnVtYmVyIG9mIGxpdmUgT2JqZWN0cyBhZnRlciBHQyAlbHUsIHRvb2sgJS42ZiBzZWNzXG4i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2aXNpdENvdW50KSwgV1RGOjptb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKSAtIGdjU3RhcnRUaW1lKTsKICAgICB9CiAgICAgCi0gICAgaWYg
KG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9jb2xs
ZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX3RvdGFsQnl0
ZXNWaXNpdGVkID0gMDsKIAogICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlzQ3ljbGUgPSBtX3Ns
b3RWaXNpdG9yLmJ5dGVzVmlzaXRlZCgpICsgdGhyZWFkQnl0ZXNWaXNpdGVkKCk7CkBAIC04NzEs
NyArODcyLDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKCkKICAgICAvLyBJZiBK
YXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90IHNhZmUgdG8gZGVsZXRlIGFsbCBKYXZhU2Ny
aXB0IGNvZGUsIHNpbmNlCiAgICAgLy8gd2UnbGwgZW5kIHVwIHJldHVybmluZyB0byBkZWxldGVk
IGNvZGUuCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmVudHJ5U2NvcGUpOwotICAgIEFTU0VS
VChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworICAgIEFTU0VSVCghbV9j
b2xsZWN0aW9uU2NvcGUpOwogCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygpOwogCkBAIC05MDgs
NyArOTA5LDcgQEAgdm9pZCBIZWFwOjpjbGVhclVubWFya2VkRXhlY3V0YWJsZXMoKQogdm9pZCBI
ZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpCiB7CiAgICAgY2xlYXJVbm1hcmtlZEV4
ZWN1dGFibGVzKCk7Ci0gICAgbV9jb2RlQmxvY2tzLT5kZWxldGVVbm1hcmtlZEFuZFVucmVmZXJl
bmNlZChtX29wZXJhdGlvbkluUHJvZ3Jlc3MpOworICAgIG1fY29kZUJsb2Nrcy0+ZGVsZXRlVW5t
YXJrZWRBbmRVbnJlZmVyZW5jZWQoKm1fY29sbGVjdGlvblNjb3BlKTsKICAgICBtX2ppdFN0dWJS
b3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCk7CiB9CiAKQEAg
LTkzMiw3ICs5MzMsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKICAgICBpZiAo
IW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb2xsZWN0V2l0aG91
dEFueVN3ZWVwKEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBjb2xsZWN0V2l0aG91dEFueVN3ZWVwKENv
bGxlY3Rpb25TY29wZTo6RnVsbCk7CiAKICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoKnRo
aXMpOwogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpCkBA
IC05NTUsMjkgKzk1NiwyOSBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKICAgICBz
d2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogfQogCi12b2lkIEhlYXA6OmNvbGxl
Y3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKK3ZvaWQgSGVhcDo6Y29sbGVjdChPcHRp
b25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAg
ICAgICByZXR1cm47Ci0KLSAgICBjb2xsZWN0V2l0aG91dEFueVN3ZWVwKGNvbGxlY3Rpb25UeXBl
KTsKKyAgICAKKyAgICBjb2xsZWN0V2l0aG91dEFueVN3ZWVwKHNjb3BlKTsKIH0KIAotTkVWRVJf
SU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdFdpdGhvdXRBbnlTd2VlcChIZWFwT3BlcmF0aW9uIGNv
bGxlY3Rpb25UeXBlKQorTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdFdpdGhvdXRBbnlT
d2VlcChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewogICAgIHZvaWQqIHN0YWNr
VG9wOwogICAgIEFMTE9DQVRFX0FORF9HRVRfUkVHSVNURVJfU1RBVEUocmVnaXN0ZXJzKTsKIAot
ICAgIGNvbGxlY3RJbXBsKGNvbGxlY3Rpb25UeXBlLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5v
cmlnaW4oKSwgJnN0YWNrVG9wLCByZWdpc3RlcnMpOworICAgIGNvbGxlY3RJbXBsKHNjb3BlLCB3
dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSwgJnN0YWNrVG9wLCByZWdpc3RlcnMpOwog
CiAgICAgc2FuaXRpemVTdGFja0ZvclZNKG1fdm0pOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBI
ZWFwOjpjb2xsZWN0SW1wbChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlLCB2b2lkKiBzdGFj
a09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpSZWdpc3RlclN0YXRlJiBj
YWxsZWVTYXZlZFJlZ2lzdGVycykKK05FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBs
KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lk
KiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVn
aXN0ZXJzKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKLSAgICBUaW1pbmdTY29wZSBjb2xsZWN0SW1wbFRpbWluZ1Njb3BlKGNvbGxlY3Rpb25UeXBl
LCAiSGVhcDo6Y29sbGVjdEltcGwiKTsKKyAgICBUaW1pbmdTY29wZSBjb2xsZWN0SW1wbFRpbWlu
Z1Njb3BlKHNjb3BlLCAiSGVhcDo6Y29sbGVjdEltcGwiKTsKICAgICAKICNpZiBFTkFCTEUoQUxM
T0NBVElPTl9MT0dHSU5HKQogICAgIGRhdGFMb2dGKCJKU0MgR0Mgc3RhcnRpbmcgY29sbGVjdGlv
bi5cbiIpOwpAQCAtOTkwLDgxICs5OTEsNzggQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29s
bGVjdEltcGwoSGVhcAogICAgIH0KICAgICAKICAgICBkb3VibGUgZ2NTdGFydFRpbWU7Ci0gICAg
ewotICAgICAgICBUaW1pbmdTY29wZSBlYXJseVRpbWluZ1Njb3BlKGNvbGxlY3Rpb25UeXBlLCAi
SGVhcDo6Y29sbGVjdEltcGwgYmVmb3JlIG1hcmtSb290cyIpOwotCi0gICAgICAgIGlmICh2bSgp
LT50eXBlUHJvZmlsZXIoKSkgewotICAgICAgICAgICAgRGVmZXJHQ0ZvckFXaGlsZSBhd2hpbGUo
KnRoaXMpOwotICAgICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dF
bnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7Ci0gICAgICAgIH0KLQorICAgIAorICAgIGlmICh2
bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgq
dGhpcyk7CisgICAgICAgIHZtKCktPnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmll
cyhBU0NJSUxpdGVyYWwoIkdDIikpOworICAgIH0KKyAgICAKICNpZiBFTkFCTEUoSklUKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7Ci0gICAg
ICAgICAgICBKSVRXb3JrbGlzdDo6aW5zdGFuY2UoKS0+Y29tcGxldGVBbGxGb3JWTSgqbV92bSk7
Ci0gICAgICAgIH0KKyAgICB7CisgICAgICAgIERlZmVyR0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlz
KTsKKyAgICAgICAgSklUV29ya2xpc3Q6Omluc3RhbmNlKCktPmNvbXBsZXRlQWxsRm9yVk0oKm1f
dm0pOworICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0gICAgICAgIHZtKCktPnNoYWRv
d0NoaWNrZW4oKS51cGRhdGUoKnZtKCksIHZtKCktPnRvcENhbGxGcmFtZSk7Ci0KLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJyYWxEZXB0aCk7Ci0gICAgICAgIEFTU0VSVCh2bSgpLT5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
dm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5n
VGFibGUoKSk7Ci0gICAgICAgIEFTU0VSVChtX2lzU2FmZVRvQ29sbGVjdCk7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7Ci0KLSAg
ICAgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgICAgICB3aWxsU3RhcnRDb2xsZWN0
aW9uKGNvbGxlY3Rpb25UeXBlKTsKKyAgICAKKyAgICB2bSgpLT5zaGFkb3dDaGlja2VuKCkudXBk
YXRlKCp2bSgpLCB2bSgpLT50b3BDYWxsRnJhbWUpOworICAgIAorICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2RlZmVycmFsRGVwdGgpOworICAgIEFTU0VSVCh2bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKKyAgICBBU1NFUlQo
bV9pc1NhZmVUb0NvbGxlY3QpOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29w
ZSk7CisgICAgCisgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOworICAgIHdpbGxTdGFydENv
bGxlY3Rpb24oc2NvcGUpOworICAgIHsKKyAgICAgICAgSGVscGluZ0dDU2NvcGUgaGVscGluZ0hl
YXBTY29wZSgqdGhpcyk7CisgICAgICAgIAorICAgICAgICBjb2xsZWN0SW1wbFRpbWluZ1Njb3Bl
LnNldFNjb3BlKCp0aGlzKTsKICAgICAgICAgCi0gICAgICAgIGNvbGxlY3RJbXBsVGltaW5nU2Nv
cGUuc2V0T3BlcmF0aW9uKCp0aGlzKTsKLSAgICAgICAgZWFybHlUaW1pbmdTY29wZS5zZXRPcGVy
YXRpb24oKnRoaXMpOwotCiAgICAgICAgIGdjU3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKICAgICAgICAgaWYgKG1fdmVyaWZpZXIpIHsKICAgICAgICAgICAg
IC8vIFZlcmlmeSB0aGF0IGxpdmUgb2JqZWN0cyBmcm9tIHRoZSBsYXN0IEdDIGN5Y2xlIGhhdmVu
J3QgYmVlbiBjb3JydXB0ZWQgYnkKICAgICAgICAgICAgIC8vIG11dGF0b3JzIGJlZm9yZSB3ZSBi
ZWdpbiB0aGlzIG5ldyBHQyBjeWNsZS4KICAgICAgICAgICAgIG1fdmVyaWZpZXItPnZlcmlmeShI
ZWFwVmVyaWZpZXI6OlBoYXNlOjpCZWZvcmVHQyk7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAg
ICAgbV92ZXJpZmllci0+aW5pdGlhbGl6ZUdDQ3ljbGUoKTsKICAgICAgICAgICAgIG1fdmVyaWZp
ZXItPmdhdGhlckxpdmVPYmplY3RzKEhlYXBWZXJpZmllcjo6UGhhc2U6OkJlZm9yZU1hcmtpbmcp
OwogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAgIGZsdXNoT2xkU3RydWN0dXJlSURUYWJs
ZXMoKTsKICAgICAgICAgc3RvcEFsbG9jYXRpb24oKTsKICAgICAgICAgcHJlcGFyZUZvck1hcmtp
bmcoKTsKICAgICAgICAgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKLQorICAgICAgICAKICAg
ICAgICAgaWYgKEhhc093blByb3BlcnR5Q2FjaGUqIGNhY2hlID0gdm0oKS0+aGFzT3duUHJvcGVy
dHlDYWNoZSgpKQogICAgICAgICAgICAgY2FjaGUtPmNsZWFyKCk7CisgICAgICAgIAorICAgICAg
ICBtYXJrUm9vdHMoZ2NTdGFydFRpbWUsIHN0YWNrT3JpZ2luLCBzdGFja1RvcCwgY2FsbGVlU2F2
ZWRSZWdpc3RlcnMpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmVyaWZpZXIpIHsKKyAgICAg
ICAgICAgIG1fdmVyaWZpZXItPmdhdGhlckxpdmVPYmplY3RzKEhlYXBWZXJpZmllcjo6UGhhc2U6
OkFmdGVyTWFya2luZyk7CisgICAgICAgICAgICBtX3ZlcmlmaWVyLT52ZXJpZnkoSGVhcFZlcmlm
aWVyOjpQaGFzZTo6QWZ0ZXJNYXJraW5nKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVy
KCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKKyAgICAgICAgCisgICAgICAgIHJlYXBXZWFr
SGFuZGxlcygpOworICAgICAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7Cisg
ICAgICAgIHN3ZWVwQXJyYXlCdWZmZXJzKCk7CisgICAgICAgIHNuYXBzaG90VW5zd2VwdCgpOwor
ICAgICAgICBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CisgICAgICAgIHJlbW92
ZURlYWRDb21waWxlcldvcmtsaXN0RW50cmllcygpOworICAgICAgICBkZWxldGVVbm1hcmtlZENv
bXBpbGVkQ29kZSgpOworICAgICAgICBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOworICAg
ICAgICAKKyAgICAgICAgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CisgICAgICAgIG1fY29k
ZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKHRoaXMpOworICAgICAgICBt
X2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7CisgICAgICAgIAorICAgICAg
ICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOworICAgICAgICB1cGRhdGVBbGxvY2F0aW9uTGltaXRz
KCk7CiAgICAgfQotCi0gICAgbWFya1Jvb3RzKGdjU3RhcnRUaW1lLCBzdGFja09yaWdpbiwgc3Rh
Y2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKLSAgICAKLSAgICBUaW1pbmdTY29wZSBsYXRl
VGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjpjb2xsZWN0SW1wbCBhZnRlciBtYXJrUm9vdHMiKTsK
LQotICAgIGlmIChtX3ZlcmlmaWVyKSB7Ci0gICAgICAgIG1fdmVyaWZpZXItPmdhdGhlckxpdmVP
YmplY3RzKEhlYXBWZXJpZmllcjo6UGhhc2U6OkFmdGVyTWFya2luZyk7Ci0gICAgICAgIG1fdmVy
aWZpZXItPnZlcmlmeShIZWFwVmVyaWZpZXI6OlBoYXNlOjpBZnRlck1hcmtpbmcpOwotICAgIH0K
LQotICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKLSAgICAgICAgdm0oKS0+dHlwZVByb2Zp
bGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKLQotICAgIHJlYXBXZWFrSGFuZGxlcygp
OwotICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKLSAgICBzd2VlcEFycmF5
QnVmZmVycygpOwotICAgIHNuYXBzaG90VW5zd2VwdCgpOwotICAgIGZpbmFsaXplVW5jb25kaXRp
b25hbEZpbmFsaXplcnMoKTsKLSAgICByZW1vdmVEZWFkQ29tcGlsZXJXb3JrbGlzdEVudHJpZXMo
KTsKLSAgICBkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpOwotICAgIGRlbGV0ZVNvdXJjZVBy
b3ZpZGVyQ2FjaGVzKCk7Ci0KLSAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKLSAgICBt
X2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZyh0aGlzKTsKLSAgICBt
X2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7Ci0KLSAgICBwcmVwYXJlRm9y
QWxsb2NhdGlvbigpOwotICAgIHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKICAgICBkaWRGaW5p
c2hDb2xsZWN0aW9uKGdjU3RhcnRUaW1lKTsKICAgICByZXN1bWVDb21waWxlclRocmVhZHMoKTsK
ICAgICBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKQEAgLTExMDMsMjIgKzExMDEsMjIgQEAgdm9p
ZCBIZWFwOjpzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCkKICNlbmRpZgogfQogCi12b2lkIEhlYXA6
OndpbGxTdGFydENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKK3ZvaWQg
SGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3Bl
KQogewogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICBkYXRhTG9nKCI9PiAiKTsK
ICAgICAKLSAgICBpZiAoc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihjb2xsZWN0aW9uVHlwZSkpIHsK
LSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gRnVsbENvbGxlY3Rpb247CisgICAgaWYg
KHNob3VsZERvRnVsbENvbGxlY3Rpb24oc2NvcGUpKSB7CisgICAgICAgIG1fY29sbGVjdGlvblNj
b3BlID0gQ29sbGVjdGlvblNjb3BlOjpGdWxsOwogICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxl
Y3Rpb24gPSBmYWxzZTsKICAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgICAg
ICBkYXRhTG9nKCJGdWxsQ29sbGVjdGlvbiwgIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9v
cGVyYXRpb25JblByb2dyZXNzID0gRWRlbkNvbGxlY3Rpb247CisgICAgICAgIG1fY29sbGVjdGlv
blNjb3BlID0gQ29sbGVjdGlvblNjb3BlOjpFZGVuOwogICAgICAgICBpZiAoT3B0aW9uczo6bG9n
R0MoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkVkZW5Db2xsZWN0aW9uLCAiKTsKICAgICB9Ci0g
ICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlm
IChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAg
bV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1f
Ynl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgICAgIG1fZXh0cmFNZW1vcnlTaXplID0gMDsK
ICAgICAgICAgbV9kZXByZWNhdGVkRXh0cmFNZW1vcnlTaXplID0gMDsKQEAgLTExMjksNyArMTEy
Nyw3IEBAIHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmEKICAgICAgICAg
aWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCiAgICAgICAgICAgICBtX2Z1bGxBY3Rpdml0eUNh
bGxiYWNrLT53aWxsQ29sbGVjdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pOworICAgICAgICBBU1NFUlQobV9j
b2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKICAgICAgICAgbV9zaXpl
QmVmb3JlTGFzdEVkZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNB
bGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgfQogCkBAIC0xMTQ3LDcgKzExNDUsNyBAQCB2b2lkIEhl
YXA6OmZsdXNoT2xkU3RydWN0dXJlSURUYWJsZXMoKQogCiB2b2lkIEhlYXA6OmZsdXNoV3JpdGVC
YXJyaWVyQnVmZmVyKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5D
b2xsZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29w
ZTo6RWRlbikgewogICAgICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5mbHVzaCgqdGhpcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTcxLDcgKzExNjksNyBAQCB2b2lkIEhlYXA6OnJl
YXBXZWFrSGFuZGxlcygpCiAKIHZvaWQgSGVhcDo6cHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dD
TWFwcygpCiB7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBGdWxsQ29sbGVjdGlv
bikKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgIT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQog
ICAgICAgICByZXR1cm47CiAgICAgZm9yIChhdXRvJiBwcnVuZUNhbGxiYWNrIDogbV93ZWFrR0NN
YXBzLnZhbHVlcygpKQogICAgICAgICBwcnVuZUNhbGxiYWNrKCk7CkBAIC0xMTk1LDcgKzExOTMs
NyBAQCB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKIAogdm9pZCBIZWFw
Ojpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKQogewotICAgIGlmIChtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0g
Q29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGlmICghbV9sb2dpY2FsbHlFbXB0eVdl
YWtCbG9ja3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9pbmRleE9mTmV4dExvZ2ljYWxseUVt
cHR5V2Vha0Jsb2NrVG9Td2VlcCA9IDA7CiAgICAgfQpAQCAtMTI0Myw3ICsxMjQxLDcgQEAgdm9p
ZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhI
ZWFwU2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkK
ICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwogCi0gICAgaWYgKG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlmIChtX2NvbGxl
Y3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgLy8gVG8gYXZv
aWQgcGF0aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZlcnkgbGFyZ2UgaGVh
cHMsIHdlIHNldAogICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGltaXQgYmFzZWQgb24g
dGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCiAgICAgICAgIC8vIGZpeGVkIG1p
bmltdW0uCkBAIC0xMjk4LDggKzEyOTYsOCBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25M
aW1pdHMoKQogdm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnY1N0YXJ0VGlt
ZSkKIHsKICAgICBkb3VibGUgZ2NFbmRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKLSAgICBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fb3BlcmF0aW9uSW5Qcm9n
cmVzczsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQor
ICAgIENvbGxlY3Rpb25TY29wZSBzY29wZSA9ICptX2NvbGxlY3Rpb25TY29wZTsKKyAgICBpZiAo
c2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2xhc3RGdWxsR0NMZW5n
dGggPSBnY0VuZFRpbWUgLSBnY1N0YXJ0VGltZTsKICAgICBlbHNlCiAgICAgICAgIG1fbGFzdEVk
ZW5HQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1lOwpAQCAtMTMyMiwxMSArMTMyMCwx
MSBAQCB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiAgICAgICAgIHJl
bW92ZURlYWRIZWFwU25hcHNob3ROb2RlcygqaGVhcFByb2ZpbGVyKTsKICAgICB9CiAKLSAgICBS
RUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24gfHwg
bV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKTsKLSAgICBtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2NvbGxlY3Rp
b25TY29wZSk7CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBOdWxsb3B0OwogCiAgICAgZm9yIChh
dXRvKiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+ZGlkR2FyYmFn
ZUNvbGxlY3Qob3BlcmF0aW9uKTsKKyAgICAgICAgb2JzZXJ2ZXItPmRpZEdhcmJhZ2VDb2xsZWN0
KHNjb3BlKTsKIH0KIAogdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVhZHMoKQpAQCAtMTM4
OCw3ICsxMzg2LDcgQEAgYm9vbCBIZWFwOjppc1ZhbGlkQWxsb2NhdGlvbihzaXplX3QpCiAgICAg
aWYgKCFpc1ZhbGlkVGhyZWFkU3RhdGUobV92bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pCisgICAgaWYgKGlz
Q3VycmVudFRocmVhZEJ1c3koKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTQ2NSwyNCArMTQ2MywxNCBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVC
YXJyaWVyQnVmZmVyKEpTQ2VsCiAgICAgbV93cml0ZUJhcnJpZXJCdWZmZXIuYWRkKGNlbGwpOwog
fQogCi1ib29sIEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1
ZXN0ZWRDb2xsZWN0aW9uVHlwZSkgY29uc3QKK2Jvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVj
dGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKSBjb25zdAogewogICAgIGlmICgh
T3B0aW9uczo6dXNlR2VuZXJhdGlvbmFsR0MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBzd2l0Y2ggKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7Ci0gICAgY2FzZSBFZGVuQ29sbGVj
dGlvbjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKKyAgICBpZiAoIXNj
b3BlKQogICAgICAgICByZXR1cm4gbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICpzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw7
CiB9CiAKIHZvaWQgSGVhcDo6YWRkTG9naWNhbGx5RW1wdHlXZWFrQmxvY2soV2Vha0Jsb2NrKiBi
bG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwNzYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MjIsMTcgKzIyLDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgi
CisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFj
ay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgotI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24u
aCIKICNpbmNsdWRlICJMaXN0YWJsZUhhbmRsZXIuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tN
YXJrZXIuaCIKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRC
bG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiTWFya2VkU3Bh
Y2UuaCIKKyNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAj
aW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCkBA
IC00OCw3ICs0OSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBBbGxvY2F0aW9uU2Nv
cGU7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBHQ0RlZmVy
cmFsQ29udGV4dDsKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9m
aWxlcjsKIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIEhlYXBWZXJpZmllcjsKK2NsYXNz
IEhlbHBpbmdHQ1Njb3BlOwogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyOwogY2xhc3MgSklUU3R1
YlJvdXRpbmU7CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKQEAgLTEzOSwxMSArMTQwLDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZE9ic2VydmVyKEhlYXBPYnNlcnZlciogb2JzZXJ2ZXIpIHsg
bV9vYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVyKTsgfQogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIo
SGVhcE9ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVycy5yZW1vdmVGaXJzdChvYnNlcnZl
cik7IH0KIAotICAgIC8vIHRydWUgaWYgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwotICAgIGJv
b2wgaXNDb2xsZWN0aW5nKCk7Ci0gICAgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb25JblByb2dyZXNz
KCkgeyByZXR1cm4gbV9vcGVyYXRpb25JblByb2dyZXNzOyB9Ci0gICAgLy8gdHJ1ZSBpZiBhbiBh
bGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKLSAgICBib29sIGlzQnVzeSgp
OworICAgIE11dGF0b3JTdGF0ZSBtdXRhdG9yU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX211dGF0
b3JTdGF0ZTsgfQorICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gY29sbGVjdGlvblNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2xsZWN0aW9uU2NvcGU7IH0KKworICAgIC8vIFdlJ3JlIGFs
d2F5cyBidXN5IG9uIHRoZSBjb2xsZWN0aW9uIHRocmVhZHMuIE9uIHRoZSBtYWluIHRocmVhZCwg
dGhpcyByZXR1cm5zIHRydWUgaWYgd2UncmUKKyAgICAvLyBoZWxwaW5nIGhlYXAuCisgICAgYm9v
bCBpc0N1cnJlbnRUaHJlYWRCdXN5KCk7CisgICAgCiAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNl
JiBzdWJzcGFjZUZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1cm4gbV9vYmplY3RT
cGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpOyB9CiAgICAgTWFya2Vk
U3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdERlc3RydWN0b3IoKSB7IHJldHVybiBt
X29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9yKCk7IH0KICAgICBN
YXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0YSgpIHsgcmV0dXJu
IG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCk7IH0KQEAgLTE3MSw3ICsx
NzQsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0QWxsR2Fy
YmFnZSgpOwogCiAgICAgYm9vbCBzaG91bGRDb2xsZWN0KCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0
aW9uKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoT3B0aW9uYWw8Q29sbGVj
dGlvblNjb3BlPiA9IE51bGxvcHQpOwogICAgIGJvb2wgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZl
cihHQ0RlZmVycmFsQ29udGV4dCogPSBudWxscHRyKTsgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGRp
ZCBjb2xsZWN0LgogICAgIHZvaWQgY29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5
KCk7CiAKQEAgLTI2OCw3ICsyNzEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgdW5zaWduZWQqIGFk
ZHJlc3NPZkJhcnJpZXJUaHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiAmbV9iYXJyaWVyVGhyZXNo
b2xkOyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TY29wZTsKKyAg
ICBmcmllbmQgY2xhc3MgQWxsb2NhdGluZ1Njb3BlOwogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxv
Y2s7CiAgICAgZnJpZW5kIGNsYXNzIERlZmVyR0M7CiAgICAgZnJpZW5kIGNsYXNzIERlZmVyR0NG
b3JBV2hpbGU7CkBAIC0yNzgsNiArMjgxLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
SGFuZGxlU2V0OwogICAgIGZyaWVuZCBjbGFzcyBIZWFwVXRpbDsKICAgICBmcmllbmQgY2xhc3Mg
SGVhcFZlcmlmaWVyOworICAgIGZyaWVuZCBjbGFzcyBIZWxwaW5nR0NTY29wZTsKICAgICBmcmll
bmQgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CkBAIC0yOTMsNyArMjk3LDcg
QEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2Nh
dGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kiwg
c2l6ZV90KTsKIAotICAgIHZvaWQgY29sbGVjdFdpdGhvdXRBbnlTd2VlcChIZWFwT3BlcmF0aW9u
IGNvbGxlY3Rpb25UeXBlID0gQW55Q29sbGVjdGlvbik7CisgICAgdm9pZCBjb2xsZWN0V2l0aG91
dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gPSBOdWxsb3B0KTsKIAogICAgIHZv
aWQqIGFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVj
dHMgd2l0aCBkZXN0cnVjdG9ycy4KICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9y
KHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmplY3RzIHdpdGhvdXQgZGVzdHJ1Y3RvcnMuCkBA
IC0zMTIsMTAgKzMxNiwxMCBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWRTbG93Q2FzZShzaXplX3QpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2xvd0Nhc2Uoc2l6ZV90
KTsKIAotICAgIHZvaWQgY29sbGVjdEltcGwoSGVhcE9wZXJhdGlvbiwgdm9pZCogc3RhY2tPcmln
aW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJTdGF0ZSYpOworICAg
IHZvaWQgY29sbGVjdEltcGwoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiwgdm9pZCogc3RhY2tP
cmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJTdGF0ZSYpOwog
CiAgICAgdm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAgdm9pZCB3aWxsU3RhcnRD
b2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpOworICAgIHZvaWQgd2lsbFN0
YXJ0Q29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+KTsKICAgICB2b2lkIGZsdXNo
T2xkU3RydWN0dXJlSURUYWJsZXMoKTsKICAgICB2b2lkIGZsdXNoV3JpdGVCYXJyaWVyQnVmZmVy
KCk7CiAgICAgdm9pZCBzdG9wQWxsb2NhdGlvbigpOwpAQCAtMzY2LDcgKzM3MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogICAgIGJv
b2wgc3dlZXBOZXh0TG9naWNhbGx5RW1wdHlXZWFrQmxvY2soKTsKIAotICAgIGJvb2wgc2hvdWxk
RG9GdWxsQ29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSBj
b25zdDsKKyAgICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlv
blNjb3BlPiByZXF1ZXN0ZWRDb2xsZWN0aW9uU2NvcGUpIGNvbnN0OwogCiAgICAgdm9pZCBpbmNy
ZW1lbnREZWZlcnJhbERlcHRoKCk7CiAgICAgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7
CkBAIC0zOTQsNyArMzk4LDggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV90b3RhbEJ5dGVzVmlz
aXRlZDsKICAgICBzaXplX3QgbV90b3RhbEJ5dGVzVmlzaXRlZFRoaXNDeWNsZTsKICAgICAKLSAg
ICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsKKyAgICBPcHRpb25hbDxDb2xs
ZWN0aW9uU2NvcGU+IG1fY29sbGVjdGlvblNjb3BlOworICAgIE11dGF0b3JTdGF0ZSBtX211dGF0
b3JTdGF0ZSB7IE11dGF0b3JTdGF0ZTo6UnVubmluZyB9OwogICAgIFN0cnVjdHVyZUlEVGFibGUg
bV9zdHJ1Y3R1cmVJRFRhYmxlOwogICAgIE1hcmtlZFNwYWNlIG1fb2JqZWN0U3BhY2U7CiAgICAg
R0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJzOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDc2
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwyMSArNDUsMTYgQEAgaW5saW5lIGJvb2wgSGVhcDo6c2hvdWxkQ29sbGVj
dCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBO
b09wZXJhdGlvbikKKyAgICBpZiAoY29sbGVjdGlvblNjb3BlKCkgfHwgbXV0YXRvclN0YXRlKCkg
PT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICByZXR1cm4gbV9ieXRlc0FsbG9j
YXRlZFRoaXNDeWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKTsKICAgICByZXR1cm4gbV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IG1fbWF4RWRlblNpemU7CiB9CiAKLWlubGluZSBib29s
IEhlYXA6OmlzQnVzeSgpCitpbmxpbmUgYm9vbCBIZWFwOjppc0N1cnJlbnRUaHJlYWRCdXN5KCkK
IHsKLSAgICByZXR1cm4gbV9vcGVyYXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uOwotfQot
Ci1pbmxpbmUgYm9vbCBIZWFwOjppc0NvbGxlY3RpbmcoKQotewotICAgIHJldHVybiBtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24gfHwgbV9vcGVyYXRpb25JblByb2dyZXNz
ID09IEVkZW5Db2xsZWN0aW9uOworICAgIHJldHVybiBtYXlCZUdDVGhyZWFkKCkgfHwgbXV0YXRv
clN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpSdW5uaW5nOwogfQogCiBBTFdBWVNfSU5MSU5FIEhl
YXAqIEhlYXA6OmhlYXAoY29uc3QgSGVhcENlbGwqIGNlbGwpCkBAIC03Niw3ICs3MSw3IEBAIGlu
bGluZSBIZWFwKiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFsdWUgdikKIAogQUxXQVlTX0lOTElORSBi
b29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7Ci0gICAgQVNTRVJUKCFt
YXlCZUdDVGhyZWFkKCkpOworICAgIEFTU0VSVChtYXlCZUdDVGhyZWFkKCkgIT0gR0NUaHJlYWRU
eXBlOjpIZWxwZXIpOwogICAgIEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9jYXN0PEhlYXBDZWxs
Kj4ocmF3Q2VsbCk7CiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAg
IHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwpAQCAtMTYxLDcgKzE1
Niw3IEBAIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2MKIGlubGluZSB2
b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNp
emVfdCBzaXplKQogewogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG91YmxlLWNvdW50IHRoZSBl
eHRyYSBtZW1vcnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29sbGVjdGlvbnMuCi0g
ICAgaWYgKG9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbiAmJiBvbGRTdGF0
ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENv
bGxlY3Rpb25TY29wZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dHJhTWVtb3J5U2l6
ZTsKQEAgLTE3Nyw3ICsxNzIsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9y
eVZpc2l0CiBpbmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRlcm5hbE1lbW9yeVZpc2l0ZWQoQ2Vs
bFN0YXRlIG9sZFN0YXRlLCBzaXplX3Qgc2l6ZSkKIHsKICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGRvdWJsZS1jb3VudCB0aGUgZXh0ZXJuYWwgbWVtb3J5IHRoYXQgd2FzIHJlcG9ydGVkIGluIHBy
ZXZpb3VzIGNvbGxlY3Rpb25zLgotICAgIGlmIChvcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRl
bkNvbGxlY3Rpb24gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5KQorICAgIGlmIChj
b2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4gJiYgb2xkU3RhdGUgPT0g
Q2VsbFN0YXRlOjpPbGRHcmV5KQogICAgICAgICByZXR1cm47CiAKICAgICBzaXplX3QqIGNvdW50
ZXIgPSAmbV9leHRlcm5hbE1lbW9yeVNpemU7CkBAIC0zNzIsNyArMzY3LDcgQEAgaW5saW5lIGJv
b2wgSGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZQogCiBpbmxpbmUgdm9pZCBIZWFwOjpjb2xs
ZWN0QWNjb3JkaW5nVG9EZWZlckdDUHJvYmFiaWxpdHkoKQogewotICAgIGlmIChpc0RlZmVycmVk
KCkgfHwgIW1faXNTYWZlVG9Db2xsZWN0IHx8IG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09w
ZXJhdGlvbikKKyAgICBpZiAoaXNEZWZlcnJlZCgpIHx8ICFtX2lzU2FmZVRvQ29sbGVjdCB8fCBj
b2xsZWN0aW9uU2NvcGUoKSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBp
bmdHQykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJhbmRvbU51bWJlcigpIDwgT3B0aW9u
czo6ZGVmZXJHQ1Byb2JhYmlsaXR5KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBPYnNlcnZlci5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24uaCIKKyNpbmNsdWRl
ICJDb2xsZWN0aW9uU2NvcGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgSGVhcE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IZWFwT2JzZXJ2
ZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbEdhcmJhZ2VDb2xsZWN0KCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRHYXJiYWdlQ29sbGVjdChIZWFwT3BlcmF0aW9uKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KENvbGxlY3Rpb25TY29wZSkgPSAwOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhlYXBPcGVy
YXRpb24uaCIKLQotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQotewotICAgIHN3aXRjaCAob3BlcmF0
aW9uKSB7Ci0gICAgY2FzZSBOb09wZXJhdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJOb25lIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEFsbG9jYXRpb246Ci0gICAgICAgIG91dC5wcmlu
dCgiQWxsb2MiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246Ci0g
ICAgICAgIG91dC5wcmludCgiRnVsbCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBFZGVu
Q29sbGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJFZGVuIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEFueUNvbGxlY3Rpb246Ci0gICAgICAgIG91dC5wcmludCgiQW55Iik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcE9wZXJhdGlvbi5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVt
IEhlYXBPcGVyYXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgRnVsbENvbGxlY3Rpb24s
IEVkZW5Db2xsZWN0aW9uLCBBbnlDb2xsZWN0aW9uIH07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkhlYXBPcGVyYXRpb24pOwotCi19IC8vIG5hbWVz
cGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVy
LmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjQgKzQzLDYgQEAgSGVhcFZlcmlm
aWVyOjpIZWFwVmVyaWZpZXIoSGVhcCogaGVhcCwgdQogICAgIG1fY3ljbGVzID0gc3RkOjptYWtl
X3VuaXF1ZTxHQ0N5Y2xlW10+KG1fbnVtYmVyT2ZDeWNsZXMpOwogfQogCi1jb25zdCBjaGFyKiBI
ZWFwVmVyaWZpZXI6OmNvbGxlY3Rpb25UeXBlTmFtZShIZWFwT3BlcmF0aW9uIHR5cGUpCi17Ci0g
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBOb09wZXJhdGlvbjoKLSAgICAgICAgcmV0dXJu
ICJOb09wZXJhdGlvbiI7Ci0gICAgY2FzZSBBbnlDb2xsZWN0aW9uOgotICAgICAgICByZXR1cm4g
IkFueUNvbGxlY3Rpb24iOwotICAgIGNhc2UgQWxsb2NhdGlvbjoKLSAgICAgICAgcmV0dXJuICJB
bGxvY2F0aW9uIjsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gIkVk
ZW5Db2xsZWN0aW9uIjsKLSAgICBjYXNlIEZ1bGxDb2xsZWN0aW9uOgotICAgICAgICByZXR1cm4g
IkZ1bGxDb2xsZWN0aW9uIjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsgLy8gU2lsZW5jaW5nIGEgY29tcGlsZXIgd2FybmluZy4K
LX0KLQogY29uc3QgY2hhciogSGVhcFZlcmlmaWVyOjpwaGFzZU5hbWUoSGVhcFZlcmlmaWVyOjpQ
aGFzZSBwaGFzZSkKIHsKICAgICBzd2l0Y2ggKHBoYXNlKSB7CkBAIC04MSw3ICs2Myw3IEBAIHZv
aWQgSGVhcFZlcmlmaWVyOjppbml0aWFsaXplR0NDeWNsZSgpCiB7CiAgICAgSGVhcCogaGVhcCA9
IG1faGVhcDsKICAgICBpbmNyZW1lbnRDeWNsZSgpOwotICAgIGN1cnJlbnRDeWNsZSgpLmNvbGxl
Y3Rpb25UeXBlID0gaGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpOworICAgIGN1cnJlbnRDeWNs
ZSgpLnNjb3BlID0gKmhlYXAtPmNvbGxlY3Rpb25TY29wZSgpOwogfQogCiBzdHJ1Y3QgR2F0aGVy
TGl2ZU9iakZ1bmN0b3IgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKQEAgLTE5NSw3ICsx
NzcsNyBAQCB2b2lkIEhlYXBWZXJpZmllcjo6cmVwb3J0T2JqZWN0KExpdmVPYmplCiAKICAgICBp
ZiAob2JqRGF0YS5pc0NvbmZpcm1lZERlYWQpIHsKICAgICAgICAgZGF0YUxvZ0YoIkZPVU5EIGRl
YWQgb2JqICVwIGluIEdDWyVkXSAlcyBsaXN0ICclcydcbiIsCi0gICAgICAgICAgICBvYmosIGN5
Y2xlSW5kZXgsIGN5Y2xlLmNvbGxlY3Rpb25UeXBlTmFtZSgpLCBsaXN0Lm5hbWUpOworICAgICAg
ICAgICAgb2JqLCBjeWNsZUluZGV4LCBjb2xsZWN0aW9uU2NvcGVOYW1lKGN5Y2xlLnNjb3BlKSwg
bGlzdC5uYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDcgKzE4OCw3IEBA
IHZvaWQgSGVhcFZlcmlmaWVyOjpyZXBvcnRPYmplY3QoTGl2ZU9iamUKICAgICBkYXRhTG9nRigi
Rk9VTkQgb2JqICVwIHR5cGUgJyVzJyBidXR0ZXJmbHkgJXAgKGJhc2UgJXApIGluIEdDWyVkXSAl
cyBsaXN0ICclcydcbiIsCiAgICAgICAgIG9iaiwgc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+Y2xh
c3NOYW1lLAogICAgICAgICBidXR0ZXJmbHksIGJ1dHRlcmZseUJhc2UsCi0gICAgICAgIGN5Y2xl
SW5kZXgsIGN5Y2xlLmNvbGxlY3Rpb25UeXBlTmFtZSgpLCBsaXN0Lm5hbWUpOworICAgICAgICBj
eWNsZUluZGV4LCBjb2xsZWN0aW9uU2NvcGVOYW1lKGN5Y2xlLnNjb3BlKSwgbGlzdC5uYW1lKTsK
IH0KIAogdm9pZCBIZWFwVmVyaWZpZXI6OmNoZWNrSWZSZWNvcmRlZChKU09iamVjdCogb2JqKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmgJKHJldmlzaW9u
IDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAgICAvLyBvYmplY3Qgd2Fz
IGluIGFueSBvZiB0aG9zZSBsaXN0cy4KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNoZWNr
SWZSZWNvcmRlZChKU09iamVjdCopOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbGxlY3Rp
b25UeXBlTmFtZShIZWFwT3BlcmF0aW9uKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogcGhhc2VO
YW1lKFBoYXNlKTsKIAogcHJpdmF0ZToKQEAgLTY1LDE0ICs2NCw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGU7
CisgICAgICAgIENvbGxlY3Rpb25TY29wZSBzY29wZTsKICAgICAgICAgTGl2ZU9iamVjdExpc3Qg
YmVmb3JlOwogICAgICAgICBMaXZlT2JqZWN0TGlzdCBhZnRlcjsKLQotICAgICAgICBjb25zdCBj
aGFyKiBjb2xsZWN0aW9uVHlwZU5hbWUoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gSGVhcFZlcmlmaWVyOjpjb2xsZWN0aW9uVHlwZU5hbWUoY29sbGVjdGlvblR5cGUpOwot
ICAgICAgICB9CiAgICAgfTsKIAogICAgIHZvaWQgaW5jcmVtZW50Q3ljbGUoKSB7IG1fY3VycmVu
dEN5Y2xlID0gKG1fY3VycmVudEN5Y2xlICsgMSkgJSBtX251bWJlck9mQ3ljbGVzOyB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWxwaW5nR0NTY29wZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlbHBpbmdHQ1Njb3BlLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVscGluZ0dDU2NvcGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJIZWFwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWxwaW5nR0NT
Y29wZSB7CitwdWJsaWM6CisgICAgSGVscGluZ0dDU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAg
OiBtX2hlYXAoaGVhcCkKKyAgICAgICAgLCBtX29sZFN0YXRlKG1faGVhcC5tX211dGF0b3JTdGF0
ZSkKKyAgICB7CisgICAgICAgIG1faGVhcC5tX211dGF0b3JTdGF0ZSA9IE11dGF0b3JTdGF0ZTo6
SGVscGluZ0dDOworICAgIH0KKyAgICAKKyAgICB+SGVscGluZ0dDU2NvcGUoKQorICAgIHsKKyAg
ICAgICAgbV9oZWFwLm1fbXV0YXRvclN0YXRlID0gbV9vbGRTdGF0ZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgSGVhcCYgbV9oZWFwOworICAgIE11dGF0b3JTdGF0ZSBtX29sZFN0YXRlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xhcmdlQWxsb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzcsNyArNzcsNyBAQCB2b2lkIExhcmdlQWxsb2NhdGlvbjo6cmVhcFdlYWtTZXQoKQogCiB2b2lk
IExhcmdlQWxsb2NhdGlvbjo6ZmxpcCgpCiB7Ci0gICAgQVNTRVJUKGhlYXAoKS0+b3BlcmF0aW9u
SW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBBU1NFUlQoaGVhcCgpLT5jb2xs
ZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgIGNsZWFyTWFya2Vk
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxs
b2NhdG9yLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgogCi0jaW5j
bHVkZSAiQWxsb2NhdGlvblNjb3BlLmgiCisjaW5jbHVkZSAiQWxsb2NhdGluZ1Njb3BlLmgiCiAj
aW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1
ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgpAQCAtMTg1LDcgKzE4NSw2IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmRvVGUKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBtX2hlYXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgICAgIH0KLSAgICAgICAg
QVNTRVJUKG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKICAg
ICB9CiAgICAgaWYgKCsrYWxsb2NhdGlvbkNvdW50ID49IE9wdGlvbnM6OnNsb3dQYXRoQWxsb2Nz
QmV0d2VlbkdDcygpKQogICAgICAgICBhbGxvY2F0aW9uQ291bnQgPSAwOwpAQCAtMjE0LDEwICsy
MTMsMTAgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlSQogICAgIAog
ICAgIGRpZENvbnN1bWVGcmVlTGlzdCgpOwogICAgIAorICAgIEFsbG9jYXRpbmdTY29wZSBoZWFs
cGluZ0hlYXAoKm1faGVhcCk7CisKICAgICBtX2hlYXAtPmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVm
ZXIoZGVmZXJyYWxDb250ZXh0KTsKICAgICAKLSAgICBBbGxvY2F0aW9uU2NvcGUgYWxsb2NhdGlv
blNjb3BlKCptX2hlYXApOwotCiAgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVXaXRob3V0
Q29sbGVjdGluZygpOwogICAgIAogICAgIGlmIChMSUtFTFkocmVzdWx0ICE9IDApKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDc2MTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRGVzdHJ1Y3Rpb25Nb2RlLmgiCiAjaW5j
bHVkZSAiRnJlZUxpc3QuaCIKICNpbmNsdWRlICJIZWFwQ2VsbC5oIgotI2luY2x1ZGUgIkhlYXBP
cGVyYXRpb24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25TdGF0dXMuaCIKICNpbmNsdWRlICJXZWFr
U2V0LmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM4
LDcgKzMzOCw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIAog
ICAgIG1fYWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFrU2V0cyk7CiAgICAg
Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9u
KQorICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbikKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0g
bV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fbGFy
Z2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IDA7CkBAIC0zNTUsNyArMzU1LDcg
QEAgdm9pZCBNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhIZWFwUm9vdAogICAgIAogICAgIG1f
bmV3QWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+
b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX2hlYXAt
PmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9h
Y3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKIH0KIApAQCAtMzY3LDcgKzM2Nyw3IEBAIHZv
aWQgTWFya2VkU3BhY2U6OnJlYXBXZWFrU2V0cygpCiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFr
U2V0cy5mb3JFYWNoKHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblBy
b2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRz
LmZvckVhY2godmlzaXQpOwogfQogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBNYXJrZWRTcGFj
ZTo6c3RvcEFsbG9jYXRpbmcoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yTWFya2lu
ZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xs
ZWN0aW9uKQorICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25T
Y29wZTo6RWRlbikKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxl
Y3Rpb24gPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKICAgICAg
ICAgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24gPSAwOwpAQCAtNDUz
LDcgKzQ1Myw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVz
cygpID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3Bl
KCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGZvckVhY2hBbGxvY2F0b3Io
CiAgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRp
b25TdGF0dXMgewogICAgICAgICAgICAgICAgIGFsbG9jYXRvci5iZWdpbk1hcmtpbmdGb3JGdWxs
Q29sbGVjdGlvbigpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZFNwYWNlOjpmaW5kRW0KIAogdm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkK
IHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rp
b24pIHsKKyAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2Nv
cGU6OkVkZW4pIHsKICAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgICAgIFsmXSAo
TWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAg
ICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0ZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0YXRvclN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXVEYgeworCit2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTXV0YXRvclN0YXRlIHN0YXRlKQor
eworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIE11dGF0b3JTdGF0ZTo6UnVubmluZzoK
KyAgICAgICAgb3V0LnByaW50KCJSdW5uaW5nIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZzoKKyAgICAgICAgb3V0LnByaW50KCJBbGxvY2F0aW5n
Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDOgor
ICAgICAgICBvdXQucHJpbnQoIkhlbHBpbmdHQyIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIE11dGF0b3JTdGF0ZSB7CisgICAgLy8g
VGhlIG11dGF0b3IgaXMgcnVubmluZyB3aGVuIGl0J3Mgbm90IGluc2lkZSBhIEhlYXAgc2xvdyBw
YXRoLgorICAgIFJ1bm5pbmcsCisgICAgCisgICAgLy8gVGhlIG11dGF0b3IgaXMgaW4gYW4gYWxs
b2NhdGlvbiBzbG93IHBhdGguCisgICAgQWxsb2NhdGluZywKKyAgICAKKyAgICAvLyBUaGUgbXV0
YXRvciB3YXMgYXNrZWQgYnkgdGhlIEdDIHRvIGRvIHNvbWUgd29yay4KKyAgICBIZWxwaW5nR0MK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJp
bnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6TXV0YXRv
clN0YXRlKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NyArOTYsNyBAQCBTbG90VmlzaXRvcjo6flNsb3RWaXNpdG9yKCkKIAogdm9pZCBTbG90VmlzaXRv
cjo6ZGlkU3RhcnRNYXJraW5nKCkKIHsKLSAgICBpZiAoaGVhcCgpLT5vcGVyYXRpb25JblByb2dy
ZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKGhlYXAoKS0+Y29sbGVjdGlvblNjb3Bl
KCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBBU1NFUlQobV9vcGFxdWVSb290
cy5pc0VtcHR5KCkpOyAvLyBTaG91bGQgaGF2ZSBtZXJnZWQgYnkgbm93LgogICAgIGVsc2UKICAg
ICAgICAgcmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAkocmV2aXNpb24g
MjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9ySGVhcEFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDE3ICszMjAsMTYgQEAgdm9p
ZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9iamVjdAogICAgIHJlc3VsdCA9IGluamVj
dGVkU2NyaXB0LndyYXBPYmplY3QoY2VsbCwgb2JqZWN0R3JvdXAsIHRydWUpOwogfQogCi1zdGF0
aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGUgcHJv
dG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikKK3N0YXRp
YyBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZSBwcm90
b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKENvbGxlY3Rpb25TY29wZSBzY29wZSkKIHsKLSAgICBz
d2l0Y2ggKG9wZXJhdGlvbikgewotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246CisgICAgc3dpdGNo
IChzY29wZSkgeworICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpGdWxsOgogICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OkZ1
bGw7Ci0gICAgY2FzZSBFZGVuQ29sbGVjdGlvbjoKKyAgICBjYXNlIENvbGxlY3Rpb25TY29wZTo6
RWRlbjoKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VD
b2xsZWN0aW9uOjpUeXBlOjpQYXJ0aWFsOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6
R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OkZ1bGw7CiAgICAgfQorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29s
bGVjdGlvbjo6VHlwZTo6RnVsbDsKIH0KIAogdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OndpbGxH
YXJiYWdlQ29sbGVjdCgpCkBAIC0zNDEsNyArMzQwLDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdl
bnQ6OndpbGxHYXJiYWdlQ29sbAogICAgIG1fZ2NTdGFydFRpbWUgPSBtX2Vudmlyb25tZW50LmV4
ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpOwogfQogCi12b2lkIEluc3BlY3Rvckhl
YXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QoSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lk
IEluc3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QoQ29sbGVjdGlvblNjb3BlIHNj
b3BlKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwogICAgIEFTU0VSVCghc3RkOjppc25hbiht
X2djU3RhcnRUaW1lKSk7CkBAIC0zNTYsNyArMzU1LDcgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdl
bnQ6OmRpZEdhcmJhZ2VDb2xsZQogICAgIC8vIFZNIGFzIHRoZSBpbnNwZWN0ZWQgcGFnZS4KIAog
ICAgIEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSBkYXRhOwotICAgIGRhdGEudHlwZSA9IHByb3RvY29s
VHlwZUZvckhlYXBPcGVyYXRpb24ob3BlcmF0aW9uKTsKKyAgICBkYXRhLnR5cGUgPSBwcm90b2Nv
bFR5cGVGb3JIZWFwT3BlcmF0aW9uKHNjb3BlKTsKICAgICBkYXRhLnN0YXJ0VGltZSA9IG1fZ2NT
dGFydFRpbWU7CiAgICAgZGF0YS5lbmRUaW1lID0gbV9lbnZpcm9ubWVudC5leGVjdXRpb25TdG9w
d2F0Y2goKS0+ZWxhcHNlZFRpbWUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgJKHJl
dmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIEhlYXBPYnNlcnZlcgogICAgIHZvaWQgd2lsbEdhcmJhZ2VDb2xsZWN0
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRHYXJiYWdlQ29sbGVjdChKU0M6OkhlYXBPcGVyYXRp
b24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoSlNDOjpDb2xsZWN0aW9u
U2NvcGUpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhckhlYXBTbmFwc2hv
dHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU1LDkgKzc1
NSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEFTU0VSVCghdGhy
b3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7
CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgaWYgKFVOTElL
RUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQpAQCAtOTAwLDggKzkwMCw4IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEFTU0VSVCghdGhyb3dTY29wZS5leGNl
cHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7Ci0gICAgaWYgKHZt
LmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJy
ZW50VGhyZWFkKCkpOworICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQo
KSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgYm9vbCBpc0pTQ2FsbCA9IChjYWxs
VHlwZSA9PSBDYWxsVHlwZTo6SlMpOwpAQCAtOTYyLDEwICs5NjIsMTAgQEAgSlNPYmplY3QqIElu
dGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigp
KTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKICAgICAvLyBXZSB0aHJvdyBpbiB0aGlz
IGNhc2UgYmVjYXVzZSB3ZSBoYXZlIHRvIHJldHVybiBzb21ldGhpbmcgInZhbGlkIiBidXQgd2Un
cmUKICAgICAvLyBhbHJlYWR5IGluIGFuIGludmFsaWQgc3RhdGUuCi0gICAgaWYgKHZtLmlzQ29s
bGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQo
KSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKICAgICBib29sIGlzSlNDb25zdHJ1Y3QgPSAoY29u
c3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpKUyk7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBD
YWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yCiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpKTsKICAgICAKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYg
KHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4gQ2Fs
bEZyYW1lQ2xvc3VyZSgpOwogCiAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgpAQCAtMTA1Myw5
ICsxMDUzLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbAogICAg
IFZNJiB2bSA9ICpjbG9zdXJlLnZtOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAg
QVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgaWYgKHZt
LmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRU
aHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgU3RhY2tTdGF0czo6Q2hl
Y2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CkBAIC0xMDc2LDkgKzEwNzYsOSBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICBBU1NFUlQoc2NvcGUtPnZtKCkg
PT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigp
KTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JC
dXN5KCkpCisgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwg
c2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKQEAgLTExODIsOSArMTE4Miw5IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3IKIAogICAgIEFTU0VSVChzY29wZS0+dm0oKSA9
PSAmY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkp
OwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIEFTU0VSVCghdm0uaXND
b2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1
c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpCiAgICAg
ICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5
MSw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5p
c0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVz
eU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3VyY2Up
OwogCkBAIC0xNzQsNyArMTc0LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFsdWF0
ZU1vZHVsZQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIFJFTEVBU0VfQVNT
RVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRv
bWljU3RyaW5nVGFibGUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xs
ZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBsb2FkQW5kRXZhbHVhdGVNb2R1
bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBpbml0aWF0b3IpOwogfQpAQCAtMTg1LDcgKzE4
NSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhy
ZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5p
c0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVz
eU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRlU3ltYm9sRm9y
RW50cnlQb2ludE1vZHVsZSh2bSk7CiAKQEAgLTIxMiw3ICsyMTIsNyBAQCBKU0ludGVybmFsUHJv
bWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09
IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4
ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJu
IGxvYWRNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBpbml0aWF0b3IpOwogfQpAQCAt
MjIzLDcgKzIyMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSoK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkg
PT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwotICAgIFJFTEVBU0VfQVNT
RVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29s
bGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3JlYXRl
U3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCBKU1Zh
bHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqCiB7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdU
YWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxF
QVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+bGlua0FuZEV2
YWx1YXRlTW9kdWxlKGV4ZWMsIGlkZW50aWZpZXJUb0pTVmFsdWUoZXhlYy0+dm0oKSwgbW9kdWxl
S2V5KSwgaW5pdGlhdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIEpTTG9jazo6
RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoVk0qIHYKIHsKICAgICBpZiAoIW1fdm0pCiAgICAg
ICAgIHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+YXBpTG9jaygpLmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdMb2NrKCkgfHwgIW1fdm0tPmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBS
RUxFQVNFX0FTU0VSVCghbV92bS0+YXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCkgfHwgIW1fdm0tPmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKICAgICBtX2Ry
b3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExvY2tzKHRoaXMpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAko
cmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxT
dHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTMsOSArMTEz
LDkgQEAgcHVibGljOgogICAgIEpTU3RyaW5nKiBudWxsT2JqZWN0U3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9udWxsT2JqZWN0U3RyaW5nOyB9CiAgICAgSlNTdHJpbmcqIHVuZGVmaW5lZE9iamVj
dFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZWZpbmVkT2JqZWN0U3RyaW5nOyB9CiAKLSAg
ICBib29sIG5lZWRzVG9CZVZpc2l0ZWQoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkgY29u
c3QKKyAgICBib29sIG5lZWRzVG9CZVZpc2l0ZWQoQ29sbGVjdGlvblNjb3BlIHNjb3BlKSBjb25z
dAogICAgIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb25UeXBlID09IEZ1bGxDb2xsZWN0aW9uKQor
ICAgICAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBtX25lZWRzVG9CZVZpc2l0ZWQ7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzYs
NyArNTc2LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
dW1wUmVnRXhwVHJhY2UoKTsKIAotICAgIGJvb2wgaXNDb2xsZWN0b3JCdXN5KCkgeyByZXR1cm4g
aGVhcC5pc0J1c3koKTsgfQorICAgIGJvb2wgaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFk
KCkgeyByZXR1cm4gaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCk7IH0KIAogI2lmIEVOQUJMRShH
Q19WQUxJREFUSU9OKQogICAgIGJvb2wgaXNJbml0aWFsaXppbmdPYmplY3QoKSBjb25zdDsgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAs
NyBAQCB2b2lkIEpTRG9sbGFyVk1Qcm90b3R5cGU6OmVkZW5HQyhFeGVjU3RhCiB7CiAgICAgaWYg
KCFlbnN1cmVDdXJyZW50VGhyZWFkT3duc0pTTG9jayhleGVjKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIGV4ZWMtPmhlYXAoKS0+Y29sbGVjdChFZGVuQ29sbGVjdGlvbik7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KENvbGxlY3Rpb25TY29wZTo6RWRlbik7CiB9CiAKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEwLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVGhlIHRyYWNraW5nIG9mIHRoZSBjb2Fyc2UtZ3JhaW4gSGVh
cCBzdGF0ZSAoYWxsb2NhdGluZyBvciBub3QsIGNvbGxlY3RvciBvciBub3QsIGVkZW4gdnMgZnVs
bCkgc2hvdWxkIHJlc3BlY3QgdGhlIG9ydGhvZ29uYWxpdHkgYmV0d2VlbiBhbGxvY2F0aW5nIGFu
ZCBjb2xsZWN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjM3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFRoZXJlIHdpbGwgc29vbiBiZSBkaWZmZXJlbnQga2luZHMgb2YgR0MgdGhy
ZWFkcywgYW5kIFdURidzICJhcmUgeW91IGEgR0MgdGhyZWFkIiB0aGluZworICAgICAgICBzaG91
bGQga25vdyBhYm91dCB0aGlzLgorCisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAg
ICAgICAoV1RGOjppbml0aWFsaXplR0NUaHJlYWRzKToKKyAgICAgICAgKFdURjo6cmVnaXN0ZXJH
Q1RocmVhZCk6CisgICAgICAgIChXVEY6Om1heUJlR0NUaHJlYWQpOgorICAgICAgICAqIHd0Zi9N
YWluVGhyZWFkLmg6CisKIDIwMTYtMTAtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgcjIwNzE1MQpJbmRleDogU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWFpblRo
cmVhZC5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsMTQgKzE5MCwxNCBAQCBib29sIGNhbkFjY2Vzc1Ro
cmVhZExvY2FsRGF0YUZvclRocmVhZChUCiB9CiAjZW5kaWYKIAotc3RhdGljIFRocmVhZFNwZWNp
ZmljPGJvb2w+KiBpc0dDVGhyZWFkOworc3RhdGljIFRocmVhZFNwZWNpZmljPE9wdGlvbmFsPEdD
VGhyZWFkVHlwZT4+KiBpc0dDVGhyZWFkOwogCiB2b2lkIGluaXRpYWxpemVHQ1RocmVhZHMoKQog
ewotICAgIGlzR0NUaHJlYWQgPSBuZXcgVGhyZWFkU3BlY2lmaWM8Ym9vbD4oKTsKKyAgICBpc0dD
VGhyZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPE9wdGlvbmFsPEdDVGhyZWFkVHlwZT4+KCk7CiB9
CiAKLXZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpCit2b2lkIHJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJl
YWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKCFpc0dDVGhyZWFkKSB7CiAgICAgICAgIC8vIFRoaXMg
aGFwcGVucyBpZiB3ZSdyZSBydW5uaW5nIGluIGEgcHJvY2VzcyB0aGF0IGRvZXNuJ3QgY2FyZSBh
Ym91dApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICAqKmlzR0NUaHJlYWQgPSB0cnVlOworICAgICoqaXNHQ1Ro
cmVhZCA9IHR5cGU7CiB9CiAKIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpCkBAIC0yMTYs
OSArMjE2LDEzIEBAIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpCiAgICAgcmV0dXJuIGlz
TWFpblRocmVhZCgpOwogfQogCi1ib29sIG1heUJlR0NUaHJlYWQoKQorT3B0aW9uYWw8R0NUaHJl
YWRUeXBlPiBtYXlCZUdDVGhyZWFkKCkKIHsKLSAgICByZXR1cm4gaXNHQ1RocmVhZCAmJiBpc0dD
VGhyZWFkLT5pc1NldCgpICYmICoqaXNHQ1RocmVhZDsKKyAgICBpZiAoIWlzR0NUaHJlYWQpCisg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIGlmICghaXNHQ1RocmVhZC0+aXNTZXQoKSkKKyAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuICoqaXNHQ1RocmVhZDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCShyZXZpc2lvbiAyMDc2MTgpCisr
KyBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMz
LDEyIEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNw
YWNlIFdURiB7CiAKK2NsYXNzIFByaW50U3RyZWFtOworCiB0eXBlZGVmIHVpbnQzMl90IFRocmVh
ZElkZW50aWZpZXI7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgpA
QCAtNjcsOCArNzAsMTUgQEAgaW5saW5lIGJvb2wgaXNVSVRocmVhZCgpIHsgcmV0dXJuIGlzTWFp
bgogCiB2b2lkIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgcmVnaXN0ZXJHQ1RocmVhZCgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbWF5QmVHQ1Ro
cmVhZCgpOworZW51bSBjbGFzcyBHQ1RocmVhZFR5cGUgeworICAgIE1haW4sCisgICAgSGVscGVy
Cit9OworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBHQ1RocmVhZFR5cGUpOwor
CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhyZWFkKEdDVGhyZWFkVHlwZSk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8R0NUaHJlYWRUeXBlPiBtYXlCZUdDVGhyZWFk
KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCk7CiAK
IC8vIE5PVEU6IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZXJuYWwgdG8gdGhlIGNhbGxPbk1haW5U
aHJlYWQgaW1wbGVtZW50YXRpb24uCkBAIC04OCw2ICs5OCw3IEBAIHZvaWQgaW5pdGlhbGl6ZU1h
aW5UaHJlYWRUb1Byb2Nlc3NNYWluVGgKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdU
Rjo6R0NUaHJlYWRUeXBlOwogdXNpbmcgV1RGOjpjYWxsT25NYWluVGhyZWFkOwogdXNpbmcgV1RG
OjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQ7CiB1c2luZyBXVEY6OmlzTWFpblRo
cmVhZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292266</attachid>
            <date>2016-10-20 15:08:41 -0700</date>
            <delta_ts>2016-10-20 15:42:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>106787</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NSBA
QAorMjAxNi0xMC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSB0cmFja2luZyBvZiB0aGUgY29hcnNlLWdyYWluIEhlYXAgc3RhdGUgKGFsbG9jYXRpbmcg
b3Igbm90LCBjb2xsZWN0b3Igb3Igbm90LCBlZGVuIHZzIGZ1bGwpIHNob3VsZCByZXNwZWN0IHRo
ZSBvcnRob2dvbmFsaXR5IGJldHdlZW4gYWxsb2NhdGluZyBhbmQgY29sbGVjdGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXZSBuZWVk
IHRvIGtub3cgaWYgd2UncmUgY3VycmVudGx5IGluIGFuIGFsbG9jYXRpb24gc2xvdyBwYXRoLCBz
byB0aGF0IGNvZGUgY2FuIGFzc2VydCB0aGF0CisgICAgICAgIGl0J3Mgbm90IGJlaW5nIHVzZWQg
ZnJvbSBpbnNpZGUgYSBkZXN0cnVjdG9yIHRoYXQgcnVucyBkdXJpbmcgYSBzd2VlcC4gV2UgbmVl
ZCB0byBrbm93IGlmCisgICAgICAgIHdlJ3JlIGN1cnJlbnRseSBjb2xsZWN0aW5nLCBiZWNhdXNl
IHNvbWUgY29kZSBiZWhhdmVzIGRpZmZlcmVudGx5IGR1cmluZyBjb2xsZWN0aW9uLCBhbmQKKyAg
ICAgICAgb3RoZXIgY29kZSB3YW50cyB0byBhc3NlcnQgdGhhdCBpdCdzIG5vdCBiZWluZyB1c2Vk
IGZyb20gaW5zaWRlIGEgdmlzaXRDaGlsZHJlbiBtZXRob2QgdGhhdAorICAgICAgICBydW5zIGR1
cmluZyBtYXJraW5nLiBJZiB3ZSBhcmUgY29sbGVjdGluZywgd2UgbmVlZCB0byBrbm93IGlmIGl0
J3MgYW4gZWRlbiBjb2xsZWN0aW9uIG9yIGEKKyAgICAgICAgZnVsbCBjb2xsZWN0aW9uLiBJZiB3
ZSBhcmUgcmVxdWVzdGluZyBhIGNvbGxlY3Rpb24sIHdlIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBy
ZXF1ZXN0aW5nIGFuCisgICAgICAgIGVkZW4gY29sbGVjdGlvbiwgYSBmdWxsIGNvbGxlY3Rpb24s
IG9yIGFueSBraW5kIG9mIGNvbGxlY3Rpb24uCisgICAgICAgIAorICAgICAgICBQcmlvciB0byB0
aGlzIGNoYW5nZSwgeW91IHdvdWxkIHJlYXNvbiBhYm91dCBhbGwgb2YgdGhlc2UgdGhpbmdzIHVz
aW5nIHRoZSBIZWFwT3BlcmF0aW9uLiBJdAorICAgICAgICBoYWQgdGhlIGZvbGxvd2luZyBzdGF0
ZXM6IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rp
b24sIGFuZAorICAgICAgICBBbnlDb2xsZWN0aW9uLiBOb09wZXJhdGlvbiB2ZXJzdXMgQWxsb2Nh
dGlvbiB3YXMgcHJpbWFyaWx5IGZvciBhc3NlcnRpbmcgdGhhdCBzd2VlcCBkaWRuJ3QKKyAgICAg
ICAgY2FsbCBhcmJpdHJhcnkgSlMuIEZ1bGxDb2xsZWN0aW9uIHZlcnN1cyBFZGVuQ29sbGVjdGlv
biB3YXMgYWJvdXQgZGVzY3JpYmluZyBnZW5lcmF0aW9ucy4gV2UKKyAgICAgICAgd291bGQgZXZl
biB1c2UgSGVhcE9wZXJhdGlvbiBpbiBwbGFjZXMgd2hlcmUgd2Uga25ldyB0aGF0IGl0IGNvdWxk
IG9ubHkgYmUgZWl0aGVyIEZ1bGwgb3IKKyAgICAgICAgRWRlbiwgYmVjYXVzZSB3ZSBqdXN0IG5l
ZWRlZCBhIHZhcmlhYmxlIHRvIHRlbGwgdXMgd2hpY2ggZ2VuZXJhdGlvbiB3ZSB3ZXJlIHRhbGtp
bmcgYWJvdXQuCisgICAgICAgIEl0IHdhcyBhbGwgdmVyeSBjb25mdXNpbmcuCisgICAgICAgIAor
ICAgICAgICBXaGVyZSBpdCBjb21wbGV0ZWx5IGJyZWFrcyBkb3duIGlzIHRoZSBmYWN0IHRoYXQg
YSBjb25jdXJyZW50IEdDIGhhcyB0d28gbG9naWNhbCB0aHJlYWRzLCB0aGUKKyAgICAgICAgbXV0
YXRvciBhbmQgdGhlIGNvbGxlY3Rvciwgd2hpY2ggY2FuIGNoYW5nZSBzdGF0ZSBpbmRlcGVuZGVu
dGx5LiBUaGUgbXV0YXRvciBjYW4gYmUKKyAgICAgICAgYWxsb2NhdGluZy4gSXQgY2FuIGFsc28g
YmUgZG9pbmcgc29tZSB3b3JrIHRvIGhlbHAgdGhlIEdDLiBUaGF0J3MgdGhyZWUgc3RhdGVzOiBy
dW5uaW5nLAorICAgICAgICBhbGxvY2F0aW5nLCBvciBoZWxwaW5nIEdDLiBBdCB0aGUgc2FtZSB0
aW1lLCB0aGUgR0MgdGhyZWFkIGNvdWxkIGVpdGhlciBiZSBydW5uaW5nIG9yIG5vdCwKKyAgICAg
ICAgYW5kIGlmIGl0J3MgcnVubmluZywgaXQgY291bGQgYmUgYSBmdWxsIGNvbGxlY3Rpb24gb3Ig
YW4gZWRlbiBjb2xsZWN0aW9uLiBCZWNhdXNlIHRoZSBtdXRhdG9yCisgICAgICAgIGFuZCBjb2xs
ZWN0b3IgY2FuIHJ1biBhdCB0aGUgc2FtZSB0aW1lLCBpdCBtZWFucyB0aGF0IGlmIHdlIHVzZWQg
b25lIGVudW0sIHdlIHdvdWxkIG5lZWQgbmluZQorICAgICAgICBzdGF0ZXM6IGV2ZXJ5IGNvbWJp
bmF0aW9uIG9mIG11dGF0b3IgcnVubmluZywgYWxsb2NhdGluZywgb3IgaGVscGluZyBHQywgY3Jv
c3NlZCB3aXRoCisgICAgICAgIGNvbGxlY3RvciBub3QgcnVubmluZywgcnVubmluZyBlZGVuLCBv
ciBydW5uaW5nIGZ1bGwuIFNvLCB0aGlzIGNoYW5nZSBkZWNvdXBsZXMgbXV0YXRvciBzdGF0ZQor
ICAgICAgICBmcm9tIGNvbGxlY3RvciBzdGF0ZSBhbmQgdXNlcyB0d28gc2VwYXJhdGUgZmllbGRz
IHdpdGggdHdvIGRpZmZlcmVudCB0eXBlcy4KKyAgICAgICAgCisgICAgICAgIE11dGF0b3Igc3Rh
dGUgaXMgZGVzY3JpYmVkIHVzaW5nIE11dGF0b3JTdGF0ZSwgd2hpY2ggY2FuIGJlIGVpdGhlciBN
dXRhdG9yU3RhdGU6OlJ1bm5pbmcsCisgICAgICAgIE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZywg
b3IgTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MuCisgICAgICAgIAorICAgICAgICBDb2xsZWN0b3Ig
c3RhdGUgaXMgZGVzY3JpYmVkIHVzaW5nIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4uIENvbGxl
Y3Rpb25TY29wZSBkZXNjcmliZXMgaG93CisgICAgICAgIGJpZyB0aGUgc2NvcGUgb2YgdGhlIGNv
bGxlY3Rpb24gaXMsIGFuZCBpdCBjYW4gYmUgZWl0aGVyIENvbGxlY3Rpb25TY29wZTo6RWRlbiBv
cgorICAgICAgICBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwuIElmIHRoZSBPcHRpb25hbCBpcyBOdWxs
b3B0LCBpdCBtZWFucyB0aGF0IHdlIGFyZSBub3QgY29sbGVjdGluZy4gVGhpcworICAgICAgICB3
YXksIHlvdSBjYW4gdHJlYXQgY29sbGVjdGlvblNjb3BlIGFzIGEgYm9vbGVhbiAoYW4gT3B0aW9u
YWwgaXMgdHJ1ZSBpZmYgaXQncyBlbmdhZ2VkKS4gWW91CisgICAgICAgIGNhbiBwYXNzIGFyb3Vu
ZCBqdXN0IGEgQ29sbGVjdGlvblNjb3BlIGlmIHlvdSBrbm93IHRoYXQgeW91IG11c3QgYmUgY29s
bGVjdGluZyBhbmQgeW91IGp1c3QKKyAgICAgICAgd2FudCB0byBrbm93IGFib3V0IHRoZSBnZW5l
cmF0aW9uLiBBbHNvLCB3ZSBjYW4gdXNlIE51bGxvcHQgaW4gbWV0aG9kcyB0aGF0IHJlcXVlc3QK
KyAgICAgICAgY29sbGVjdGlvbiwgd2hpY2ggdGhvc2UgbWV0aG9kcyB0YWtlIHRvIG1lYW4gdGhh
dCB0aGV5IGNhbiBydW4gYW55IGtpbmQgb2YgY29sbGVjdGlvbiAodGhlCisgICAgICAgIG9sZCBB
bnlDb2xsZWN0aW9uKS4KKyAgICAgICAgCisgICAgICAgIEFub3RoZXIgdXNlIG9mIEhlYXBPcGVy
YXRpb24gd2FzIHRvIGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgd2hldGhlciB0aGUgY2FsbGVyIGlz
IHJ1bm5pbmcgYXMKKyAgICAgICAgcGFydCBvZiB0aGUgR0Mgb3IgYXMgcGFydCBvZiB0aGUgbXV0
YXRvci4gT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBkb2VzIG5vdCBhbnN3ZXIgdGhpcywKKyAg
ICAgICAgc2luY2UgY29kZSB0aGF0IHJ1bnMgaW4gdGhlIG11dGF0b3Igd2hpbGUgdGhlIG11dGF0
b3IgaXMgbm90IEhlbHBpbmdHQyBhdCB0aGUgc2FtZSB0aW1lIGFzCisgICAgICAgIHRoZSBjb2xs
ZWN0b3IgaXMgcnVubmluZyBzaG91bGQgcnVuIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBtdXRh
dG9yIG5vdCBhcyBpZiBpdCB3YXMgcGFydCBvZgorICAgICAgICB0aGUgR0MuIE11dGF0b3JTdGF0
ZSBpcyBuZWVkZWQgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24sIGJ1dCBpdCBkb2Vzbid0IHRlbGwg
dGhlIHdob2xlIHN0b3J5CisgICAgICAgIHNpbmNlIGNvZGUgdGhhdCBydW5zIGluIHRoZSBjb2xs
ZWN0b3IgdGhyZWFkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIG11dGF0b3IgaXMgcnVubmluZwor
ICAgICAgICBzaG91bGQgcnVuIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBHQyBub3QgYXMgaWYg
aXQgd2FzIHBhcnQgb2YgdGhlIG11dGF0b3IuIFNvLCB3ZSBuZWVkIHRvCisgICAgICAgIGtub3cg
aWYgd2UncmUgb24gdGhlIGNvbGxlY3RvciB0aHJlYWQgb3IgdGhlIG11dGF0b3IgdGhyZWFkLiBX
ZSBhbHJlYWR5IGhhdmUgYSBXVEYgZmFjaWxpdHkKKyAgICAgICAgZm9yIHRoaXMsIHdoaWNoIGFu
c3dlcnMgaWYgYSB0aHJlYWQgaXMgYSBHQyB0aHJlYWQuIEJ1dCB3ZSBhbHJlYWR5IHVzZSB0aGlz
IHRvIGFuc3dlciBhCisgICAgICAgIHN0cm9uZ2VyIHF1ZXN0aW9uOiBhcmUgd2UgcGFydCBvZiB0
aGUgcGFyYWxsZWwgR0MgaGVscGVycz8gU29tZSBmdW5jdGlvbnMgaW4gdGhlIEdDLCBsaWtlCisg
ICAgICAgIG1hcmsgYml0IHF1ZXJpZXMsIHdpbGwgd29yayBmaW5lIGluIGEgY29uY3VycmVudCBj
b2xsZWN0b3IgdGhyZWFkIHNvIGxvbmcgYXMgdGhlcmUgaXMgbm8KKyAgICAgICAgcGFyYWxsZWwg
bWFya2luZy4gU28sIHRoaXMgY2hhbmdlIGFsc28gY2hhbmdlcyBXVEYncyBtYXlCZUdDVGhyZWFk
IHRvIHRlbGwgd2hhdCBraW5kIG9mIEdDCisgICAgICAgIHRocmVhZCB3ZSBtYXkgYmU6IGVpdGhl
ciBHQ1RocmVhZFR5cGU6Ok1haW4gb3IgR0NUaHJlYWRUeXBlOjpIZWxwZXIuIFRoZSBwYXJhbGxl
bCBHQyBzYWZldHkKKyAgICAgICAgY2hlY2tzIGxvb2sgZm9yIEdDVGhyZWFkVHlwZTo6SGVscGVy
LiBUaGUgInNob3VsZCBJIHJ1biBhcyBtdXRhdG9yIiBxdWVyeSBjYW4gbm93IGJlIGFuc3dlcmVk
CisgICAgICAgIGJ5IGNoZWNraW5nIHdpdGggbWF5QmVHQ1RocmVhZCwgd2hpY2ggcmV0dXJucyBP
cHRpb25hbDxHQ1RocmVhZFR5cGU+OyBpZiBlbmdhZ2VkLCB0aGVuIHJ1biBhcworICAgICAgICBH
QywgZWxzZSBydW4gYXMgR0MgaWYgTXV0YXRvclN0YXRlIGlzIEhlbHBpbmdHQywgZWxzZSBydW4g
YXMgbXV0YXRvci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIHdh
eSB0aGF0IHRoZSBHQyBiZWhhdmVzLCBidXQgaXQgZG9lcyBjaGFuZ2UgaG93IHRoZSBHQyByZXBy
ZXNlbnRzIGEKKyAgICAgICAgZnVuZGFtZW50YWwgcGllY2Ugb2Ygc3RhdGUuIFNvLCBpdCdzIGEg
YmlnIGNoYW5nZS4gSXQgc2hvdWxkIGJlIHBlcmYtbmV1dHJhbCAoc3RpbGwgdGVzdGluZykuCisK
KyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTU3luY2hyb25vdXNFZGVuQ29s
bGVjdEZvckRlYnVnZ2luZyk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAgICAqIGZ0bC9GVExDb21waWxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL0FsbG9j
YXRpbmdTY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWxsb2NhdGluZ1Njb3BlOjpBbGxv
Y2F0aW5nU2NvcGUpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW5nU2NvcGU6On5BbGxvY2F0aW5n
U2NvcGUpOgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNjb3BlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogaGVhcC9Db2RlQmxvY2tTZXQuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6
OmRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKToKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9j
a1NldC5oOgorICAgICAgICAqIGhlYXAvQ29sbGVjdGlvblNjb3BlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUpOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBoZWFwL0NvbGxlY3Rpb25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBoZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpFZGVuR0NB
Y3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24pOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmRvQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9HQ1R5cGVNYXAuaDoKKyAgICAgICAgKEpT
Qzo6R0NUeXBlTWFwOjpvcGVyYXRvcltdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRv
RmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAoSlND
OjpIZWFwOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFNtYWxsU3Ry
aW5ncyk6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyk6CisgICAgICAg
IChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpk
ZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RB
bGxHYXJiYWdlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6
OkhlYXA6OmNvbGxlY3RXaXRob3V0QW55U3dlZXApOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0SW1wbCk6CisgICAgICAgIChKU0M6OkhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24pOgorICAg
ICAgICAoSlNDOjpIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcik6CisgICAgICAgIChKU0M6
OkhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRh
dGVBbGxvY2F0aW9uTGltaXRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkRmluaXNoQ29sbGVj
dGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OmlzVmFsaWRBbGxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgIChKU0M6OkhlYXA6Om11dGF0b3JTdGF0ZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OmNvbGxlY3Rpb25TY29wZSk6CisgICAgICAgIChKU0M6OkhlYXA6Om9wZXJhdGlvbkluUHJv
Z3Jlc3MpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SGVhcDo6c2hvdWxkQ29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmlzQ3VycmVu
dFRocmVhZEJ1c3kpOgorICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6
OnJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxl
Y3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OkhlYXA6Omlz
QnVzeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OmlzQ29sbGVjdGluZyk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9IZWFwT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBP
cGVyYXRpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvSGVhcE9wZXJhdGlvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcFZlcmlmaWVyOjppbml0aWFsaXplR0NDeWNsZSk6CisgICAgICAgIChKU0M6OkhlYXBWZXJp
Zmllcjo6cmVwb3J0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcFZlcmlmaWVyOjpjb2xsZWN0
aW9uVHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmg6Cisg
ICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6R0NDeWNsZTo6Y29sbGVjdGlvblR5cGVOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlbHBpbmdHQ1Njb3BlLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpIZWxwaW5nR0NTY29wZTo6SGVscGluZ0dDU2NvcGUpOgorICAgICAgICAoSlNDOjpI
ZWxwaW5nR0NTY29wZTo6fkhlbHBpbmdHQ1Njb3BlKToKKyAgICAgICAgKiBoZWFwL0xhcmdlQWxs
b2NhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6ZmxpcCk6CisgICAg
ICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJbXBsKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjp2aXNpdFdlYWtTZXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnJlYXBXZWFr
U2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yTWFya2luZyk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KToKKyAgICAgICAgKiBoZWFwL011dGF0b3JTdGF0
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBo
ZWFwL011dGF0b3JTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2luZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVjdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChm
dW5jdGlvbkZ1bGxHQyk6CisgICAgICAgIChmdW5jdGlvbkVkZW5HQyk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAgICAgICAo
SlNDOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToK
KyAgICAgICAgKEpTQzo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxs
TG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6
OlNtYWxsU3RyaW5nczo6bmVlZHNUb0JlVmlzaXRlZCk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAoSlNDOjpWTTo6aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKToKKyAg
ICAgICAgKEpTQzo6Vk06OmlzQ29sbGVjdG9yQnVzeSk6IERlbGV0ZWQuCisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk1Qcm90
b3R5cGU6OmVkZW5HQyk6CisKIDIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBkaXNhbGxvdyByZWZlcmVuY2VzIHRvIGBhd2FpdGAg
aW4gQXN5bmNGdW5jdGlvbiBmb3JtYWwgcGFyYW1ldGVycwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNiArNDUxLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIGhlYXAvQWxsb2NhdG9yQXR0cmlidXRlcy5j
cHAKICAgICBoZWFwL0NvZGVCbG9ja1NldC5jcHAKKyAgICBoZWFwL0NvbGxlY3Rpb25TY29wZS5j
cHAKICAgICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAogICAgIGhlYXAvRGVmZXJHQy5jcHAK
ICAgICBoZWFwL0Rlc3RydWN0aW9uTW9kZS5jcHAKQEAgLTQ2NCw3ICs0NjUsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvSGVhcC5jcHAKICAgICBoZWFwL0hlYXBDZWxs
LmNwcAogICAgIGhlYXAvSGVhcEhlbHBlclBvb2wuY3BwCi0gICAgaGVhcC9IZWFwT3BlcmF0aW9u
LmNwcAogICAgIGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNw
cAogICAgIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQ4MCw2ICs0ODAsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAog
ICAgIGhlYXAvTWFya2VkQmxvY2suY3BwCiAgICAgaGVhcC9NYXJrZWRTcGFjZS5jcHAKKyAgICBo
ZWFwL011dGF0b3JTdGF0ZS5jcHAKICAgICBoZWFwL1Nsb3RWaXNpdG9yLmNwcAogICAgIGhlYXAv
V2Vhay5jcHAKICAgICBoZWFwL1dlYWtCbG9jay5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY3NywxNCArMTY3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RnVsbEdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
LSAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhl
YXAoKS0+Y29sbGVjdChDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rp
b24oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBl
eGVjLT5oZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhlYXAoKS0+
Y29sbGVjdChDb2xsZWN0aW9uU2NvcGU6OkVkZW4pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAy
MDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEpTU3lu
Y2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBleGVjLT52bSgp
LmhlYXAuY29sbGVjdChFZGVuQ29sbGVjdGlvbik7CisgICAgZXhlYy0+dm0oKS5oZWFwLmNvbGxl
Y3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogdm9pZCBKU0Rpc2FibGVHQ1RpbWVyKHZv
aWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3NjE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw3ICs1MTAsNiBAQAogCQkwRjgzMzVCNzE2
MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMx
RUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hE
aXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsgfTsK
LQkJMEY4NkEyNkQxRDZGNzk2NTAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkMxRDZGNzk2MjAw
Q0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwICovOyB9OwogCQkwRjg2QTI2RjFENkY3QjMzMDBD
QjBDOTIgLyogR0NUeXBlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjg2QTI2RTFENkY3QjMxMDBDQjBDOTIgLyogR0NUeXBlTWFwLmggKi87IH07
CiAJCTBGODZBRTIwMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QUUxRjFD
NTMxMUM1MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICovOyB9OwogCQkwRjg4
NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAv
KiBCeXRlY29kZVVzZURlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01OTIsNiArNTkxLDEyIEBACiAJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJE
OSAvKiBERkdOb2RlRmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAg
Ki87IH07CiAJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI4MTUwRTk1
MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLzsgfTsKIAkJMEZBNTgxQkMxNTBFOTUzMDAw
QjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAq
LzsgfTsKKwkJMEZBNzYyMDQxREI5MjQyNjAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMDFE
QjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLzsgfTsKKwkJMEZBNzYyMDUx
REI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENv
bGxlY3Rpb25TY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDIxREI5
MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgKi87IH07CisJCTBGQTc2MjA3MURCOTI0
MzMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3Rh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkE3NjIwOTFEQjkyODNFMDBCN0EyRkQgLyogSGVscGluZ0dDU2NvcGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjA4MURCOTI4M0MwMEI3QTJG
RCAvKiBIZWxwaW5nR0NTY29wZS5oICovOyB9OworCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0EyRkQg
LyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmgg
Ki87IH07CiAJCTBGQTdBOEVCMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RTkxOEI0MTNDODAwNTIz
NzFEIC8qIFJlZy5jcHAgKi87IH07CiAJCTBGQTdBOEVDMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTdBOEVB
MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkE3QThFRTE4Q0U0RkQ4MDA1MjM3MUQgLyogU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuY3BwICovOyB9OwpAQCAtNjIzLDcgKzYyOCw2IEBACiAJCTBGQjRGQjczMUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlT
bG93UGF0aC5jcHAgKi87IH07CiAJCTBGQjRGQjc0MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5
U2xvd1BhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjRGQjcxMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCAqLzsgfTsKIAkJ
MEZCNEZCNzUxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcyMUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi87IH07Ci0JCTBGQjUzMDM5MUQ5MDQw
NEMwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAvKiBBbGxvY2F0
aW9uU2NvcGUuaCAqLzsgfTsKIAkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RkI1NDY3OTE0RjVDNDZCMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzgxNEY1
QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKIAkJMEZC
NTQ2N0IxNEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0NjdBMTRG
NUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTYsNyArMTE2MCw2
IEBACiAJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRCQjdG
MjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oICovOyB9OwogCQky
QTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVDOTA5MTg2MEQ2QzIw
MDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwICovOyB9OwogCQkyQTRFQzkwQzE4NjBE
NkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNkY0NjI1MTdF
OTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkE3QTU4RUYxODA4QTRDNDAwMjBCREY3IC8qIERl
ZmVyR0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovOyB9OwogCQkyQTgzNjM4
NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4MzE4RDdEMEVFMDAw
MEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CiAJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0Mg
LyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yODM0LDcgKzI4MzcsNiBAQAogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgz
NjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RG
R0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjg2QTI2
QzFENkY3OTYyMDBDQjBDOTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY4NkEyNkUxRDZGN0IzMTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY4NkFFMUYxQzUzMTFDNTAwNkJFOEVDIC8qIEIzQ29tcHV0ZURpdmlz
aW9uTWFnaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb21wdXRlRGl2
aXNpb25NYWdpYy5oOyBwYXRoID0gYjMvQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNv
ZGVVc2VEZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVVc2VE
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MTUsNiArMjkxNywxMiBAQAog
CQkwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVGbGFncy5jcHA7IHBhdGggPSBkZmcv
REZHTm9kZUZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjgx
NTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdOb2RlRmxhZ3MuaDsgcGF0aCA9IGRmZy9ERkdOb2RlRmxhZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjkxNTBFOTUyQTAwQjlBMkQ5IC8qIERG
R05vZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVUeXBl
Lmg7IHBhdGggPSBkZmcvREZHTm9kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xsZWN0aW9uU2NvcGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29s
bGVjdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rp
b25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMjFEQjkyNDIz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE11dGF0b3JTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRvclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQTc2MjA4MURCOTI4M0MwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWxwaW5nR0NTY29wZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2Nh
dGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpbmdT
Y29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE3QThFOTE4QjQxM0M4MDA1
MjM3MUQgLyogUmVnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVBMThCNDEzQzgwMDUy
MzcxRCAvKiBSZWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5NTYsNyArMjk2NCw2IEBACiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1
QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRlRMTGF6eVNsb3dQYXRoLmNwcDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEg
LyogRlRMTGF6eVNsb3dQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TExhenlTbG93UGF0aC5oOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xv
d1BhdGhDYWxsLmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlv
blNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3NjE0RjU5QUQxMDAyQzI5
ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2N0Ex
NEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ1MCw3ICszNDU3LDYgQEAKIAkJMkE0
QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdyaXRlQmFycmllckJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJB
NEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8q
IERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJH
Qy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2MzgzMThEN0QwRUUwMDAw
RUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDQ3LDcgKzU0
NTMsNyBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEZCNTMwMzgxRDkwNDA0NjAwRjI4
QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovLAorCQkJCTBGQTc2MjBBMURCOTU5RjYwMEI3QTJG
RCAvKiBBbGxvY2F0aW5nU2NvcGUuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkg
LyogQWxsb2NhdG9yQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYw
OUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuaCAqLywKIAkJCQkwRjA3MEE0MjFENTQzQTg5MDA2
RTcyMzIgLyogQ2VsbENvbnRhaW5lci5oICovLApAQCAtNTQ1Niw2ICs1NDYyLDggQEAKIAkJCQkw
RkQ4QTMxMTE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4
QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggKi8sCiAJCQkJMEY2NjRDRTcx
REEzMDRFRDAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLywKKwkJCQkwRkE3NjIw
MDFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLywKKwkJCQkwRkE3NjIw
MTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggKi8sCiAJCQkJMTQ2QjE0REIx
MkVCNUIxMjAwMUJFQzFCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFG
MjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2VydmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThF
RTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8sCkBAIC01NTAwLDggKzU1MDgsNiBA
QAogCQkJCUMyREE3NzgyMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oICovLAogCQkJ
CTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLywKIAkJ
CQlBNTMzOUVDODFCQjRCNDUxMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggKi8sCi0JCQkJMEY4
NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwICovLAotCQkJCTJBNkY0
NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi8sCiAJCQkJQTUzOThGQTkx
Qzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8sCiAJCQkJQTUzOThGQUExQzc1
MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5oICovLAogCQkJCTE0Rjk3NDQ2MTM4Qzg1M0Uw
MERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLywKQEAgLTU1MTYsNiArNTUyMiw3IEBACiAJ
CQkJMEZBREU2NzIxRDREMjNCQzAwNzY4NDU3IC8qIEhlYXBVdGlsLmggKi8sCiAJCQkJRkU3QkE2
MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi8sCiAJCQkJRkU3QkE2MEUx
QTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oICovLAorCQkJCTBGQTc2MjA4MURCOTI4
M0MwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oICovLAogCQkJCUMyNUY4QkNCMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJCUMyNUY4QkNDMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJCQkwRjc2NkQyOTE1QThD
QzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLApAQCAtNTU0MSw2ICs1NTQ4
LDggQEAKIAkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVz
LmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8s
CiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAorCQkJCTBG
QTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwICovLAorCQkJCTBGQTc2
MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLywKIAkJCQlBRERCMUY2MjE4
RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RC
QUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAw
NUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCkBAIC03NTAwLDYgKzc1MDksNyBAQAogCQkJCTBG
RUM4NTAzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tVdGlscy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1MDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxvY2tXb3JrbGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tTcGVj
aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNzFEQjkyNDMzMDBCN0EyRkQgLyogTXV0
YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwODFCREFDREFDMDA4MEZGNzQg
LyogQjNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwQTFCREFDREFDMDA4
MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURDNDU0QjhEMUQwMEU4MjQw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjAwLDcgKzc2MTAs
NiBAQAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVGM0M2IC8qIENh
bGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhB
RTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Mjc2NzMyNDFCNjgw
QzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRC
Q0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5MDUsNiArNzkxNCw4IEBACiAJCQkJMkFEMkVERkIxOTc5OUUz
ODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDQ2
MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkw
RDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZBNzYyMDkxREI5MjgzRTAwQjdBMkZEIC8qIEhlbHBpbmdHQ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTk4RDBFMTgzRTM4MDAwRjkyOTcg
LyogRXJyb3JJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEYwRTE4MzlEQjAw
MEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTQsNyArODA2
NSw2IEBACiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMzlFQzkxQkI0QjQ2MDAwNTRGMDA1IC8qIEhlYXBP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkE2RjQ2MjYxN0U5NTlD
RTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Rjk3NDQ3
MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRl
cnMgKi8sCkBAIC04MTE3LDYgKzgxMjcsNyBAQAogCQkJCUExODE5M0UzMUI0RTBDREIwMEZDMTAy
OSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
QjlFMjNFMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExODE5M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNTFEQjkyNDI5MDBCN0EyRkQg
LyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q2RTFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTE4
N0EwRjFDMDMwRDZDMDAzOEJCQ0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgxLDcgKzk0OTIsNiBAQAogCQkJCUE3OEE5NzdB
MTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUw
Rjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGODZBMjZEMUQ2Rjc5
NjUwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0Uw
MUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyog
REZHUHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTYyOCw2ICs5NjM4LDcgQEAKIAkJ
CQlBNThFMzU5MTE4NjBERUNGMDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1MTNFNUNBMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4NDBFMjAxODdCN0I4NjAwODQzQjEw
IC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA0
MURCOTI0MjYwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ4QTdCRUYxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjI0RTU1NTE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1l
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1Q0VFRTE0MTg3RjNCQUQwMEU1NUM5OSAvKiBJ
bnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3ODIsNiArOTc5Myw3IEBACiAJ
CQkJREMxN0U4MTcxQzlDOTFENjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9y
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNFN0IyIC8q
IENMb29wU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3
QTQ4IC8qIEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUMwRUMyMUFBMEQ3REEw
MEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIw
NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDc0LDcgKzM0NzQsNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlz
b24oUHJvZmlsZXI6OkpldHRpCiAgICAgICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgxKSwgYW5k
IGRvZXMgaXRzIG93biBib29rLWtlZXBpbmcgYWJvdXQgd2hldGhlciBpdCBoYXMgYWxyZWFkeSBo
YXBwZW5lZC4KICAgICAgICAgaWYgKCFqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbnZhbGlkYXRl
KCkpIHsKICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZC4KLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSB8fCAobV92bS0+
aGVhcC5pc0NvbGxlY3RpbmcoKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJTY3JpcHRFeGVjdXRh
YmxlKCkpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9IHJlcGxhY2VtZW50
KCkgfHwgKG1fdm0tPmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFwOjppc01hcmtl
ZChvd25lclNjcmlwdEV4ZWN1dGFibGUoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTM1MDYsNyArMzUwNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNv
bihQcm9maWxlcjo6SmV0dGkKIAogICAgIC8vIEpldHRpc29uIGNhbiBoYXBwZW4gZHVyaW5nIEdD
LiBXZSBkb24ndCB3YW50IHRvIGluc3RhbGwgY29kZSB0byBhIGRlYWQgZXhlY3V0YWJsZQogICAg
IC8vIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgYSBkZWFkIG9iamVjdCB0byB0aGUgcmVtZW1iZXJl
ZCBzZXQuCi0gICAgaWYgKG1fdm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkgJiYgIUhlYXA6OmlzTWFy
a2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkKKyAgICBpZiAobV92bS0+aGVhcC5pc0N1cnJl
bnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgp
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMgKDIpLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIw
NzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsOSArMTAzLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpCiAgICAgICAgICAgICBkYXRhTG9nKG1f
d29ya2xpc3QsICI6IENvbXBpbGluZyAiLCBtX3BsYW4tPmtleSgpLCAiIGFzeW5jaHJvbm91c2x5
XG4iKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW4tPnZtLT5oZWFw
LmlzQ29sbGVjdGluZygpKTsKKyAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgZm9yIHRoZSBHQyB0
byBiZSBzYWZlcG9pbnRpbmcgc2luY2Ugd2Ugb3duIHJpZ2h0VG9SdW4uCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhlYXAubXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRl
OjpIZWxwaW5nR0MpOwogICAgICAgICBtX3BsYW4tPmNvbXBpbGVJblRocmVhZCgqbV9sb25nTGl2
ZWRTdGF0ZSwgJm1fZGF0YSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+c3RhZ2Ug
PT0gUGxhbjo6Q2FuY2VsbGVkIHx8ICFtX3BsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT5zdGFnZSA9PSBQbGFuOjpDYW5jZWxsZWQg
fHwgbV9wbGFuLT52bS0+aGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OkhlbHBp
bmdHQyk7CiAgICAgICAgIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV93b3JrbGlzdC5tX2xvY2spOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV93b3JrbGlzdC5tX3BsYW5Db21waWxlZC5ub3RpZnlB
bGwoKTsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wbGFuLT52bS0+aGVh
cC5pc0NvbGxlY3RpbmcoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhl
YXAubXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
CiAKICAgICBpZiAoc2FmZXBvaW50UmVzdWx0LmRpZEdldENhbmNlbGxlZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXN0YXRlLmdyYXBoLm1fdm0uaGVhcC5pc0NvbGxl
Y3RpbmcoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGUuZ3JhcGgubV92bS5oZWFwLm11dGF0
b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKTsKICAgICAKICAgICBpZiAoc3Rh
dGUuYWxsb2NhdGlvbkZhaWxlZCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SGVhcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWxsb2NhdGluZ1Njb3BlIHsKK3B1
YmxpYzoKKyAgICBBbGxvY2F0aW5nU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAgOiBtX2hlYXAo
aGVhcCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5tX211dGF0b3JTdGF0
ZSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcpOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3Rh
dGUgPSBNdXRhdG9yU3RhdGU6OkFsbG9jYXRpbmc7CisgICAgfQorICAgIAorICAgIH5BbGxvY2F0
aW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLm1fbXV0YXRv
clN0YXRlID09IE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZyk7CisgICAgICAgIG1faGVhcC5tX211
dGF0b3JTdGF0ZSA9IE11dGF0b3JTdGF0ZTo6UnVubmluZzsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSGVhcCYgbV9oZWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCShyZXZpc2lvbiAyMDc2
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIZWFwLmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBBbGxvY2F0aW9uU2NvcGUgewotcHVibGljOgotICAgIEFs
bG9jYXRpb25TY29wZShIZWFwJiBoZWFwKQotICAgICAgICA6IG1faGVhcChoZWFwKQotICAgICAg
ICAsIG1fbGFzdE9wZXJhdGlvbihtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbGFzdE9wZXJhdGlvbiA9PSBOb09wZXJhdGlvbiB8fCBtX2xhc3RP
cGVyYXRpb24gPT0gQWxsb2NhdGlvbik7Ci0gICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPSBBbGxvY2F0aW9uOwotICAgIH0KLSAgICAKLSAgICB+QWxsb2NhdGlvblNjb3BlKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID09IEFs
bG9jYXRpb24pOwotICAgICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID0gbV9sYXN0
T3BlcmF0aW9uOwotICAgIH0KLXByaXZhdGU6Ci0gICAgSGVhcCYgbV9oZWFwOwotICAgIEhlYXBP
cGVyYXRpb24gbV9sYXN0T3BlcmF0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAkocmV2aXNp
b24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENvZGVCbG9ja1NldDo6
bGFzdENoYW5jZVRvRmluYWxpemUoCiAgICAgICAgIGNvZGVCbG9jay0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLmRlc3Ryb3koY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tTZXQ6OmRl
bGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUp
Cit2b2lkIENvZGVCbG9ja1NldDo6ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOwotICAg
IEhhc2hTZXQ8Q29kZUJsb2NrKj4mIHNldCA9IGNvbGxlY3Rpb25UeXBlID09IEVkZW5Db2xsZWN0
aW9uID8gbV9uZXdDb2RlQmxvY2tzIDogbV9vbGRDb2RlQmxvY2tzOworICAgIEhhc2hTZXQ8Q29k
ZUJsb2NrKj4mIHNldCA9IHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiA/IG1fbmV3Q29k
ZUJsb2NrcyA6IG1fb2xkQ29kZUJsb2NrczsKICAgICBWZWN0b3I8Q29kZUJsb2NrKj4gdW5tYXJr
ZWQ7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IHNldCkgewogICAgICAgICBpZiAo
SGVhcDo6aXNNYXJrZWQoY29kZUJsb2NrKSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb2RlQmxv
Y2tTZXQ6OmRlbGV0ZVVubWFya2VkQW5kVW5yZQogICAgIH0KIAogICAgIC8vIEFueSByZW1haW5p
bmcgeW91bmcgQ29kZUJsb2NrcyBhcmUgbGl2ZSBhbmQgbmVlZCB0byBiZSBwcm9tb3RlZCB0byB0
aGUgc2V0IG9mIG9sZCBDb2RlQmxvY2tzLgotICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBFZGVu
Q29sbGVjdGlvbikKKyAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAg
ICAgICBwcm9tb3RlWW91bmdDb2RlQmxvY2tzKGxvY2tlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29s
bGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NTZWdtZW50ZWRBcnJheS5oIgotI2luY2x1ZGUg
IkhlYXBPcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICAKICAgICAvLyBEZWxldGUgYWxsIGNvZGUgYmxvY2tzIHRoYXQgYXJlIG9u
bHkgcmVmZXJlbmNlZCBieSB0aGlzIHNldCAoaS5lLiBvd25lZAogICAgIC8vIGJ5IHRoaXMgc2V0
KSwgYW5kIHRoYXQgaGF2ZSBub3QgYmVlbiBtYXJrZWQuCi0gICAgdm9pZCBkZWxldGVVbm1hcmtl
ZEFuZFVucmVmZXJlbmNlZChIZWFwT3BlcmF0aW9uKTsKKyAgICB2b2lkIGRlbGV0ZVVubWFya2Vk
QW5kVW5yZWZlcmVuY2VkKENvbGxlY3Rpb25TY29wZSk7CiAgICAgCiAgICAgLy8gQWRkIGFsbCBj
dXJyZW50bHkgZXhlY3V0aW5nIENvZGVCbG9ja3MgdG8gdGhlIHJlbWVtYmVyZWQgc2V0IHRvIGJl
IAogICAgIC8vIHJlLXNjYW5uZWQgZHVyaW5nIHRoZSBuZXh0IGNvbGxlY3Rpb24uCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29sbGVjdGlvblNjb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgorCisjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBjb2xsZWN0
aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSBzY29wZSkKK3sKKyAgICBzd2l0Y2ggKHNjb3Bl
KSB7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46CisgICAgICAgIHJldHVybiAiRWRl
biI7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw6CisgICAgICAgIHJldHVybiAiRnVs
bCI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwor
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29sbGVjdGlvblNjb3Bl
IHNjb3BlKQoreworICAgIG91dC5wcmludChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUoc2NvcGUp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisK
K2VudW0gY2xhc3MgQ29sbGVjdGlvblNjb3BlIHsgRWRlbiwgRnVsbCB9OworCitjb25zdCBjaGFy
KiBjb2xsZWN0aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSk7CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rpb25TY29wZSk7CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVu
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6RWRlbkdD
QWN0aXZpdHlDYQogCiB2b2lkIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigp
CiB7Ci0gICAgbV92bS0+aGVhcC5jb2xsZWN0KEVkZW5Db2xsZWN0aW9uKTsKKyAgICBtX3ZtLT5o
ZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogZG91YmxlIEVkZW5HQ0Fj
dGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24g
MjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrOjpkb0NvbGxlY3RpbwogICAgIH0KICNlbmRpZgogCi0gICAgaGVhcC5jb2xsZWN0
KEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBoZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpGdWxs
KTsKIH0KIAogZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAkocmV2aXNpb24gMjA3NjE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUeXBlTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIZWFwT3Bl
cmF0aW9uLmgiCisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSwyMCArMzUsMjQgQEAgc3RydWN0
IEdDVHlwZU1hcCB7CiAgICAgVCBlZGVuOwogICAgIFQgZnVsbDsKICAgICAKLSAgICBUJiBvcGVy
YXRvcltdKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQorICAgIFQmIG9wZXJhdG9yW10oQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogICAgIHsKLSAgICAgICAgaWYgKG9wZXJhdGlvbiA9PSBGdWxsQ29s
bGVjdGlvbikKKyAgICAgICAgc3dpdGNoIChzY29wZSkgeworICAgICAgICBjYXNlIENvbGxlY3Rp
b25TY29wZTo6RnVsbDoKICAgICAgICAgICAgIHJldHVybiBmdWxsOwotICAgICAgICBBU1NFUlQo
b3BlcmF0aW9uID09IEVkZW5Db2xsZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGVkZW47CisgICAg
ICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgorICAgICAgICAgICAgcmV0dXJuIGVkZW47
CisgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgY29uc3QgVCYgb3BlcmF0b3JbXShIZWFwT3Bl
cmF0aW9uIG9wZXJhdGlvbikgY29uc3QKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKENvbGxlY3Rp
b25TY29wZSBzY29wZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChvcGVyYXRpb24gPT0gRnVs
bENvbGxlY3Rpb24pCisgICAgICAgIHN3aXRjaCAoc2NvcGUpIHsKKyAgICAgICAgY2FzZSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGw6CiAgICAgICAgICAgICByZXR1cm4gZnVsbDsKLSAgICAgICAgQVNT
RVJUKG9wZXJhdGlvbiA9PSBFZGVuQ29sbGVjdGlvbik7Ci0gICAgICAgIHJldHVybiBlZGVuOwor
ICAgICAgICBjYXNlIENvbGxlY3Rpb25TY29wZTo6RWRlbjoKKyAgICAgICAgICAgIHJldHVybiBl
ZGVuOworICAgICAgICB9CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSGVh
cFNuYXBzaG90LmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJIZWFw
VmVyaWZpZXIuaCIKKyNpbmNsdWRlICJIZWxwaW5nR0NTY29wZS5oIgogI2luY2x1ZGUgIkluY3Jl
bWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklU
U3R1YlJvdXRpbmVTZXQuaCIKQEAgLTE0MCwxNSArMTQxLDE1IEBAIEhhc2hNYXA8Y29uc3QgY2hh
ciosIEdDVHlwZU1hcDxTaW1wbGVTdGEKICAgICByZXR1cm4gKnJlc3VsdDsKIH0KIAotU2ltcGxl
U3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIEhlYXBPcGVyYXRpb24gb3BlcmF0
aW9uKQorU2ltcGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIENvbGxlY3Rp
b25TY29wZSBzY29wZSkKIHsKLSAgICByZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwgR0NU
eXBlTWFwPFNpbXBsZVN0YXRzPigpKS5pdGVyYXRvci0+dmFsdWVbb3BlcmF0aW9uXTsKKyAgICBy
ZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwgR0NUeXBlTWFwPFNpbXBsZVN0YXRzPigpKS5p
dGVyYXRvci0+dmFsdWVbc2NvcGVdOwogfQogCiBjbGFzcyBUaW1pbmdTY29wZSB7CiBwdWJsaWM6
Ci0gICAgVGltaW5nU2NvcGUoSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IGNoYXIqIG5h
bWUpCi0gICAgICAgIDogbV9vcGVyYXRpb24ob3BlcmF0aW9uKQorICAgIFRpbWluZ1Njb3BlKE9w
dGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgICAg
IDogbV9zY29wZShzY29wZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7CiAgICAgICAg
IGlmIChtZWFzdXJlUGhhc2VUaW1pbmcoKSkKQEAgLTE1NiwxOCArMTU3LDE4IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgVGltaW5nU2NvcGUoSGVhcCYgaGVhcCwgY29uc3QgY2hhciogbmFt
ZSkKLSAgICAgICAgOiBUaW1pbmdTY29wZShoZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSwgbmFt
ZSkKKyAgICAgICAgOiBUaW1pbmdTY29wZShoZWFwLmNvbGxlY3Rpb25TY29wZSgpLCBuYW1lKQog
ICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRPcGVyYXRpb24oSGVhcE9wZXJhdGlvbiBv
cGVyYXRpb24pCisgICAgdm9pZCBzZXRTY29wZShPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNj
b3BlKQogICAgIHsKLSAgICAgICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247CisgICAgICAgIG1f
c2NvcGUgPSBzY29wZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRPcGVyYXRpb24oSGVhcCYg
aGVhcCkKKyAgICB2b2lkIHNldFNjb3BlKEhlYXAmIGhlYXApCiAgICAgewotICAgICAgICBzZXRP
cGVyYXRpb24oaGVhcC5vcGVyYXRpb25JblByb2dyZXNzKCkpOworICAgICAgICBzZXRTY29wZSho
ZWFwLmNvbGxlY3Rpb25TY29wZSgpKTsKICAgICB9CiAgICAgCiAgICAgflRpbWluZ1Njb3BlKCkK
QEAgLTE3NSwxMyArMTc2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1lYXN1cmVQaGFzZVRp
bWluZygpKSB7CiAgICAgICAgICAgICBkb3VibGUgYWZ0ZXIgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWVNUygpOwogICAgICAgICAgICAgZG91YmxlIHRpbWluZyA9IGFmdGVyIC0gbV9iZWZv
cmU7Ci0gICAgICAgICAgICBTaW1wbGVTdGF0cyYgc3RhdHMgPSB0aW1pbmdTdGF0cyhtX25hbWUs
IG1fb3BlcmF0aW9uKTsKKyAgICAgICAgICAgIFNpbXBsZVN0YXRzJiBzdGF0cyA9IHRpbWluZ1N0
YXRzKG1fbmFtZSwgKm1fc2NvcGUpOwogICAgICAgICAgICAgc3RhdHMuYWRkKHRpbWluZyk7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbR0M6IiwgbV9vcGVyYXRpb24sICJdICIsIG1fbmFtZSwgIiB0
b29rOiAiLCB0aW1pbmcsICIgbXMgKGF2ZXJhZ2UgIiwgc3RhdHMubWVhbigpLCAiIG1zKS5cbiIp
OworICAgICAgICAgICAgZGF0YUxvZygiW0dDOiIsICptX3Njb3BlLCAiXSAiLCBtX25hbWUsICIg
dG9vazogIiwgdGltaW5nLCAiIG1zIChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcykuXG4i
KTsKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgSGVhcE9wZXJhdGlvbiBtX29wZXJh
dGlvbjsKKyAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fc2NvcGU7CiAgICAgZG91Ymxl
IG1fYmVmb3JlOwogICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKIH07CkBAIC0yMDMsNyArMjA0LDYg
QEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9tYXhIZWFw
U2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24o
ZmFsc2UpCiAgICAgLCBtX3RvdGFsQnl0ZXNWaXNpdGVkKDApCi0gICAgLCBtX29wZXJhdGlvbklu
UHJvZ3Jlc3MoTm9PcGVyYXRpb24pCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCiAgICAgLCBt
X2V4dHJhTWVtb3J5U2l6ZSgwKQogICAgICwgbV9kZXByZWNhdGVkRXh0cmFNZW1vcnlTaXplKDAp
CkBAIC0yNTIsNyArMjUyLDggQEAgYm9vbCBIZWFwOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGlu
ZSkKIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKCFtX3ZtLT5lbnRyeVNjb3BlKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rp
b25TY29wZSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9tdXRhdG9yU3RhdGUgPT0gTXV0YXRvclN0
YXRlOjpSdW5uaW5nKTsKIAogICAgIG1fYXJyYXlCdWZmZXJzLmxhc3RDaGFuY2VUb0ZpbmFsaXpl
KCk7CiAgICAgbV9jb2RlQmxvY2tzLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwpAQCAtNDA4LDcg
KzQwOSw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKGRvdWJsZSBnY1N0YXJ0VGltZSwKICAgICAg
ICAgfQogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAotICAgICAgICBpZiAo
bV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGlmICht
X2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgICAg
IG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKICAgICAgICAgICAgIG1fc2xvdFZpc2l0b3IuY2xlYXJN
YXJrU3RhY2soKTsKICAgICAgICAgfQpAQCAtNDMxLDcgKzQzMiw3IEBAIHZvaWQgSGVhcDo6bWFy
a1Jvb3RzKGRvdWJsZSBnY1N0YXJ0VGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RW
aXNpdG9yID0gbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy50YWtlTGFzdCgpOwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIFdURjo6cmVnaXN0ZXJHQ1RocmVhZCgp
OworICAgICAgICAgICAgICAgIFdURjo6cmVnaXN0ZXJHQ1RocmVhZChHQ1RocmVhZFR5cGU6Okhl
bHBlcik7CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFBhcmFsbGVs
TW9kZUVuYWJsZXIgcGFyYWxsZWxNb2RlRW5hYmxlcigqc2xvdFZpc2l0b3IpOwpAQCAtNTI2LDcg
KzUyNyw3IEBAIHZvaWQgSGVhcDo6Z2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKENvbnMKIHZvaWQg
SGVhcDo6YmVnaW5NYXJraW5nKCkKIHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhp
cywgIkhlYXA6OmJlZ2luTWFya2luZyIpOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rp
b25TY29wZTo6RnVsbCkKICAgICAgICAgbV9jb2RlQmxvY2tzLT5jbGVhck1hcmtzRm9yRnVsbENv
bGxlY3Rpb24oKTsKICAgICAKICAgICB7CkBAIC01NDQsNyArNTQ1LDcgQEAgdm9pZCBIZWFwOjp2
aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCiAKIHZvaWQgSGVhcDo6dmlzaXRTbWFsbFN0cmlu
Z3MoKQogewotICAgIGlmICghbV92bS0+c21hbGxTdHJpbmdzLm5lZWRzVG9CZVZpc2l0ZWQobV9v
cGVyYXRpb25JblByb2dyZXNzKSkKKyAgICBpZiAoIW1fdm0tPnNtYWxsU3RyaW5ncy5uZWVkc1Rv
QmVWaXNpdGVkKCptX2NvbGxlY3Rpb25TY29wZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
dm0tPnNtYWxsU3RyaW5ncy52aXNpdFN0cm9uZ1JlZmVyZW5jZXMobV9zbG90VmlzaXRvcik7CkBA
IC03NjMsNyArNzY0LDcgQEAgdm9pZCBIZWFwOjp1cGRhdGVPYmplY3RDb3VudHMoZG91YmxlIGdj
UwogICAgICAgICBkYXRhTG9nRigiXG5OdW1iZXIgb2YgbGl2ZSBPYmplY3RzIGFmdGVyIEdDICVs
dSwgdG9vayAlLjZmIHNlY3NcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZpc2l0Q291
bnQpLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gZ2NTdGFydFRpbWUpOwog
ICAgIH0KICAgICAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0
aW9uKQorICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
CiAgICAgICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQgPSAwOwogCiAgICAgbV90b3RhbEJ5dGVzVmlz
aXRlZFRoaXNDeWNsZSA9IG1fc2xvdFZpc2l0b3IuYnl0ZXNWaXNpdGVkKCkgKyB0aHJlYWRCeXRl
c1Zpc2l0ZWQoKTsKQEAgLTg3MSw3ICs4NzIsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVC
bG9ja3MoKQogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVubmluZywgaXQncyBub3Qgc2FmZSB0
byBkZWxldGUgYWxsIEphdmFTY3JpcHQgY29kZSwgc2luY2UKICAgICAvLyB3ZSdsbCBlbmQgdXAg
cmV0dXJuaW5nIHRvIGRlbGV0ZWQgY29kZS4KICAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+ZW50
cnlTY29wZSk7Ci0gICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlv
bik7CisgICAgQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAKICAgICBjb21wbGV0ZUFsbEpJ
VFBsYW5zKCk7CiAKQEAgLTkwOCw3ICs5MDksNyBAQCB2b2lkIEhlYXA6OmNsZWFyVW5tYXJrZWRF
eGVjdXRhYmxlcygpCiB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKIHsK
ICAgICBjbGVhclVubWFya2VkRXhlY3V0YWJsZXMoKTsKLSAgICBtX2NvZGVCbG9ja3MtPmRlbGV0
ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyk7CisgICAgbV9j
b2RlQmxvY2tzLT5kZWxldGVVbm1hcmtlZEFuZFVucmVmZXJlbmNlZCgqbV9jb2xsZWN0aW9uU2Nv
cGUpOwogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHVi
Um91dGluZXMoKTsKIH0KIApAQCAtOTMyLDcgKzkzMyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFs
bEdhcmJhZ2UoKQogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoRnVsbENvbGxlY3Rpb24pOworICAgIGNvbGxl
Y3RXaXRob3V0QW55U3dlZXAoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKIAogICAgIERlZmVyR0NG
b3JBV2hpbGUgZGVmZXJHQygqdGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUlt
bW9ydGFsT2JqZWN0cygpKSkKQEAgLTk1NSwyOSArOTU2LDI5IEBAIHZvaWQgSGVhcDo6Y29sbGVj
dEFsbEdhcmJhZ2UoKQogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiB9
CiAKLXZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQordm9p
ZCBIZWFwOjpjb2xsZWN0KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICghbV9p
c1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKLQotICAgIGNvbGxlY3RXaXRob3V0QW55
U3dlZXAoY29sbGVjdGlvblR5cGUpOworICAgIAorICAgIGNvbGxlY3RXaXRob3V0QW55U3dlZXAo
c2NvcGUpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0V2l0aG91dEFueVN3
ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCitORVZFUl9JTkxJTkUgdm9pZCBIZWFw
Ojpjb2xsZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUp
CiB7CiAgICAgdm9pZCogc3RhY2tUb3A7CiAgICAgQUxMT0NBVEVfQU5EX0dFVF9SRUdJU1RFUl9T
VEFURShyZWdpc3RlcnMpOwogCi0gICAgY29sbGVjdEltcGwoY29sbGVjdGlvblR5cGUsIHd0ZlRo
cmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3RhY2tUb3AsIHJlZ2lzdGVycyk7CisgICAg
Y29sbGVjdEltcGwoc2NvcGUsIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3Rh
Y2tUb3AsIHJlZ2lzdGVycyk7CiAKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0obV92bSk7CiB9CiAK
LU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXBPcGVyYXRpb24gY29sbGVj
dGlvblR5cGUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVh
ZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQorTkVWRVJfSU5MSU5FIHZv
aWQgSGVhcDo6Y29sbGVjdEltcGwoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSwgdm9p
ZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJT
dGF0ZSYgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIFRpbWluZ1Njb3BlIGNvbGxlY3RJbXBsVGltaW5n
U2NvcGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCIpOworICAgIFRpbWluZ1Nj
b3BlIGNvbGxlY3RJbXBsVGltaW5nU2NvcGUoc2NvcGUsICJIZWFwOjpjb2xsZWN0SW1wbCIpOwog
ICAgIAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBH
QyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CkBAIC05OTAsODEgKzk5MSw3OCBAQCBORVZFUl9J
TkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgfQogICAgIAogICAgIGRvdWJs
ZSBnY1N0YXJ0VGltZTsKLSAgICB7Ci0gICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGltaW5nU2Nv
cGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCBiZWZvcmUgbWFya1Jvb3RzIik7
Ci0KLSAgICAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7Ci0gICAgICAgICAgICBEZWZl
ckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7Ci0gICAgICAgICAgICB2bSgpLT50eXBlUHJvZmls
ZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJHQyIpKTsKLSAgICAgICAg
fQotCisgICAgCisgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIERlZmVy
R0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKKyAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9n
KCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CisgICAgfQorICAgIAog
I2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUg
YXdoaWxlKCp0aGlzKTsKLSAgICAgICAgICAgIEpJVFdvcmtsaXN0OjppbnN0YW5jZSgpLT5jb21w
bGV0ZUFsbEZvclZNKCptX3ZtKTsKLSAgICAgICAgfQorICAgIHsKKyAgICAgICAgRGVmZXJHQ0Zv
ckFXaGlsZSBhd2hpbGUoKnRoaXMpOworICAgICAgICBKSVRXb3JrbGlzdDo6aW5zdGFuY2UoKS0+
Y29tcGxldGVBbGxGb3JWTSgqbV92bSk7CisgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0K
LSAgICAgICAgdm0oKS0+c2hhZG93Q2hpY2tlbigpLnVwZGF0ZSgqdm0oKSwgdm0oKS0+dG9wQ2Fs
bEZyYW1lKTsKLQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZWZlcnJhbERlcHRoKTsKLSAg
ICAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICAgICAgQVNTRVJUKG1faXNTYWZlVG9D
b2xsZWN0KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09
IE5vT3BlcmF0aW9uKTsKLQotICAgICAgICBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAg
ICAgIHdpbGxTdGFydENvbGxlY3Rpb24oY29sbGVjdGlvblR5cGUpOworICAgIAorICAgIHZtKCkt
PnNoYWRvd0NoaWNrZW4oKS51cGRhdGUoKnZtKCksIHZtKCktPnRvcENhbGxGcmFtZSk7CisgICAg
CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJyYWxEZXB0aCk7CisgICAgQVNTRVJUKHZtKCkt
PmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
KCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOworICAgIEFTU0VSVChtX2lzU2FmZVRvQ29sbGVjdCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIW1fY29sbGVjdGlvblNjb3BlKTsKKyAgICAKKyAgICBzdXNwZW5kQ29tcGlsZXJUaHJlYWRz
KCk7CisgICAgd2lsbFN0YXJ0Q29sbGVjdGlvbihzY29wZSk7CisgICAgeworICAgICAgICBIZWxw
aW5nR0NTY29wZSBoZWxwaW5nSGVhcFNjb3BlKCp0aGlzKTsKKyAgICAgICAgCisgICAgICAgIGNv
bGxlY3RJbXBsVGltaW5nU2NvcGUuc2V0U2NvcGUoKnRoaXMpOwogICAgICAgICAKLSAgICAgICAg
Y29sbGVjdEltcGxUaW1pbmdTY29wZS5zZXRPcGVyYXRpb24oKnRoaXMpOwotICAgICAgICBlYXJs
eVRpbWluZ1Njb3BlLnNldE9wZXJhdGlvbigqdGhpcyk7Ci0KICAgICAgICAgZ2NTdGFydFRpbWUg
PSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgICAgICBpZiAobV92ZXJp
ZmllcikgewogICAgICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgbGl2ZSBvYmplY3RzIGZyb20gdGhl
IGxhc3QgR0MgY3ljbGUgaGF2ZW4ndCBiZWVuIGNvcnJ1cHRlZCBieQogICAgICAgICAgICAgLy8g
bXV0YXRvcnMgYmVmb3JlIHdlIGJlZ2luIHRoaXMgbmV3IEdDIGN5Y2xlLgogICAgICAgICAgICAg
bV92ZXJpZmllci0+dmVyaWZ5KEhlYXBWZXJpZmllcjo6UGhhc2U6OkJlZm9yZUdDKTsKLQorICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX3ZlcmlmaWVyLT5pbml0aWFsaXplR0NDeWNsZSgpOwog
ICAgICAgICAgICAgbV92ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMoSGVhcFZlcmlmaWVyOjpQ
aGFzZTo6QmVmb3JlTWFya2luZyk7CiAgICAgICAgIH0KLQorICAgICAgICAKICAgICAgICAgZmx1
c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgICAgICBzdG9wQWxsb2NhdGlvbigpOwogICAg
ICAgICBwcmVwYXJlRm9yTWFya2luZygpOwogICAgICAgICBmbHVzaFdyaXRlQmFycmllckJ1ZmZl
cigpOwotCisgICAgICAgIAogICAgICAgICBpZiAoSGFzT3duUHJvcGVydHlDYWNoZSogY2FjaGUg
PSB2bSgpLT5oYXNPd25Qcm9wZXJ0eUNhY2hlKCkpCiAgICAgICAgICAgICBjYWNoZS0+Y2xlYXIo
KTsKKyAgICAgICAgCisgICAgICAgIG1hcmtSb290cyhnY1N0YXJ0VGltZSwgc3RhY2tPcmlnaW4s
IHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7CisgICAgICAgIAorICAgICAgICBpZiAo
bV92ZXJpZmllcikgeworICAgICAgICAgICAgbV92ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMo
SGVhcFZlcmlmaWVyOjpQaGFzZTo6QWZ0ZXJNYXJraW5nKTsKKyAgICAgICAgICAgIG1fdmVyaWZp
ZXItPnZlcmlmeShIZWFwVmVyaWZpZXI6OlBoYXNlOjpBZnRlck1hcmtpbmcpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgICAg
ICB2bSgpLT50eXBlUHJvZmlsZXIoKS0+aW52YWxpZGF0ZVR5cGVTZXRDYWNoZSgpOworICAgICAg
ICAKKyAgICAgICAgcmVhcFdlYWtIYW5kbGVzKCk7CisgICAgICAgIHBydW5lU3RhbGVFbnRyaWVz
RnJvbVdlYWtHQ01hcHMoKTsKKyAgICAgICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKKyAgICAgICAg
c25hcHNob3RVbnN3ZXB0KCk7CisgICAgICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXpl
cnMoKTsKKyAgICAgICAgcmVtb3ZlRGVhZENvbXBpbGVyV29ya2xpc3RFbnRyaWVzKCk7CisgICAg
ICAgIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7CisgICAgICAgIGRlbGV0ZVNvdXJjZVBy
b3ZpZGVyQ2FjaGVzKCk7CisgICAgICAgIAorICAgICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVw
ZXIoKTsKKyAgICAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRp
bmcodGhpcyk7CisgICAgICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmco
KTsKKyAgICAgICAgCisgICAgICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CisgICAgICAgIHVw
ZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKICAgICB9Ci0KLSAgICBtYXJrUm9vdHMoZ2NTdGFydFRp
bWUsIHN0YWNrT3JpZ2luLCBzdGFja1RvcCwgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpOwotICAgIAot
ICAgIFRpbWluZ1Njb3BlIGxhdGVUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OmNvbGxlY3RJbXBs
IGFmdGVyIG1hcmtSb290cyIpOwotCi0gICAgaWYgKG1fdmVyaWZpZXIpIHsKLSAgICAgICAgbV92
ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMoSGVhcFZlcmlmaWVyOjpQaGFzZTo6QWZ0ZXJNYXJr
aW5nKTsKLSAgICAgICAgbV92ZXJpZmllci0+dmVyaWZ5KEhlYXBWZXJpZmllcjo6UGhhc2U6OkFm
dGVyTWFya2luZyk7Ci0gICAgfQotCi0gICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQotICAg
ICAgICB2bSgpLT50eXBlUHJvZmlsZXIoKS0+aW52YWxpZGF0ZVR5cGVTZXRDYWNoZSgpOwotCi0g
ICAgcmVhcFdlYWtIYW5kbGVzKCk7Ci0gICAgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFw
cygpOwotICAgIHN3ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgc25hcHNob3RVbnN3ZXB0KCk7Ci0g
ICAgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwotICAgIHJlbW92ZURlYWRDb21w
aWxlcldvcmtsaXN0RW50cmllcygpOwotICAgIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7
Ci0gICAgZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKTsKLQotICAgIG5vdGlmeUluY3JlbWVu
dGFsU3dlZXBlcigpOwotICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhl
Y3V0aW5nKHRoaXMpOwotICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmco
KTsKLQotICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7Ci0gICAgdXBkYXRlQWxsb2NhdGlvbkxp
bWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUpOwogICAgIHJlc3Vt
ZUNvbXBpbGVyVGhyZWFkcygpOwogICAgIHN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpOwpAQCAtMTEw
MywyMiArMTEwMSwyMiBAQCB2b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNv
bGxlY3Rpb25UeXBlKQordm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENv
bGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAg
ICAgIGRhdGFMb2coIj0+ICIpOwogICAgIAotICAgIGlmIChzaG91bGREb0Z1bGxDb2xsZWN0aW9u
KGNvbGxlY3Rpb25UeXBlKSkgewotICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBGdWxs
Q29sbGVjdGlvbjsKKyAgICBpZiAoc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihzY29wZSkpIHsKKyAg
ICAgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw7CiAgICAgICAg
IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IGZhbHNlOwogICAgICAgICBpZiAoT3B0aW9uczo6
bG9nR0MoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bGxDb2xsZWN0aW9uLCAiKTsKICAgICB9
IGVsc2UgewotICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBFZGVuQ29sbGVjdGlvbjsK
KyAgICAgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkVkZW47CiAgICAg
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICAgICAgZGF0YUxvZygiRWRlbkNvbGxl
Y3Rpb24sICIpOwogICAgIH0KLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxD
b2xsZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29w
ZTo6RnVsbCkgewogICAgICAgICBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVB
ZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICAgICAgbV9l
eHRyYU1lbW9yeVNpemUgPSAwOwogICAgICAgICBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUg
PSAwOwpAQCAtMTEyOSw3ICsxMTI3LDcgQEAgdm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9u
KEhlYXBPcGVyYQogICAgICAgICBpZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKICAgICAgICAg
ICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbik7
CisgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVk
ZW4pOwogICAgICAgICBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3QgPSBtX3NpemVBZnRlckxh
c3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICB9CiAKQEAgLTExNDcs
NyArMTE0NSw3IEBAIHZvaWQgSGVhcDo6Zmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpCiAKIHZv
aWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKQogewotICAgIGlmIChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9uU2Nv
cGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKSB7CiAgICAgICAgIG1fd3JpdGVCYXJyaWVyQnVm
ZmVyLmZsdXNoKCp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExNzEsNyArMTE2
OSw3IEBAIHZvaWQgSGVhcDo6cmVhcFdlYWtIYW5kbGVzKCkKIAogdm9pZCBIZWFwOjpwcnVuZVN0
YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dy
ZXNzICE9IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSAhPSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8mIHBydW5l
Q2FsbGJhY2sgOiBtX3dlYWtHQ01hcHMudmFsdWVzKCkpCiAgICAgICAgIHBydW5lQ2FsbGJhY2so
KTsKQEAgLTExOTUsNyArMTE5Myw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlkZXJD
YWNoZXMoKQogCiB2b2lkIEhlYXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiB7Ci0gICAg
aWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlmICht
X2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgaWYg
KCFtX2xvZ2ljYWxseUVtcHR5V2Vha0Jsb2Nrcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2lu
ZGV4T2ZOZXh0TG9naWNhbGx5RW1wdHlXZWFrQmxvY2tUb1N3ZWVwID0gMDsKICAgICB9CkBAIC0x
MjQzLDcgKzEyNDEsNyBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQogICAg
IGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYgY3VycmVudEhlYXBTaXplID4gT3B0aW9u
czo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICBIZWFwU3RhdGlzdGljczo6ZXhpdFdpdGhGYWls
dXJlKCk7CiAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9u
KSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkg
ewogICAgICAgICAvLyBUbyBhdm9pZCBwYXRob2xvZ2ljYWwgR0MgY2h1cm4gaW4gdmVyeSBzbWFs
bCBhbmQgdmVyeSBsYXJnZSBoZWFwcywgd2Ugc2V0CiAgICAgICAgIC8vIHRoZSBuZXcgYWxsb2Nh
dGlvbiBsaW1pdCBiYXNlZCBvbiB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwLCB3aXRoIGEK
ICAgICAgICAgLy8gZml4ZWQgbWluaW11bS4KQEAgLTEyOTgsOCArMTI5Niw4IEBAIHZvaWQgSGVh
cDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rp
b24oZG91YmxlIGdjU3RhcnRUaW1lKQogewogICAgIGRvdWJsZSBnY0VuZFRpbWUgPSBXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIEhlYXBPcGVyYXRpb24gb3BlcmF0aW9u
ID0gbV9vcGVyYXRpb25JblByb2dyZXNzOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlID0gKm1fY29sbGVj
dGlvblNjb3BlOworICAgIGlmIChzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAg
ICAgIG1fbGFzdEZ1bGxHQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1lOwogICAgIGVs
c2UKICAgICAgICAgbV9sYXN0RWRlbkdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0gZ2NTdGFydFRpbWU7
CkBAIC0xMzIyLDExICsxMzIwLDExIEBAIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29sbGVjdGlvbihk
b3VibGUgZ2MKICAgICAgICAgcmVtb3ZlRGVhZEhlYXBTbmFwc2hvdE5vZGVzKCpoZWFwUHJvZmls
ZXIpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9
PSBFZGVuQ29sbGVjdGlvbiB8fCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rp
b24pOwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29sbGVjdGlvblNjb3BlKTsKKyAgICBtX2NvbGxlY3Rpb25TY29wZSA9IE51
bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAg
IG9ic2VydmVyLT5kaWRHYXJiYWdlQ29sbGVjdChvcGVyYXRpb24pOworICAgICAgICBvYnNlcnZl
ci0+ZGlkR2FyYmFnZUNvbGxlY3Qoc2NvcGUpOwogfQogCiB2b2lkIEhlYXA6OnJlc3VtZUNvbXBp
bGVyVGhyZWFkcygpCkBAIC0xMzg4LDcgKzEzODYsNyBAQCBib29sIEhlYXA6OmlzVmFsaWRBbGxv
Y2F0aW9uKHNpemVfdCkKICAgICBpZiAoIWlzVmFsaWRUaHJlYWRTdGF0ZShtX3ZtKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09w
ZXJhdGlvbikKKyAgICBpZiAoaXNDdXJyZW50VGhyZWFkQnVzeSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDY1LDI0ICsxNDYzLDE0IEBAIHZv
aWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoSlNDZWwKICAgICBtX3dyaXRlQmFycmll
ckJ1ZmZlci5hZGQoY2VsbCk7CiB9CiAKLWJvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlv
bihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSBjb25zdAorYm9vbCBIZWFw
OjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUp
IGNvbnN0CiB7CiAgICAgaWYgKCFPcHRpb25zOjp1c2VHZW5lcmF0aW9uYWxHQygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIHN3aXRjaCAocmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpIHsK
LSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2Fz
ZSBGdWxsQ29sbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBBbnlDb2xs
ZWN0aW9uOgorICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybiBtX3Nob3VsZERvRnVsbENv
bGxlY3Rpb247Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKnNjb3BlID09IENv
bGxlY3Rpb25TY29wZTo6RnVsbDsKIH0KIAogdm9pZCBIZWFwOjphZGRMb2dpY2FsbHlFbXB0eVdl
YWtCbG9jayhXZWFrQmxvY2sqIGJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNyArMjIsMTggQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIgogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgog
I2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCiAjaW5jbHVkZSAiSGVhcE9ic2VydmVyLmgiCi0jaW5j
bHVkZSAiSGVhcE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkxpc3RhYmxlSGFuZGxlci5oIgogI2lu
Y2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5o
IgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIK
ICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgogI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZUlEVGFibGUuaCIKQEAgLTQ4LDcgKzQ5LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIEFsbG9jYXRpb25TY29wZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENvZGVCbG9j
a1NldDsKIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0OwpAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBI
ZWFwOwogY2xhc3MgSGVhcFByb2ZpbGVyOwogY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogY2xhc3Mg
SGVhcFZlcmlmaWVyOworY2xhc3MgSGVscGluZ0dDU2NvcGU7CiBjbGFzcyBJbmNyZW1lbnRhbFN3
ZWVwZXI7CiBjbGFzcyBKSVRTdHViUm91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwpA
QCAtMTM5LDExICsxNDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoSGVhcE9i
c2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIpOyB9CiAgICAg
dm9pZCByZW1vdmVPYnNlcnZlcihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJz
LnJlbW92ZUZpcnN0KG9ic2VydmVyKTsgfQogCi0gICAgLy8gdHJ1ZSBpZiBjb2xsZWN0aW9uIGlz
IGluIHByb2dyZXNzCi0gICAgYm9vbCBpc0NvbGxlY3RpbmcoKTsKLSAgICBIZWFwT3BlcmF0aW9u
IG9wZXJhdGlvbkluUHJvZ3Jlc3MoKSB7IHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7IH0K
LSAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVz
cwotICAgIGJvb2wgaXNCdXN5KCk7CisgICAgTXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbXV0YXRvclN0YXRlOyB9CisgICAgT3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiBjb2xsZWN0aW9uU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsg
fQorCisgICAgLy8gV2UncmUgYWx3YXlzIGJ1c3kgb24gdGhlIGNvbGxlY3Rpb24gdGhyZWFkcy4g
T24gdGhlIG1haW4gdGhyZWFkLCB0aGlzIHJldHVybnMgdHJ1ZSBpZiB3ZSdyZQorICAgIC8vIGhl
bHBpbmcgaGVhcC4KKyAgICBib29sIGlzQ3VycmVudFRocmVhZEJ1c3koKTsKKyAgICAKICAgICBN
YXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Io
KSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVj
dG9yKCk7IH0KICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0RGVz
dHJ1Y3RvcigpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aERl
c3RydWN0b3IoKTsgfQogICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhp
bGlhcnlEYXRhKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvckF1eGlsaWFyeURh
dGEoKTsgfQpAQCAtMTcxLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKICAgICBib29sIHNob3VsZENvbGxlY3QoKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0
aW9uVHlwZSA9IEFueUNvbGxlY3Rpb24pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29s
bGVjdChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+ID0gTnVsbG9wdCk7CiAgICAgYm9vbCBjb2xs
ZWN0SWZOZWNlc3NhcnlPckRlZmVyKEdDRGVmZXJyYWxDb250ZXh0KiA9IG51bGxwdHIpOyAvLyBS
ZXR1cm5zIHRydWUgaWYgaXQgZGlkIGNvbGxlY3QuCiAgICAgdm9pZCBjb2xsZWN0QWNjb3JkaW5n
VG9EZWZlckdDUHJvYmFiaWxpdHkoKTsKIApAQCAtMjY4LDcgKzI3MSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCB1bnNpZ25lZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0
dXJuICZtX2JhcnJpZXJUaHJlc2hvbGQ7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
QWxsb2NhdGlvblNjb3BlOworICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW5nU2NvcGU7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICBmcmllbmQgY2xhc3MgRGVmZXJHQzsKICAgICBm
cmllbmQgY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZTsKQEAgLTI3OCw2ICsyODEsNyBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVTZXQ7CiAgICAgZnJpZW5kIGNsYXNzIEhlYXBVdGls
OwogICAgIGZyaWVuZCBjbGFzcyBIZWFwVmVyaWZpZXI7CisgICAgZnJpZW5kIGNsYXNzIEhlbHBp
bmdHQ1Njb3BlOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViUm91dGluZTsKICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFj
ZTsKQEAgLTI5Myw3ICsyOTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwg
R0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0V2l0aG91dEFu
eVN3ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKKyAg
ICB2b2lkIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9
IE51bGxvcHQpOwogCiAgICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOyAv
LyBGb3IgdXNlIHdpdGggb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzLgogICAgIHZvaWQqIGFsbG9j
YXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0
aG91dCBkZXN0cnVjdG9ycy4KQEAgLTMxMiwxMCArMzE2LDEwIEBAIHByaXZhdGU6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNp
emVfdCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXByZWNhdGVkUmVwb3J0RXh0cmFN
ZW1vcnlTbG93Q2FzZShzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0SW1wbChIZWFwT3BlcmF0
aW9uLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpS
ZWdpc3RlclN0YXRlJik7CisgICAgdm9pZCBjb2xsZWN0SW1wbChPcHRpb25hbDxDb2xsZWN0aW9u
U2NvcGU+LCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRz
OjpSZWdpc3RlclN0YXRlJik7CiAKICAgICB2b2lkIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsK
LSAgICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlw
ZSk7CisgICAgdm9pZCB3aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29w
ZT4pOwogICAgIHZvaWQgZmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgIHZvaWQgZmx1
c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW9uKCk7CkBAIC0z
NjYsNyArMzcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlX
ZWFrQmxvY2tzKCk7CiAgICAgYm9vbCBzd2VlcE5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jaygp
OwogCi0gICAgYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVz
dGVkQ29sbGVjdGlvblR5cGUpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlv
bihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHJlcXVlc3RlZENvbGxlY3Rpb25TY29wZSkgY29u
c3Q7CiAKICAgICB2b2lkIGluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKICAgICB2b2lkIGRlY3Jl
bWVudERlZmVycmFsRGVwdGgoKTsKQEAgLTM5NCw3ICszOTgsOCBAQCBwcml2YXRlOgogICAgIHNp
emVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVkOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVk
VGhpc0N5Y2xlOwogICAgIAotICAgIEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNz
OworICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9jb2xsZWN0aW9uU2NvcGU7CisgICAg
TXV0YXRvclN0YXRlIG1fbXV0YXRvclN0YXRlIHsgTXV0YXRvclN0YXRlOjpSdW5uaW5nIH07CiAg
ICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2Ug
bV9vYmplY3RTcGFjZTsKICAgICBHQ0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4g
bV9hcnJheUJ1ZmZlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxp
bmVzLmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDIxICs0NSwxNiBAQCBpbmxpbmUgYm9v
bCBIZWFwOjpzaG91bGRDb2xsZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
bV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9vcGVy
YXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChjb2xsZWN0aW9uU2NvcGUo
KSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdHQykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCiAgICAgICAg
IHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6
ZSgpOwogICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID4gbV9tYXhFZGVuU2l6
ZTsKIH0KIAotaW5saW5lIGJvb2wgSGVhcDo6aXNCdXN5KCkKK2lubGluZSBib29sIEhlYXA6Omlz
Q3VycmVudFRocmVhZEJ1c3koKQogewotICAgIHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
IT0gTm9PcGVyYXRpb247Ci19Ci0KLWlubGluZSBib29sIEhlYXA6OmlzQ29sbGVjdGluZygpCi17
Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbiB8fCBt
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb247CisgICAgcmV0dXJuIG1heUJl
R0NUaHJlYWQoKSB8fCBtdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmc7CiB9
CiAKIEFMV0FZU19JTkxJTkUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBIZWFwQ2VsbCogY2VsbCkK
QEAgLTc2LDcgKzcxLDcgQEAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSlNWYWx1ZSB2
KQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcmF3Q2Vs
bCkKIHsKLSAgICBBU1NFUlQoIW1heUJlR0NUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1heUJlR0NU
aHJlYWQoKSAhPSBHQ1RocmVhZFR5cGU6OkhlbHBlcik7CiAgICAgSGVhcENlbGwqIGNlbGwgPSBi
aXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKTsKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFs
bG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFy
a2VkKCk7CkBAIC0xNjEsNyArMTU2LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFN
ZW1vcnlBbGxvYwogaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKENl
bGxTdGF0ZSBvbGRTdGF0ZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBkb3VibGUtY291bnQgdGhlIGV4dHJhIG1lbW9yeSB0aGF0IHdhcyByZXBvcnRlZCBpbiBwcmV2
aW91cyBjb2xsZWN0aW9ucy4KLSAgICBpZiAob3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5D
b2xsZWN0aW9uICYmIG9sZFN0YXRlID09IENlbGxTdGF0ZTo6T2xkR3JleSkKKyAgICBpZiAoY29s
bGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuICYmIG9sZFN0YXRlID09IENl
bGxTdGF0ZTo6T2xkR3JleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2l6ZV90KiBjb3VudGVy
ID0gJm1fZXh0cmFNZW1vcnlTaXplOwpAQCAtMTc3LDcgKzE3Miw3IEBAIGlubGluZSB2b2lkIEhl
YXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXQKIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dGVy
bmFsTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQogewogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gZG91YmxlLWNvdW50IHRoZSBleHRlcm5hbCBtZW1vcnkgdGhh
dCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29sbGVjdGlvbnMuCi0gICAgaWYgKG9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6
Ok9sZEdyZXkpCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dGVybmFsTWVtb3J5U2l6ZTsKQEAgLTM3Miw3
ICszNjcsNyBAQCBpbmxpbmUgYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlCiAKIGlu
bGluZSB2b2lkIEhlYXA6OmNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSgpCiB7
Ci0gICAgaWYgKGlzRGVmZXJyZWQoKSB8fCAhbV9pc1NhZmVUb0NvbGxlY3QgfHwgbV9vcGVyYXRp
b25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChpc0RlZmVycmVkKCkgfHwgIW1f
aXNTYWZlVG9Db2xsZWN0IHx8IGNvbGxlY3Rpb25TY29wZSgpIHx8IG11dGF0b3JTdGF0ZSgpID09
IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmFu
ZG9tTnVtYmVyKCkgPCBPcHRpb25zOjpkZWZlckdDUHJvYmFiaWxpdHkoKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgJKHJldmlzaW9uIDIwNzYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSGVhcE9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIZWFwT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkhlYXBPYnNlcnZlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsR2FyYmFn
ZUNvbGxlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KEhlYXBP
cGVyYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoQ29sbGVj
dGlvblNjb3BlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyMDc2MTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCi17
Ci0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsKLSAgICBjYXNlIE5vT3BlcmF0aW9uOgotICAgICAg
ICBvdXQucHJpbnQoIk5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQWxsb2NhdGlv
bjoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBGdWxsQ29sbGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJGdWxsIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkVkZW4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKLSAgICAgICAgb3V0
LnByaW50KCJBbnkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9uIDIwNzYx
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWVudW0gSGVhcE9wZXJhdGlvbiB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0
aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rpb24sIEFueUNvbGxlY3Rpb24gfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVh
bTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SGVhcE9wZXJh
dGlvbik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mywy
NCArNDMsNiBAQCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1CiAgICAg
bV9jeWNsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4obV9udW1iZXJPZkN5Y2xlcyk7
CiB9CiAKLWNvbnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6Y29sbGVjdGlvblR5cGVOYW1lKEhlYXBP
cGVyYXRpb24gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE5vT3BlcmF0
aW9uOgotICAgICAgICByZXR1cm4gIk5vT3BlcmF0aW9uIjsKLSAgICBjYXNlIEFueUNvbGxlY3Rp
b246Ci0gICAgICAgIHJldHVybiAiQW55Q29sbGVjdGlvbiI7Ci0gICAgY2FzZSBBbGxvY2F0aW9u
OgotICAgICAgICByZXR1cm4gIkFsbG9jYXRpb24iOwotICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246
Ci0gICAgICAgIHJldHVybiAiRWRlbkNvbGxlY3Rpb24iOwotICAgIGNhc2UgRnVsbENvbGxlY3Rp
b246Ci0gICAgICAgIHJldHVybiAiRnVsbENvbGxlY3Rpb24iOwotICAgIH0KLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOyAvLyBTaWxlbmNpbmcg
YSBjb21waWxlciB3YXJuaW5nLgotfQotCiBjb25zdCBjaGFyKiBIZWFwVmVyaWZpZXI6OnBoYXNl
TmFtZShIZWFwVmVyaWZpZXI6OlBoYXNlIHBoYXNlKQogewogICAgIHN3aXRjaCAocGhhc2UpIHsK
QEAgLTgxLDcgKzYzLDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmluaXRpYWxpemVHQ0N5Y2xlKCkK
IHsKICAgICBIZWFwKiBoZWFwID0gbV9oZWFwOwogICAgIGluY3JlbWVudEN5Y2xlKCk7Ci0gICAg
Y3VycmVudEN5Y2xlKCkuY29sbGVjdGlvblR5cGUgPSBoZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCk7CisgICAgY3VycmVudEN5Y2xlKCkuc2NvcGUgPSAqaGVhcC0+Y29sbGVjdGlvblNjb3BlKCk7
CiB9CiAKIHN0cnVjdCBHYXRoZXJMaXZlT2JqRnVuY3RvciA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1
bmN0b3IgewpAQCAtMTk1LDcgKzE3Nyw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpyZXBvcnRPYmpl
Y3QoTGl2ZU9iamUKIAogICAgIGlmIChvYmpEYXRhLmlzQ29uZmlybWVkRGVhZCkgewogICAgICAg
ICBkYXRhTG9nRigiRk9VTkQgZGVhZCBvYmogJXAgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwK
LSAgICAgICAgICAgIG9iaiwgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCks
IGxpc3QubmFtZSk7CisgICAgICAgICAgICBvYmosIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29w
ZU5hbWUoY3ljbGUuc2NvcGUpLCBsaXN0Lm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMDYsNyArMTg4LDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OnJlcG9ydE9iamVjdChMaXZl
T2JqZQogICAgIGRhdGFMb2dGKCJGT1VORCBvYmogJXAgdHlwZSAnJXMnIGJ1dHRlcmZseSAlcCAo
YmFzZSAlcCkgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwKICAgICAgICAgb2JqLCBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUsCiAgICAgICAgIGJ1dHRlcmZseSwgYnV0dGVyZmx5
QmFzZSwKLSAgICAgICAgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCksIGxp
c3QubmFtZSk7CisgICAgICAgIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29wZU5hbWUoY3ljbGUu
c2NvcGUpLCBsaXN0Lm5hbWUpOwogfQogCiB2b2lkIEhlYXBWZXJpZmllcjo6Y2hlY2tJZlJlY29y
ZGVkKEpTT2JqZWN0KiBvYmopCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFZlcmlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGlj
OgogICAgIC8vIG9iamVjdCB3YXMgaW4gYW55IG9mIHRob3NlIGxpc3RzLgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY2hlY2tJZlJlY29yZGVkKEpTT2JqZWN0Kik7CiAKLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29sbGVjdGlvblR5cGVOYW1lKEhlYXBPcGVyYXRpb24pOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBwaGFzZU5hbWUoUGhhc2UpOwogCiBwcml2YXRlOgpAQCAtNjUsMTQgKzY0
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgSGVhcE9wZXJh
dGlvbiBjb2xsZWN0aW9uVHlwZTsKKyAgICAgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlOwogICAg
ICAgICBMaXZlT2JqZWN0TGlzdCBiZWZvcmU7CiAgICAgICAgIExpdmVPYmplY3RMaXN0IGFmdGVy
OwotCi0gICAgICAgIGNvbnN0IGNoYXIqIGNvbGxlY3Rpb25UeXBlTmFtZSgpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZWFwVmVyaWZpZXI6OmNvbGxlY3Rpb25UeXBlTmFt
ZShjb2xsZWN0aW9uVHlwZSk7Ci0gICAgICAgIH0KICAgICB9OwogCiAgICAgdm9pZCBpbmNyZW1l
bnRDeWNsZSgpIHsgbV9jdXJyZW50Q3ljbGUgPSAobV9jdXJyZW50Q3ljbGUgKyAxKSAlIG1fbnVt
YmVyT2ZDeWNsZXM7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlbHBpbmdH
Q1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVscGlu
Z0dDU2NvcGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWxwaW5nR0NTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhlYXAuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEhlbHBpbmdHQ1Njb3BlIHsKK3B1YmxpYzoKKyAgICBIZWxwaW5nR0NTY29wZShI
ZWFwJiBoZWFwKQorICAgICAgICA6IG1faGVhcChoZWFwKQorICAgICAgICAsIG1fb2xkU3RhdGUo
bV9oZWFwLm1fbXV0YXRvclN0YXRlKQorICAgIHsKKyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0
YXRlID0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0M7CisgICAgfQorICAgIAorICAgIH5IZWxwaW5n
R0NTY29wZSgpCisgICAgeworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3RhdGUgPSBtX29sZFN0
YXRlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBIZWFwJiBtX2hlYXA7CisgICAgTXV0YXRvclN0
YXRlIG1fb2xkU3RhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCShyZXZpc2lvbiAy
MDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTGFyZ2VBbGxvY2F0aW9uOjpy
ZWFwV2Vha1NldCgpCiAKIHZvaWQgTGFyZ2VBbGxvY2F0aW9uOjpmbGlwKCkKIHsKLSAgICBBU1NF
UlQoaGVhcCgpLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pOworICAg
IEFTU0VSVChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVs
bCk7CiAgICAgY2xlYXJNYXJrZWQoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFya2Vk
QWxsb2NhdG9yLmgiCiAKLSNpbmNsdWRlICJBbGxvY2F0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJB
bGxvY2F0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCkBAIC0xODUsNyAr
MTg1LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZG9UZQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1faGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsK
ICAgICAgICAgfQotICAgICAgICBBU1NFUlQobV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gTm9PcGVyYXRpb24pOwogICAgIH0KICAgICBpZiAoKythbGxvY2F0aW9uQ291bnQgPj0gT3B0
aW9uczo6c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzKCkpCiAgICAgICAgIGFsbG9jYXRpb25Db3Vu
dCA9IDA7CkBAIC0yMTQsMTAgKzIxMywxMCBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9j
YXRlU2xvd0Nhc2VJCiAgICAgCiAgICAgZGlkQ29uc3VtZUZyZWVMaXN0KCk7CiAgICAgCisgICAg
QWxsb2NhdGluZ1Njb3BlIGhlYWxwaW5nSGVhcCgqbV9oZWFwKTsKKwogICAgIG1faGVhcC0+Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcihkZWZlcnJhbENvbnRleHQpOwogICAgIAotICAgIEFsbG9j
YXRpb25TY29wZSBhbGxvY2F0aW9uU2NvcGUoKm1faGVhcCk7Ci0KICAgICB2b2lkKiByZXN1bHQg
PSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShy
ZXN1bHQgIT0gMCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJEZXN0
cnVjdGlvbk1vZGUuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkhlYXBDZWxs
LmgiCi0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvblN0YXR1
cy5oIgogI2luY2x1ZGUgIldlYWtTZXQuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24g
MjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFy
ZUZvckFsbG9jYXRpb24oKQogCiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0Fj
dGl2ZVdlYWtTZXRzKTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCkgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJz
ZXJ5T2Zmc2V0Rm9yU3dlZXAgPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAg
IGVsc2UKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0g
MDsKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKEhl
YXBSb290CiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKICAg
ICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rp
b24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogfQogCkBA
IC0zNjcsNyArMzY3LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKICAgICAK
ICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogICAgIAotICAgIGlmICht
X2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAo
bV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAg
ICAgIG1fYWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiB9CiAKQEAgLTM4Myw3ICszODMs
NyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzdG9wQWxsb2NhdGluZygpCiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OnByZXBhcmVGb3JNYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblBy
b2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlv
bnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiA9IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZz
ZXQ7CiAgICAgZWxzZQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29s
bGVjdGlvbiA9IDA7CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5r
KCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFw
LT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9o
ZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAg
ICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICAgICAgYWxsb2NhdG9y
LmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCk7CkBAIC01OTcsNyArNTk3LDcgQEAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogTWFya2VkU3BhY2U6OmZpbmRFbQogCiB2b2lkIE1hcmtlZFNwYWNl
OjpzbmFwc2hvdFVuc3dlcHQoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jl
c3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29w
ZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikgewogICAgICAgICBmb3JFYWNoQWxsb2NhdG9y
KAogICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3ZXB0Rm9y
RWRlbkNvbGxlY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0
b3JTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0
YXRvclN0YXRlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NdXRhdG9yU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCisK
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBN
dXRhdG9yU3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgTXV0
YXRvclN0YXRlOjpSdW5uaW5nOgorICAgICAgICBvdXQucHJpbnQoIlJ1bm5pbmciKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgTXV0YXRvclN0YXRlOjpBbGxvY2F0aW5nOgorICAgICAgICBv
dXQucHJpbnQoIkFsbG9jYXRpbmciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTXV0YXRv
clN0YXRlOjpIZWxwaW5nR0M6CisgICAgICAgIG91dC5wcmludCgiSGVscGluZ0dDIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L011dGF0b3JTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L011dGF0b3JTdGF0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL011dGF0b3JTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgTXV0
YXRvclN0YXRlIHsKKyAgICAvLyBUaGUgbXV0YXRvciBpcyBydW5uaW5nIHdoZW4gaXQncyBub3Qg
aW5zaWRlIGEgSGVhcCBzbG93IHBhdGguCisgICAgUnVubmluZywKKyAgICAKKyAgICAvLyBUaGUg
bXV0YXRvciBpcyBpbiBhbiBhbGxvY2F0aW9uIHNsb3cgcGF0aC4KKyAgICBBbGxvY2F0aW5nLAor
ICAgIAorICAgIC8vIFRoZSBtdXRhdG9yIHdhcyBhc2tlZCBieSB0aGUgR0MgdG8gZG8gc29tZSB3
b3JrLgorICAgIEhlbHBpbmdHQworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFj
ZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiwgSlNDOjpNdXRhdG9yU3RhdGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24g
MjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIFNsb3RWaXNpdG9yOjp+U2xvdFZpc2l0b3Io
KQogCiB2b2lkIFNsb3RWaXNpdG9yOjpkaWRTdGFydE1hcmtpbmcoKQogewotICAgIGlmIChoZWFw
KCktPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAoaGVh
cCgpLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAg
IEFTU0VSVChtX29wYXF1ZVJvb3RzLmlzRW1wdHkoKSk7IC8vIFNob3VsZCBoYXZlIG1lcmdlZCBi
eSBub3cuCiAgICAgZWxzZQogICAgICAgICByZXNldCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjAsMTcgKzMyMCwxNiBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0
CiAgICAgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjZWxsLCBvYmplY3RHcm91
cCwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdl
Q29sbGVjdGlvbjo6VHlwZSBwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKEhlYXBPcGVyYXRp
b24gb3BlcmF0aW9uKQorc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VD
b2xsZWN0aW9uOjpUeXBlIHByb3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24oQ29sbGVjdGlvblNj
b3BlIHNjb3BlKQogewotICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7Ci0gICAgY2FzZSBGdWxsQ29s
bGVjdGlvbjoKKyAgICBzd2l0Y2ggKHNjb3BlKSB7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGw6CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdl
Q29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgorICAgIGNh
c2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgogICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OlBhcnRpYWw7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKICAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOwogfQogCiB2b2lkIEluc3Bl
Y3RvckhlYXBBZ2VudDo6d2lsbEdhcmJhZ2VDb2xsZWN0KCkKQEAgLTM0MSw3ICszNDAsNyBAQCB2
b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6d2lsbEdhcmJhZ2VDb2xsCiAgICAgbV9nY1N0YXJ0VGlt
ZSA9IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVjdChIZWFwT3BlcmF0
aW9uIG9wZXJhdGlvbikKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVj
dChDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAg
QVNTRVJUKCFzdGQ6OmlzbmFuKG1fZ2NTdGFydFRpbWUpKTsKQEAgLTM1Niw3ICszNTUsNyBAQCB2
b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlCiAgICAgLy8gVk0gYXMgdGhl
IGluc3BlY3RlZCBwYWdlLgogCiAgICAgR2FyYmFnZUNvbGxlY3Rpb25EYXRhIGRhdGE7Ci0gICAg
ZGF0YS50eXBlID0gcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihvcGVyYXRpb24pOworICAg
IGRhdGEudHlwZSA9IHByb3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24oc2NvcGUpOwogICAgIGRh
dGEuc3RhcnRUaW1lID0gbV9nY1N0YXJ0VGltZTsKICAgICBkYXRhLmVuZFRpbWUgPSBtX2Vudmly
b25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuaAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gSGVhcE9ic2VydmVyCiAgICAgdm9p
ZCB3aWxsR2FyYmFnZUNvbGxlY3QoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEdhcmJhZ2VDb2xs
ZWN0KEpTQzo6SGVhcE9wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRHYXJiYWdlQ29s
bGVjdChKU0M6OkNvbGxlY3Rpb25TY29wZSkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGNsZWFySGVhcFNuYXBzaG90cygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NTUsOSArNzU1LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQ
cm9ncmFtRXhlYwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZt
LmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZt
LmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxs
KCk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCkBAIC05
MDAsOCArOTAwLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQVNT
RVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeSgpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgQVNTRVJUKCF2bS5p
c0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CisgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBi
b29sIGlzSlNDYWxsID0gKGNhbGxUeXBlID09IENhbGxUeXBlOjpKUyk7CkBAIC05NjIsMTAgKzk2
MiwxMCBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAg
IC8vIFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhhdmUgdG8gcmV0dXJuIHNvbWV0
aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQogICAgIC8vIGFscmVhZHkgaW4gYW4gaW52YWxpZCBzdGF0
ZS4KLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIGJvb2wg
aXNKU0NvbnN0cnVjdCA9IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKQEAg
LTEwMjgsNyArMTAyOCw3IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVG
b3IKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBB
U1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIAotICAgIGlmICh2bS5pc0NvbGxl
Y3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkp
CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAKICAgICAvLyBDb21waWxlIHRo
ZSBjYWxsZWU6CkBAIC0xMDUzLDkgKzEwNTMsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlKENhbGxGcmFtZUNsCiAgICAgVk0mIHZtID0gKmNsb3N1cmUudm07CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBBU1NFUlQoIXZtLmlzQ29s
bGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRo
cmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29s
bGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAK
ICAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKQEAgLTEwNzYsOSAr
MTA3Niw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAg
IEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NFUlQoIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAg
IGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25D
dXJyZW50VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIFZNRW50cnlT
Y29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwpAQCAtMTE4Miw5ICsx
MTgyLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9ncgogCiAgICAg
QVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCghdGhy
b3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7
CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgVk1FbnRyeVNj
b3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMjA3NjE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgQ29kZVByb2Zp
bGluZyBwcm9maWxlKHNvdXJjZSk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBKU0ludGVybmFsUHJv
bWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09
IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4
ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJu
IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIGluaXRpYXRv
cik7CiB9CkBAIC0xODUsNyArMTg1LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFs
dWF0ZU1vZHVsZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgU3ltYm9sKiBr
ZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKIApAQCAtMjEyLDcgKzIx
Miw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSoKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJl
YWQoKSk7CiAKICAgICByZXR1cm4gbG9hZE1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSks
IGluaXRpYXRvcik7CiB9CkBAIC0yMjMsNyArMjIzLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRNb2R1bGUoRXhlY1N0YXRlKgogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0u
YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUo
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAg
U3ltYm9sKiBrZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKIApAQCAt
MjQxLDcgKzI0MSw3IEBAIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSoK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVj
LT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVz
eSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVs
ZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNWYWx1
ZShleGVjLT52bSgpLCBtb2R1bGVLZXkpLCBpbml0aWF0b3IpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcs
NyArMjY3LDcgQEAgSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdgogewog
ICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Zt
LT5hcGlMb2NrKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+aXNDb2xs
ZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5hcGlMb2NrKCkuY3VycmVu
dFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50
VGhyZWFkKCkpOwogICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9w
QWxsTG9ja3ModGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCShyZXZpc2lvbiAyMDc2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExMyw5ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmcqIG51bGxPYmpl
Y3RTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX251bGxPYmplY3RTdHJpbmc7IH0KICAgICBKU1N0
cmluZyogdW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV91bmRlZmluZWRP
YmplY3RTdHJpbmc7IH0KIAotICAgIGJvb2wgbmVlZHNUb0JlVmlzaXRlZChIZWFwT3BlcmF0aW9u
IGNvbGxlY3Rpb25UeXBlKSBjb25zdAorICAgIGJvb2wgbmVlZHNUb0JlVmlzaXRlZChDb2xsZWN0
aW9uU2NvcGUgc2NvcGUpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoY29sbGVjdGlvblR5cGUg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgICAgIGlmIChzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGwpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIG1fbmVlZHNU
b0JlVmlzaXRlZDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU3Niw3ICs1NzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGR1bXBSZWdFeHBUcmFjZSgpOwogCi0gICAgYm9vbCBpc0NvbGxl
Y3RvckJ1c3koKSB7IHJldHVybiBoZWFwLmlzQnVzeSgpOyB9CisgICAgYm9vbCBpc0NvbGxlY3Rv
ckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSB7IHJldHVybiBoZWFwLmlzQ3VycmVudFRocmVhZEJ1c3ko
KTsgfQogCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgYm9vbCBpc0luaXRpYWxpemlu
Z09iamVjdCgpIGNvbnN0OyAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSlNEb2xsYXJWTVByb3RvdHlwZTo6ZWRlbkdD
KEV4ZWNTdGEKIHsKICAgICBpZiAoIWVuc3VyZUN1cnJlbnRUaHJlYWRPd25zSlNMb2NrKGV4ZWMp
KQogICAgICAgICByZXR1cm47Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KEVkZW5Db2xsZWN0
aW9uKTsKKyAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0Mo
RXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAtMjAgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgdHJhY2tpbmcgb2Yg
dGhlIGNvYXJzZS1ncmFpbiBIZWFwIHN0YXRlIChhbGxvY2F0aW5nIG9yIG5vdCwgY29sbGVjdG9y
IG9yIG5vdCwgZWRlbiB2cyBmdWxsKSBzaG91bGQgcmVzcGVjdCB0aGUgb3J0aG9nb25hbGl0eSBi
ZXR3ZWVuIGFsbG9jYXRpbmcgYW5kIGNvbGxlY3RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzczOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhlcmUgd2lsbCBzb29uIGJlIGRpZmZl
cmVudCBraW5kcyBvZiBHQyB0aHJlYWRzLCBhbmQgV1RGJ3MgImFyZSB5b3UgYSBHQyB0aHJlYWQi
IHRoaW5nCisgICAgICAgIHNob3VsZCBrbm93IGFib3V0IHRoaXMuCisKKyAgICAgICAgKiB3dGYv
TWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVHQ1RocmVhZHMpOgorICAg
ICAgICAoV1RGOjpyZWdpc3RlckdDVGhyZWFkKToKKyAgICAgICAgKFdURjo6bWF5QmVHQ1RocmVh
ZCk6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuaDoKKwogMjAxNi0xMC0xOSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCByMjA3
MTUxCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAkocmV2aXNpb24gMjA3NjE4KQorKysgU291cmNl
L1dURi93dGYvTWFpblRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxNCArMTkwLDE0
IEBAIGJvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFQKIH0KICNlbmRpZgog
Ci1zdGF0aWMgVGhyZWFkU3BlY2lmaWM8Ym9vbD4qIGlzR0NUaHJlYWQ7CitzdGF0aWMgVGhyZWFk
U3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPj4qIGlzR0NUaHJlYWQ7CiAKIHZvaWQgaW5p
dGlhbGl6ZUdDVGhyZWFkcygpCiB7Ci0gICAgaXNHQ1RocmVhZCA9IG5ldyBUaHJlYWRTcGVjaWZp
Yzxib29sPigpOworICAgIGlzR0NUaHJlYWQgPSBuZXcgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8
R0NUaHJlYWRUeXBlPj4oKTsKIH0KIAotdm9pZCByZWdpc3RlckdDVGhyZWFkKCkKK3ZvaWQgcmVn
aXN0ZXJHQ1RocmVhZChHQ1RocmVhZFR5cGUgdHlwZSkKIHsKICAgICBpZiAoIWlzR0NUaHJlYWQp
IHsKICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBwcm9jZXNz
IHRoYXQgZG9lc24ndCBjYXJlIGFib3V0CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCByZWdpc3Rl
ckdDVGhyZWFkKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICoqaXNHQ1RocmVhZCA9
IHRydWU7CisgICAgKippc0dDVGhyZWFkID0gdHlwZTsKIH0KIAogYm9vbCBpc01haW5UaHJlYWRP
ckdDVGhyZWFkKCkKQEAgLTIxNiw5ICsyMTYsMTMgQEAgYm9vbCBpc01haW5UaHJlYWRPckdDVGhy
ZWFkKCkKICAgICByZXR1cm4gaXNNYWluVGhyZWFkKCk7CiB9CiAKLWJvb2wgbWF5QmVHQ1RocmVh
ZCgpCitPcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKQogewotICAgIHJldHVy
biBpc0dDVGhyZWFkICYmIGlzR0NUaHJlYWQtPmlzU2V0KCkgJiYgKippc0dDVGhyZWFkOworICAg
IGlmICghaXNHQ1RocmVhZCkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgaWYgKCFpc0dD
VGhyZWFkLT5pc1NldCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gKipp
c0dDVGhyZWFkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L01haW5UaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgJ
KHJldmlzaW9uIDIwNzYxOCkKKysrIFNvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsOSArMzMsMTIgQEAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgUHJpbnRTdHJlYW07CisKIHR5
cGVkZWYgdWludDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKIAogLy8gTXVzdCBiZSBjYWxsZWQgZnJv
bSB0aGUgbWFpbiB0aHJlYWQuCkBAIC02Nyw4ICs3MCwxNSBAQCBpbmxpbmUgYm9vbCBpc1VJVGhy
ZWFkKCkgeyByZXR1cm4gaXNNYWluCiAKIHZvaWQgaW5pdGlhbGl6ZUdDVGhyZWFkcygpOwogCi1X
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBtYXlCZUdDVGhyZWFkKCk7CitlbnVtIGNsYXNzIEdDVGhyZWFkVHlwZSB7Cisg
ICAgTWFpbiwKKyAgICBIZWxwZXIKK307CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYsIEdDVGhyZWFkVHlwZSk7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVyR0NU
aHJlYWQoR0NUaHJlYWRUeXBlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBPcHRpb25hbDxHQ1RocmVh
ZFR5cGU+IG1heUJlR0NUaHJlYWQoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRo
cmVhZE9yR0NUaHJlYWQoKTsKIAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5h
bCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KQEAgLTg4LDYgKzk4LDcg
QEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaAogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAordXNpbmcgV1RGOjpHQ1RocmVhZFR5cGU7CiB1c2luZyBXVEY6OmNhbGxPbk1h
aW5UaHJlYWQ7CiB1c2luZyBXVEY6OmNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZDsK
IHVzaW5nIFdURjo6aXNNYWluVGhyZWFkOwo=
</data>
<flag name="review"
          id="315355"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292272</attachid>
            <date>2016-10-20 15:42:43 -0700</date>
            <delta_ts>2016-10-20 15:49:37 -0700</delta_ts>
            <desc>possible patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>108244</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NSBA
QAorMjAxNi0xMC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSB0cmFja2luZyBvZiB0aGUgY29hcnNlLWdyYWluIEhlYXAgc3RhdGUgKGFsbG9jYXRpbmcg
b3Igbm90LCBjb2xsZWN0b3Igb3Igbm90LCBlZGVuIHZzIGZ1bGwpIHNob3VsZCByZXNwZWN0IHRo
ZSBvcnRob2dvbmFsaXR5IGJldHdlZW4gYWxsb2NhdGluZyBhbmQgY29sbGVjdGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIAorICAgICAgICBXZSBuZWVk
IHRvIGtub3cgaWYgd2UncmUgY3VycmVudGx5IGluIGFuIGFsbG9jYXRpb24gc2xvdyBwYXRoLCBz
byB0aGF0IGNvZGUgY2FuIGFzc2VydCB0aGF0CisgICAgICAgIGl0J3Mgbm90IGJlaW5nIHVzZWQg
ZnJvbSBpbnNpZGUgYSBkZXN0cnVjdG9yIHRoYXQgcnVucyBkdXJpbmcgYSBzd2VlcC4gV2UgbmVl
ZCB0byBrbm93IGlmCisgICAgICAgIHdlJ3JlIGN1cnJlbnRseSBjb2xsZWN0aW5nLCBiZWNhdXNl
IHNvbWUgY29kZSBiZWhhdmVzIGRpZmZlcmVudGx5IGR1cmluZyBjb2xsZWN0aW9uLCBhbmQKKyAg
ICAgICAgb3RoZXIgY29kZSB3YW50cyB0byBhc3NlcnQgdGhhdCBpdCdzIG5vdCBiZWluZyB1c2Vk
IGZyb20gaW5zaWRlIGEgdmlzaXRDaGlsZHJlbiBtZXRob2QgdGhhdAorICAgICAgICBydW5zIGR1
cmluZyBtYXJraW5nLiBJZiB3ZSBhcmUgY29sbGVjdGluZywgd2UgbmVlZCB0byBrbm93IGlmIGl0
J3MgYW4gZWRlbiBjb2xsZWN0aW9uIG9yIGEKKyAgICAgICAgZnVsbCBjb2xsZWN0aW9uLiBJZiB3
ZSBhcmUgcmVxdWVzdGluZyBhIGNvbGxlY3Rpb24sIHdlIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBy
ZXF1ZXN0aW5nIGFuCisgICAgICAgIGVkZW4gY29sbGVjdGlvbiwgYSBmdWxsIGNvbGxlY3Rpb24s
IG9yIGFueSBraW5kIG9mIGNvbGxlY3Rpb24uCisgICAgICAgIAorICAgICAgICBQcmlvciB0byB0
aGlzIGNoYW5nZSwgeW91IHdvdWxkIHJlYXNvbiBhYm91dCBhbGwgb2YgdGhlc2UgdGhpbmdzIHVz
aW5nIHRoZSBIZWFwT3BlcmF0aW9uLiBJdAorICAgICAgICBoYWQgdGhlIGZvbGxvd2luZyBzdGF0
ZXM6IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rp
b24sIGFuZAorICAgICAgICBBbnlDb2xsZWN0aW9uLiBOb09wZXJhdGlvbiB2ZXJzdXMgQWxsb2Nh
dGlvbiB3YXMgcHJpbWFyaWx5IGZvciBhc3NlcnRpbmcgdGhhdCBzd2VlcCBkaWRuJ3QKKyAgICAg
ICAgY2FsbCBhcmJpdHJhcnkgSlMuIEZ1bGxDb2xsZWN0aW9uIHZlcnN1cyBFZGVuQ29sbGVjdGlv
biB3YXMgYWJvdXQgZGVzY3JpYmluZyBnZW5lcmF0aW9ucy4gV2UKKyAgICAgICAgd291bGQgZXZl
biB1c2UgSGVhcE9wZXJhdGlvbiBpbiBwbGFjZXMgd2hlcmUgd2Uga25ldyB0aGF0IGl0IGNvdWxk
IG9ubHkgYmUgZWl0aGVyIEZ1bGwgb3IKKyAgICAgICAgRWRlbiwgYmVjYXVzZSB3ZSBqdXN0IG5l
ZWRlZCBhIHZhcmlhYmxlIHRvIHRlbGwgdXMgd2hpY2ggZ2VuZXJhdGlvbiB3ZSB3ZXJlIHRhbGtp
bmcgYWJvdXQuCisgICAgICAgIEl0IHdhcyBhbGwgdmVyeSBjb25mdXNpbmcuCisgICAgICAgIAor
ICAgICAgICBXaGVyZSBpdCBjb21wbGV0ZWx5IGJyZWFrcyBkb3duIGlzIHRoZSBmYWN0IHRoYXQg
YSBjb25jdXJyZW50IEdDIGhhcyB0d28gbG9naWNhbCB0aHJlYWRzLCB0aGUKKyAgICAgICAgbXV0
YXRvciBhbmQgdGhlIGNvbGxlY3Rvciwgd2hpY2ggY2FuIGNoYW5nZSBzdGF0ZSBpbmRlcGVuZGVu
dGx5LiBUaGUgbXV0YXRvciBjYW4gYmUKKyAgICAgICAgYWxsb2NhdGluZy4gSXQgY2FuIGFsc28g
YmUgZG9pbmcgc29tZSB3b3JrIHRvIGhlbHAgdGhlIEdDLiBUaGF0J3MgdGhyZWUgc3RhdGVzOiBy
dW5uaW5nLAorICAgICAgICBhbGxvY2F0aW5nLCBvciBoZWxwaW5nIEdDLiBBdCB0aGUgc2FtZSB0
aW1lLCB0aGUgR0MgdGhyZWFkIGNvdWxkIGVpdGhlciBiZSBydW5uaW5nIG9yIG5vdCwKKyAgICAg
ICAgYW5kIGlmIGl0J3MgcnVubmluZywgaXQgY291bGQgYmUgYSBmdWxsIGNvbGxlY3Rpb24gb3Ig
YW4gZWRlbiBjb2xsZWN0aW9uLiBCZWNhdXNlIHRoZSBtdXRhdG9yCisgICAgICAgIGFuZCBjb2xs
ZWN0b3IgY2FuIHJ1biBhdCB0aGUgc2FtZSB0aW1lLCBpdCBtZWFucyB0aGF0IGlmIHdlIHVzZWQg
b25lIGVudW0sIHdlIHdvdWxkIG5lZWQgbmluZQorICAgICAgICBzdGF0ZXM6IGV2ZXJ5IGNvbWJp
bmF0aW9uIG9mIG11dGF0b3IgcnVubmluZywgYWxsb2NhdGluZywgb3IgaGVscGluZyBHQywgY3Jv
c3NlZCB3aXRoCisgICAgICAgIGNvbGxlY3RvciBub3QgcnVubmluZywgcnVubmluZyBlZGVuLCBv
ciBydW5uaW5nIGZ1bGwuIFNvLCB0aGlzIGNoYW5nZSBkZWNvdXBsZXMgbXV0YXRvciBzdGF0ZQor
ICAgICAgICBmcm9tIGNvbGxlY3RvciBzdGF0ZSBhbmQgdXNlcyB0d28gc2VwYXJhdGUgZmllbGRz
IHdpdGggdHdvIGRpZmZlcmVudCB0eXBlcy4KKyAgICAgICAgCisgICAgICAgIE11dGF0b3Igc3Rh
dGUgaXMgZGVzY3JpYmVkIHVzaW5nIE11dGF0b3JTdGF0ZSwgd2hpY2ggY2FuIGJlIGVpdGhlciBN
dXRhdG9yU3RhdGU6OlJ1bm5pbmcsCisgICAgICAgIE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZywg
b3IgTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MuCisgICAgICAgIAorICAgICAgICBDb2xsZWN0b3Ig
c3RhdGUgaXMgZGVzY3JpYmVkIHVzaW5nIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4uIENvbGxl
Y3Rpb25TY29wZSBkZXNjcmliZXMgaG93CisgICAgICAgIGJpZyB0aGUgc2NvcGUgb2YgdGhlIGNv
bGxlY3Rpb24gaXMsIGFuZCBpdCBjYW4gYmUgZWl0aGVyIENvbGxlY3Rpb25TY29wZTo6RWRlbiBv
cgorICAgICAgICBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwuIElmIHRoZSBPcHRpb25hbCBpcyBOdWxs
b3B0LCBpdCBtZWFucyB0aGF0IHdlIGFyZSBub3QgY29sbGVjdGluZy4gVGhpcworICAgICAgICB3
YXksIHlvdSBjYW4gdHJlYXQgY29sbGVjdGlvblNjb3BlIGFzIGEgYm9vbGVhbiAoYW4gT3B0aW9u
YWwgaXMgdHJ1ZSBpZmYgaXQncyBlbmdhZ2VkKS4gWW91CisgICAgICAgIGNhbiBwYXNzIGFyb3Vu
ZCBqdXN0IGEgQ29sbGVjdGlvblNjb3BlIGlmIHlvdSBrbm93IHRoYXQgeW91IG11c3QgYmUgY29s
bGVjdGluZyBhbmQgeW91IGp1c3QKKyAgICAgICAgd2FudCB0byBrbm93IGFib3V0IHRoZSBnZW5l
cmF0aW9uLiBBbHNvLCB3ZSBjYW4gdXNlIE51bGxvcHQgaW4gbWV0aG9kcyB0aGF0IHJlcXVlc3QK
KyAgICAgICAgY29sbGVjdGlvbiwgd2hpY2ggdGhvc2UgbWV0aG9kcyB0YWtlIHRvIG1lYW4gdGhh
dCB0aGV5IGNhbiBydW4gYW55IGtpbmQgb2YgY29sbGVjdGlvbiAodGhlCisgICAgICAgIG9sZCBB
bnlDb2xsZWN0aW9uKS4KKyAgICAgICAgCisgICAgICAgIEFub3RoZXIgdXNlIG9mIEhlYXBPcGVy
YXRpb24gd2FzIHRvIGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgd2hldGhlciB0aGUgY2FsbGVyIGlz
IHJ1bm5pbmcgYXMKKyAgICAgICAgcGFydCBvZiB0aGUgR0Mgb3IgYXMgcGFydCBvZiB0aGUgbXV0
YXRvci4gT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBkb2VzIG5vdCBhbnN3ZXIgdGhpcywKKyAg
ICAgICAgc2luY2UgY29kZSB0aGF0IHJ1bnMgaW4gdGhlIG11dGF0b3Igd2hpbGUgdGhlIG11dGF0
b3IgaXMgbm90IEhlbHBpbmdHQyBhdCB0aGUgc2FtZSB0aW1lIGFzCisgICAgICAgIHRoZSBjb2xs
ZWN0b3IgaXMgcnVubmluZyBzaG91bGQgcnVuIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBtdXRh
dG9yIG5vdCBhcyBpZiBpdCB3YXMgcGFydCBvZgorICAgICAgICB0aGUgR0MuIE11dGF0b3JTdGF0
ZSBpcyBuZWVkZWQgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24sIGJ1dCBpdCBkb2Vzbid0IHRlbGwg
dGhlIHdob2xlIHN0b3J5CisgICAgICAgIHNpbmNlIGNvZGUgdGhhdCBydW5zIGluIHRoZSBjb2xs
ZWN0b3IgdGhyZWFkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIG11dGF0b3IgaXMgcnVubmluZwor
ICAgICAgICBzaG91bGQgcnVuIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBHQyBub3QgYXMgaWYg
aXQgd2FzIHBhcnQgb2YgdGhlIG11dGF0b3IuIFNvLCB3ZSBuZWVkIHRvCisgICAgICAgIGtub3cg
aWYgd2UncmUgb24gdGhlIGNvbGxlY3RvciB0aHJlYWQgb3IgdGhlIG11dGF0b3IgdGhyZWFkLiBX
ZSBhbHJlYWR5IGhhdmUgYSBXVEYgZmFjaWxpdHkKKyAgICAgICAgZm9yIHRoaXMsIHdoaWNoIGFu
c3dlcnMgaWYgYSB0aHJlYWQgaXMgYSBHQyB0aHJlYWQuIEJ1dCB3ZSBhbHJlYWR5IHVzZSB0aGlz
IHRvIGFuc3dlciBhCisgICAgICAgIHN0cm9uZ2VyIHF1ZXN0aW9uOiBhcmUgd2UgcGFydCBvZiB0
aGUgcGFyYWxsZWwgR0MgaGVscGVycz8gU29tZSBmdW5jdGlvbnMgaW4gdGhlIEdDLCBsaWtlCisg
ICAgICAgIG1hcmsgYml0IHF1ZXJpZXMsIHdpbGwgd29yayBmaW5lIGluIGEgY29uY3VycmVudCBj
b2xsZWN0b3IgdGhyZWFkIHNvIGxvbmcgYXMgdGhlcmUgaXMgbm8KKyAgICAgICAgcGFyYWxsZWwg
bWFya2luZy4gU28sIHRoaXMgY2hhbmdlIGFsc28gY2hhbmdlcyBXVEYncyBtYXlCZUdDVGhyZWFk
IHRvIHRlbGwgd2hhdCBraW5kIG9mIEdDCisgICAgICAgIHRocmVhZCB3ZSBtYXkgYmU6IGVpdGhl
ciBHQ1RocmVhZFR5cGU6Ok1haW4gb3IgR0NUaHJlYWRUeXBlOjpIZWxwZXIuIFRoZSBwYXJhbGxl
bCBHQyBzYWZldHkKKyAgICAgICAgY2hlY2tzIGxvb2sgZm9yIEdDVGhyZWFkVHlwZTo6SGVscGVy
LiBUaGUgInNob3VsZCBJIHJ1biBhcyBtdXRhdG9yIiBxdWVyeSBjYW4gbm93IGJlIGFuc3dlcmVk
CisgICAgICAgIGJ5IGNoZWNraW5nIHdpdGggbWF5QmVHQ1RocmVhZCwgd2hpY2ggcmV0dXJucyBP
cHRpb25hbDxHQ1RocmVhZFR5cGU+OyBpZiBlbmdhZ2VkLCB0aGVuIHJ1biBhcworICAgICAgICBH
QywgZWxzZSBydW4gYXMgR0MgaWYgTXV0YXRvclN0YXRlIGlzIEhlbHBpbmdHQywgZWxzZSBydW4g
YXMgbXV0YXRvci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIHdh
eSB0aGF0IHRoZSBHQyBiZWhhdmVzLCBidXQgaXQgZG9lcyBjaGFuZ2UgaG93IHRoZSBHQyByZXBy
ZXNlbnRzIGEKKyAgICAgICAgZnVuZGFtZW50YWwgcGllY2Ugb2Ygc3RhdGUuIFNvLCBpdCdzIGEg
YmlnIGNoYW5nZS4gSXQgc2hvdWxkIGJlIHBlcmYtbmV1dHJhbCAoc3RpbGwgdGVzdGluZykuCisK
KyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTU3luY2hyb25vdXNFZGVuQ29s
bGVjdEZvckRlYnVnZ2luZyk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAgICAqIGZ0bC9GVExDb21waWxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL0FsbG9j
YXRpbmdTY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWxsb2NhdGluZ1Njb3BlOjpBbGxv
Y2F0aW5nU2NvcGUpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW5nU2NvcGU6On5BbGxvY2F0aW5n
U2NvcGUpOgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNjb3BlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogaGVhcC9Db2RlQmxvY2tTZXQuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6
OmRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKToKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9j
a1NldC5oOgorICAgICAgICAqIGhlYXAvQ29sbGVjdGlvblNjb3BlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUpOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBoZWFwL0NvbGxlY3Rpb25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBoZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpFZGVuR0NB
Y3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24pOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmRvQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9HQ1R5cGVNYXAuaDoKKyAgICAgICAgKEpT
Qzo6R0NUeXBlTWFwOjpvcGVyYXRvcltdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRv
RmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAoSlND
OjpIZWFwOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFNtYWxsU3Ry
aW5ncyk6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyk6CisgICAgICAg
IChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpk
ZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RB
bGxHYXJiYWdlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6
OkhlYXA6OmNvbGxlY3RXaXRob3V0QW55U3dlZXApOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0SW1wbCk6CisgICAgICAgIChKU0M6OkhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24pOgorICAg
ICAgICAoSlNDOjpIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcik6CisgICAgICAgIChKU0M6
OkhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRh
dGVBbGxvY2F0aW9uTGltaXRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkRmluaXNoQ29sbGVj
dGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OmlzVmFsaWRBbGxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgIChKU0M6OkhlYXA6Om11dGF0b3JTdGF0ZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OmNvbGxlY3Rpb25TY29wZSk6CisgICAgICAgIChKU0M6OkhlYXA6Om9wZXJhdGlvbkluUHJv
Z3Jlc3MpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SGVhcDo6c2hvdWxkQ29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmlzQ3VycmVu
dFRocmVhZEJ1c3kpOgorICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6
OnJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxl
Y3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OkhlYXA6Omlz
QnVzeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OmlzQ29sbGVjdGluZyk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9IZWFwT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBP
cGVyYXRpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvSGVhcE9wZXJhdGlvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcFZlcmlmaWVyOjppbml0aWFsaXplR0NDeWNsZSk6CisgICAgICAgIChKU0M6OkhlYXBWZXJp
Zmllcjo6cmVwb3J0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcFZlcmlmaWVyOjpjb2xsZWN0
aW9uVHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmg6Cisg
ICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6R0NDeWNsZTo6Y29sbGVjdGlvblR5cGVOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlbHBpbmdHQ1Njb3BlLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpIZWxwaW5nR0NTY29wZTo6SGVscGluZ0dDU2NvcGUpOgorICAgICAgICAoSlNDOjpI
ZWxwaW5nR0NTY29wZTo6fkhlbHBpbmdHQ1Njb3BlKToKKyAgICAgICAgKiBoZWFwL0xhcmdlQWxs
b2NhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6ZmxpcCk6CisgICAg
ICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJbXBsKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjp2aXNpdFdlYWtTZXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnJlYXBXZWFr
U2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yTWFya2luZyk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KToKKyAgICAgICAgKiBoZWFwL011dGF0b3JTdGF0
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBo
ZWFwL011dGF0b3JTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2luZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVjdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChm
dW5jdGlvbkZ1bGxHQyk6CisgICAgICAgIChmdW5jdGlvbkVkZW5HQyk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAgICAgICAo
SlNDOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToK
KyAgICAgICAgKEpTQzo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxs
TG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6
OlNtYWxsU3RyaW5nczo6bmVlZHNUb0JlVmlzaXRlZCk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAoSlNDOjpWTTo6aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKToKKyAg
ICAgICAgKEpTQzo6Vk06OmlzQ29sbGVjdG9yQnVzeSk6IERlbGV0ZWQuCisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk1Qcm90
b3R5cGU6OmVkZW5HQyk6CisKIDIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBkaXNhbGxvdyByZWZlcmVuY2VzIHRvIGBhd2FpdGAg
aW4gQXN5bmNGdW5jdGlvbiBmb3JtYWwgcGFyYW1ldGVycwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNiArNDUxLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIGhlYXAvQWxsb2NhdG9yQXR0cmlidXRlcy5j
cHAKICAgICBoZWFwL0NvZGVCbG9ja1NldC5jcHAKKyAgICBoZWFwL0NvbGxlY3Rpb25TY29wZS5j
cHAKICAgICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAogICAgIGhlYXAvRGVmZXJHQy5jcHAK
ICAgICBoZWFwL0Rlc3RydWN0aW9uTW9kZS5jcHAKQEAgLTQ2NCw3ICs0NjUsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvSGVhcC5jcHAKICAgICBoZWFwL0hlYXBDZWxs
LmNwcAogICAgIGhlYXAvSGVhcEhlbHBlclBvb2wuY3BwCi0gICAgaGVhcC9IZWFwT3BlcmF0aW9u
LmNwcAogICAgIGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNw
cAogICAgIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQ4MCw2ICs0ODAsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAog
ICAgIGhlYXAvTWFya2VkQmxvY2suY3BwCiAgICAgaGVhcC9NYXJrZWRTcGFjZS5jcHAKKyAgICBo
ZWFwL011dGF0b3JTdGF0ZS5jcHAKICAgICBoZWFwL1Nsb3RWaXNpdG9yLmNwcAogICAgIGhlYXAv
V2Vhay5jcHAKICAgICBoZWFwL1dlYWtCbG9jay5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY3NywxNCArMTY3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RnVsbEdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
LSAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhl
YXAoKS0+Y29sbGVjdChDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rp
b24oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBl
eGVjLT5oZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhlYXAoKS0+
Y29sbGVjdChDb2xsZWN0aW9uU2NvcGU6OkVkZW4pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAy
MDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEpTU3lu
Y2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBleGVjLT52bSgp
LmhlYXAuY29sbGVjdChFZGVuQ29sbGVjdGlvbik7CisgICAgZXhlYy0+dm0oKS5oZWFwLmNvbGxl
Y3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogdm9pZCBKU0Rpc2FibGVHQ1RpbWVyKHZv
aWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3NjQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw3ICs1MTAsNiBAQAogCQkwRjgzMzVCNzE2
MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMx
RUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hE
aXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsgfTsK
LQkJMEY4NkEyNkQxRDZGNzk2NTAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkMxRDZGNzk2MjAw
Q0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwICovOyB9OwogCQkwRjg2QTI2RjFENkY3QjMzMDBD
QjBDOTIgLyogR0NUeXBlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjg2QTI2RTFENkY3QjMxMDBDQjBDOTIgLyogR0NUeXBlTWFwLmggKi87IH07
CiAJCTBGODZBRTIwMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QUUxRjFD
NTMxMUM1MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICovOyB9OwogCQkwRjg4
NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAv
KiBCeXRlY29kZVVzZURlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01OTIsNiArNTkxLDEyIEBACiAJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJE
OSAvKiBERkdOb2RlRmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAg
Ki87IH07CiAJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI4MTUwRTk1
MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLzsgfTsKIAkJMEZBNTgxQkMxNTBFOTUzMDAw
QjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAq
LzsgfTsKKwkJMEZBNzYyMDQxREI5MjQyNjAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMDFE
QjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLzsgfTsKKwkJMEZBNzYyMDUx
REI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENv
bGxlY3Rpb25TY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDIxREI5
MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgKi87IH07CisJCTBGQTc2MjA3MURCOTI0
MzMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3Rh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkE3NjIwOTFEQjkyODNFMDBCN0EyRkQgLyogSGVscGluZ0dDU2NvcGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjA4MURCOTI4M0MwMEI3QTJG
RCAvKiBIZWxwaW5nR0NTY29wZS5oICovOyB9OworCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0EyRkQg
LyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmgg
Ki87IH07CiAJCTBGQTdBOEVCMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RTkxOEI0MTNDODAwNTIz
NzFEIC8qIFJlZy5jcHAgKi87IH07CiAJCTBGQTdBOEVDMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTdBOEVB
MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkE3QThFRTE4Q0U0RkQ4MDA1MjM3MUQgLyogU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuY3BwICovOyB9OwpAQCAtNjIzLDcgKzYyOCw2IEBACiAJCTBGQjRGQjczMUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlT
bG93UGF0aC5jcHAgKi87IH07CiAJCTBGQjRGQjc0MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5
U2xvd1BhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjRGQjcxMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCAqLzsgfTsKIAkJ
MEZCNEZCNzUxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcyMUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi87IH07Ci0JCTBGQjUzMDM5MUQ5MDQw
NEMwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAvKiBBbGxvY2F0
aW9uU2NvcGUuaCAqLzsgfTsKIAkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RkI1NDY3OTE0RjVDNDZCMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzgxNEY1
QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKIAkJMEZC
NTQ2N0IxNEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0NjdBMTRG
NUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTYsNyArMTE2MCw2
IEBACiAJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRCQjdG
MjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oICovOyB9OwogCQky
QTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVDOTA5MTg2MEQ2QzIw
MDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwICovOyB9OwogCQkyQTRFQzkwQzE4NjBE
NkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNkY0NjI1MTdF
OTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkE3QTU4RUYxODA4QTRDNDAwMjBCREY3IC8qIERl
ZmVyR0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovOyB9OwogCQkyQTgzNjM4
NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4MzE4RDdEMEVFMDAw
MEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CiAJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0Mg
LyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yODM0LDcgKzI4MzcsNiBAQAogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgz
NjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RG
R0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjg2QTI2
QzFENkY3OTYyMDBDQjBDOTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY4NkEyNkUxRDZGN0IzMTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY4NkFFMUYxQzUzMTFDNTAwNkJFOEVDIC8qIEIzQ29tcHV0ZURpdmlz
aW9uTWFnaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb21wdXRlRGl2
aXNpb25NYWdpYy5oOyBwYXRoID0gYjMvQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNv
ZGVVc2VEZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVVc2VE
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MTUsNiArMjkxNywxMiBAQAog
CQkwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVGbGFncy5jcHA7IHBhdGggPSBkZmcv
REZHTm9kZUZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjgx
NTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdOb2RlRmxhZ3MuaDsgcGF0aCA9IGRmZy9ERkdOb2RlRmxhZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjkxNTBFOTUyQTAwQjlBMkQ5IC8qIERG
R05vZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVUeXBl
Lmg7IHBhdGggPSBkZmcvREZHTm9kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xsZWN0aW9uU2NvcGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29s
bGVjdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rp
b25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMjFEQjkyNDIz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE11dGF0b3JTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRvclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQTc2MjA4MURCOTI4M0MwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWxwaW5nR0NTY29wZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2Nh
dGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpbmdT
Y29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE3QThFOTE4QjQxM0M4MDA1
MjM3MUQgLyogUmVnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVBMThCNDEzQzgwMDUy
MzcxRCAvKiBSZWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5NTYsNyArMjk2NCw2IEBACiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1
QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRlRMTGF6eVNsb3dQYXRoLmNwcDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEg
LyogRlRMTGF6eVNsb3dQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TExhenlTbG93UGF0aC5oOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xv
d1BhdGhDYWxsLmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlv
blNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3NjE0RjU5QUQxMDAyQzI5
ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2N0Ex
NEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ1MCw3ICszNDU3LDYgQEAKIAkJMkE0
QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdyaXRlQmFycmllckJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJB
NEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8q
IERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJH
Qy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2MzgzMThEN0QwRUUwMDAw
RUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDQ3LDcgKzU0
NTMsNyBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEZCNTMwMzgxRDkwNDA0NjAwRjI4
QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovLAorCQkJCTBGQTc2MjBBMURCOTU5RjYwMEI3QTJG
RCAvKiBBbGxvY2F0aW5nU2NvcGUuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkg
LyogQWxsb2NhdG9yQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYw
OUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuaCAqLywKIAkJCQkwRjA3MEE0MjFENTQzQTg5MDA2
RTcyMzIgLyogQ2VsbENvbnRhaW5lci5oICovLApAQCAtNTQ1Niw2ICs1NDYyLDggQEAKIAkJCQkw
RkQ4QTMxMTE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4
QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggKi8sCiAJCQkJMEY2NjRDRTcx
REEzMDRFRDAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLywKKwkJCQkwRkE3NjIw
MDFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLywKKwkJCQkwRkE3NjIw
MTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggKi8sCiAJCQkJMTQ2QjE0REIx
MkVCNUIxMjAwMUJFQzFCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFG
MjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2VydmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThF
RTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8sCkBAIC01NTAwLDggKzU1MDgsNiBA
QAogCQkJCUMyREE3NzgyMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oICovLAogCQkJ
CTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLywKIAkJ
CQlBNTMzOUVDODFCQjRCNDUxMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggKi8sCi0JCQkJMEY4
NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwICovLAotCQkJCTJBNkY0
NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi8sCiAJCQkJQTUzOThGQTkx
Qzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8sCiAJCQkJQTUzOThGQUExQzc1
MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5oICovLAogCQkJCTE0Rjk3NDQ2MTM4Qzg1M0Uw
MERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLywKQEAgLTU1MTYsNiArNTUyMiw3IEBACiAJ
CQkJMEZBREU2NzIxRDREMjNCQzAwNzY4NDU3IC8qIEhlYXBVdGlsLmggKi8sCiAJCQkJRkU3QkE2
MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi8sCiAJCQkJRkU3QkE2MEUx
QTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oICovLAorCQkJCTBGQTc2MjA4MURCOTI4
M0MwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oICovLAogCQkJCUMyNUY4QkNCMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJCUMyNUY4QkNDMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJCQkwRjc2NkQyOTE1QThD
QzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLApAQCAtNTU0MSw2ICs1NTQ4
LDggQEAKIAkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVz
LmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8s
CiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAorCQkJCTBG
QTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwICovLAorCQkJCTBGQTc2
MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLywKIAkJCQlBRERCMUY2MjE4
RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RC
QUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAw
NUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCkBAIC03NTAwLDYgKzc1MDksNyBAQAogCQkJCTBG
RUM4NTAzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tVdGlscy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1MDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxvY2tXb3JrbGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tTcGVj
aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNzFEQjkyNDMzMDBCN0EyRkQgLyogTXV0
YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwODFCREFDREFDMDA4MEZGNzQg
LyogQjNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwQTFCREFDREFDMDA4
MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURDNDU0QjhEMUQwMEU4MjQw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjAwLDcgKzc2MTAs
NiBAQAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVGM0M2IC8qIENh
bGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhB
RTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Mjc2NzMyNDFCNjgw
QzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRC
Q0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5MDUsNiArNzkxNCw4IEBACiAJCQkJMkFEMkVERkIxOTc5OUUz
ODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDQ2
MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkw
RDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZBNzYyMDkxREI5MjgzRTAwQjdBMkZEIC8qIEhlbHBpbmdHQ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTk4RDBFMTgzRTM4MDAwRjkyOTcg
LyogRXJyb3JJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEYwRTE4MzlEQjAw
MEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTQsNyArODA2
NSw2IEBACiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMzlFQzkxQkI0QjQ2MDAwNTRGMDA1IC8qIEhlYXBP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkE2RjQ2MjYxN0U5NTlD
RTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Rjk3NDQ3
MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRl
cnMgKi8sCkBAIC04MTE3LDYgKzgxMjcsNyBAQAogCQkJCUExODE5M0UzMUI0RTBDREIwMEZDMTAy
OSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
QjlFMjNFMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExODE5M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNTFEQjkyNDI5MDBCN0EyRkQg
LyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q2RTFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTE4
N0EwRjFDMDMwRDZDMDAzOEJCQ0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgxLDcgKzk0OTIsNiBAQAogCQkJCUE3OEE5NzdB
MTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUw
Rjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGODZBMjZEMUQ2Rjc5
NjUwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0Uw
MUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyog
REZHUHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTYyOCw2ICs5NjM4LDcgQEAKIAkJ
CQlBNThFMzU5MTE4NjBERUNGMDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1MTNFNUNBMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4NDBFMjAxODdCN0I4NjAwODQzQjEw
IC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA0
MURCOTI0MjYwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ4QTdCRUYxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjI0RTU1NTE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1l
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1Q0VFRTE0MTg3RjNCQUQwMEU1NUM5OSAvKiBJ
bnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3ODIsNiArOTc5Myw3IEBACiAJ
CQkJREMxN0U4MTcxQzlDOTFENjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9y
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNFN0IyIC8q
IENMb29wU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3
QTQ4IC8qIEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUMwRUMyMUFBMEQ3REEw
MEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIw
NzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDc0LDcgKzM0NzQsNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlz
b24oUHJvZmlsZXI6OkpldHRpCiAgICAgICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgxKSwgYW5k
IGRvZXMgaXRzIG93biBib29rLWtlZXBpbmcgYWJvdXQgd2hldGhlciBpdCBoYXMgYWxyZWFkeSBo
YXBwZW5lZC4KICAgICAgICAgaWYgKCFqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbnZhbGlkYXRl
KCkpIHsKICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZC4KLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSB8fCAobV92bS0+
aGVhcC5pc0NvbGxlY3RpbmcoKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJTY3JpcHRFeGVjdXRh
YmxlKCkpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9IHJlcGxhY2VtZW50
KCkgfHwgKG1fdm0tPmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFwOjppc01hcmtl
ZChvd25lclNjcmlwdEV4ZWN1dGFibGUoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTM1MDYsNyArMzUwNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNv
bihQcm9maWxlcjo6SmV0dGkKIAogICAgIC8vIEpldHRpc29uIGNhbiBoYXBwZW4gZHVyaW5nIEdD
LiBXZSBkb24ndCB3YW50IHRvIGluc3RhbGwgY29kZSB0byBhIGRlYWQgZXhlY3V0YWJsZQogICAg
IC8vIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgYSBkZWFkIG9iamVjdCB0byB0aGUgcmVtZW1iZXJl
ZCBzZXQuCi0gICAgaWYgKG1fdm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkgJiYgIUhlYXA6OmlzTWFy
a2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkKKyAgICBpZiAobV92bS0+aGVhcC5pc0N1cnJl
bnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgp
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMgKDIpLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIw
NzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsOSArMTAzLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpCiAgICAgICAgICAgICBkYXRhTG9nKG1f
d29ya2xpc3QsICI6IENvbXBpbGluZyAiLCBtX3BsYW4tPmtleSgpLCAiIGFzeW5jaHJvbm91c2x5
XG4iKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW4tPnZtLT5oZWFw
LmlzQ29sbGVjdGluZygpKTsKKyAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgZm9yIHRoZSBHQyB0
byBiZSBzYWZlcG9pbnRpbmcgc2luY2Ugd2Ugb3duIHJpZ2h0VG9SdW4uCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhlYXAubXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRl
OjpIZWxwaW5nR0MpOwogICAgICAgICBtX3BsYW4tPmNvbXBpbGVJblRocmVhZCgqbV9sb25nTGl2
ZWRTdGF0ZSwgJm1fZGF0YSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+c3RhZ2Ug
PT0gUGxhbjo6Q2FuY2VsbGVkIHx8ICFtX3BsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT5zdGFnZSA9PSBQbGFuOjpDYW5jZWxsZWQg
fHwgbV9wbGFuLT52bS0+aGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OkhlbHBp
bmdHQyk7CiAgICAgICAgIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV93b3JrbGlzdC5tX2xvY2spOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV93b3JrbGlzdC5tX3BsYW5Db21waWxlZC5ub3RpZnlB
bGwoKTsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wbGFuLT52bS0+aGVh
cC5pc0NvbGxlY3RpbmcoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhl
YXAubXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
CiAKICAgICBpZiAoc2FmZXBvaW50UmVzdWx0LmRpZEdldENhbmNlbGxlZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXN0YXRlLmdyYXBoLm1fdm0uaGVhcC5pc0NvbGxl
Y3RpbmcoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGUuZ3JhcGgubV92bS5oZWFwLm11dGF0
b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKTsKICAgICAKICAgICBpZiAoc3Rh
dGUuYWxsb2NhdGlvbkZhaWxlZCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SGVhcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWxsb2NhdGluZ1Njb3BlIHsKK3B1
YmxpYzoKKyAgICBBbGxvY2F0aW5nU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAgOiBtX2hlYXAo
aGVhcCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5tX211dGF0b3JTdGF0
ZSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcpOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3Rh
dGUgPSBNdXRhdG9yU3RhdGU6OkFsbG9jYXRpbmc7CisgICAgfQorICAgIAorICAgIH5BbGxvY2F0
aW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLm1fbXV0YXRv
clN0YXRlID09IE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZyk7CisgICAgICAgIG1faGVhcC5tX211
dGF0b3JTdGF0ZSA9IE11dGF0b3JTdGF0ZTo6UnVubmluZzsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSGVhcCYgbV9oZWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCShyZXZpc2lvbiAyMDc2
NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIZWFwLmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBBbGxvY2F0aW9uU2NvcGUgewotcHVibGljOgotICAgIEFs
bG9jYXRpb25TY29wZShIZWFwJiBoZWFwKQotICAgICAgICA6IG1faGVhcChoZWFwKQotICAgICAg
ICAsIG1fbGFzdE9wZXJhdGlvbihtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbGFzdE9wZXJhdGlvbiA9PSBOb09wZXJhdGlvbiB8fCBtX2xhc3RP
cGVyYXRpb24gPT0gQWxsb2NhdGlvbik7Ci0gICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPSBBbGxvY2F0aW9uOwotICAgIH0KLSAgICAKLSAgICB+QWxsb2NhdGlvblNjb3BlKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID09IEFs
bG9jYXRpb24pOwotICAgICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID0gbV9sYXN0
T3BlcmF0aW9uOwotICAgIH0KLXByaXZhdGU6Ci0gICAgSGVhcCYgbV9oZWFwOwotICAgIEhlYXBP
cGVyYXRpb24gbV9sYXN0T3BlcmF0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAkocmV2aXNp
b24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENvZGVCbG9ja1NldDo6
bGFzdENoYW5jZVRvRmluYWxpemUoCiAgICAgICAgIGNvZGVCbG9jay0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLmRlc3Ryb3koY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tTZXQ6OmRl
bGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUp
Cit2b2lkIENvZGVCbG9ja1NldDo6ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOwotICAg
IEhhc2hTZXQ8Q29kZUJsb2NrKj4mIHNldCA9IGNvbGxlY3Rpb25UeXBlID09IEVkZW5Db2xsZWN0
aW9uID8gbV9uZXdDb2RlQmxvY2tzIDogbV9vbGRDb2RlQmxvY2tzOworICAgIEhhc2hTZXQ8Q29k
ZUJsb2NrKj4mIHNldCA9IHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiA/IG1fbmV3Q29k
ZUJsb2NrcyA6IG1fb2xkQ29kZUJsb2NrczsKICAgICBWZWN0b3I8Q29kZUJsb2NrKj4gdW5tYXJr
ZWQ7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IHNldCkgewogICAgICAgICBpZiAo
SGVhcDo6aXNNYXJrZWQoY29kZUJsb2NrKSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb2RlQmxv
Y2tTZXQ6OmRlbGV0ZVVubWFya2VkQW5kVW5yZQogICAgIH0KIAogICAgIC8vIEFueSByZW1haW5p
bmcgeW91bmcgQ29kZUJsb2NrcyBhcmUgbGl2ZSBhbmQgbmVlZCB0byBiZSBwcm9tb3RlZCB0byB0
aGUgc2V0IG9mIG9sZCBDb2RlQmxvY2tzLgotICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBFZGVu
Q29sbGVjdGlvbikKKyAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAg
ICAgICBwcm9tb3RlWW91bmdDb2RlQmxvY2tzKGxvY2tlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDc2NDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29s
bGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NTZWdtZW50ZWRBcnJheS5oIgotI2luY2x1ZGUg
IkhlYXBPcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICAKICAgICAvLyBEZWxldGUgYWxsIGNvZGUgYmxvY2tzIHRoYXQgYXJlIG9u
bHkgcmVmZXJlbmNlZCBieSB0aGlzIHNldCAoaS5lLiBvd25lZAogICAgIC8vIGJ5IHRoaXMgc2V0
KSwgYW5kIHRoYXQgaGF2ZSBub3QgYmVlbiBtYXJrZWQuCi0gICAgdm9pZCBkZWxldGVVbm1hcmtl
ZEFuZFVucmVmZXJlbmNlZChIZWFwT3BlcmF0aW9uKTsKKyAgICB2b2lkIGRlbGV0ZVVubWFya2Vk
QW5kVW5yZWZlcmVuY2VkKENvbGxlY3Rpb25TY29wZSk7CiAgICAgCiAgICAgLy8gQWRkIGFsbCBj
dXJyZW50bHkgZXhlY3V0aW5nIENvZGVCbG9ja3MgdG8gdGhlIHJlbWVtYmVyZWQgc2V0IHRvIGJl
IAogICAgIC8vIHJlLXNjYW5uZWQgZHVyaW5nIHRoZSBuZXh0IGNvbGxlY3Rpb24uCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29sbGVjdGlvblNjb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgorCisjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBjb2xsZWN0
aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSBzY29wZSkKK3sKKyAgICBzd2l0Y2ggKHNjb3Bl
KSB7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46CisgICAgICAgIHJldHVybiAiRWRl
biI7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw6CisgICAgICAgIHJldHVybiAiRnVs
bCI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwor
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29sbGVjdGlvblNjb3Bl
IHNjb3BlKQoreworICAgIG91dC5wcmludChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUoc2NvcGUp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisK
K2VudW0gY2xhc3MgQ29sbGVjdGlvblNjb3BlIHsgRWRlbiwgRnVsbCB9OworCitjb25zdCBjaGFy
KiBjb2xsZWN0aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSk7CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rpb25TY29wZSk7CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVu
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6RWRlbkdD
QWN0aXZpdHlDYQogCiB2b2lkIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigp
CiB7Ci0gICAgbV92bS0+aGVhcC5jb2xsZWN0KEVkZW5Db2xsZWN0aW9uKTsKKyAgICBtX3ZtLT5o
ZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogZG91YmxlIEVkZW5HQ0Fj
dGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24g
MjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrOjpkb0NvbGxlY3RpbwogICAgIH0KICNlbmRpZgogCi0gICAgaGVhcC5jb2xsZWN0
KEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBoZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpGdWxs
KTsKIH0KIAogZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAkocmV2aXNpb24gMjA3NjQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUeXBlTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIZWFwT3Bl
cmF0aW9uLmgiCisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSwyMCArMzUsMjQgQEAgc3RydWN0
IEdDVHlwZU1hcCB7CiAgICAgVCBlZGVuOwogICAgIFQgZnVsbDsKICAgICAKLSAgICBUJiBvcGVy
YXRvcltdKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQorICAgIFQmIG9wZXJhdG9yW10oQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogICAgIHsKLSAgICAgICAgaWYgKG9wZXJhdGlvbiA9PSBGdWxsQ29s
bGVjdGlvbikKKyAgICAgICAgc3dpdGNoIChzY29wZSkgeworICAgICAgICBjYXNlIENvbGxlY3Rp
b25TY29wZTo6RnVsbDoKICAgICAgICAgICAgIHJldHVybiBmdWxsOwotICAgICAgICBBU1NFUlQo
b3BlcmF0aW9uID09IEVkZW5Db2xsZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGVkZW47CisgICAg
ICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgorICAgICAgICAgICAgcmV0dXJuIGVkZW47
CisgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgY29uc3QgVCYgb3BlcmF0b3JbXShIZWFwT3Bl
cmF0aW9uIG9wZXJhdGlvbikgY29uc3QKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKENvbGxlY3Rp
b25TY29wZSBzY29wZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChvcGVyYXRpb24gPT0gRnVs
bENvbGxlY3Rpb24pCisgICAgICAgIHN3aXRjaCAoc2NvcGUpIHsKKyAgICAgICAgY2FzZSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGw6CiAgICAgICAgICAgICByZXR1cm4gZnVsbDsKLSAgICAgICAgQVNT
RVJUKG9wZXJhdGlvbiA9PSBFZGVuQ29sbGVjdGlvbik7Ci0gICAgICAgIHJldHVybiBlZGVuOwor
ICAgICAgICBjYXNlIENvbGxlY3Rpb25TY29wZTo6RWRlbjoKKyAgICAgICAgICAgIHJldHVybiBl
ZGVuOworICAgICAgICB9CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSGVh
cFNuYXBzaG90LmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJIZWFw
VmVyaWZpZXIuaCIKKyNpbmNsdWRlICJIZWxwaW5nR0NTY29wZS5oIgogI2luY2x1ZGUgIkluY3Jl
bWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklU
U3R1YlJvdXRpbmVTZXQuaCIKQEAgLTE0MCwxNSArMTQxLDE1IEBAIEhhc2hNYXA8Y29uc3QgY2hh
ciosIEdDVHlwZU1hcDxTaW1wbGVTdGEKICAgICByZXR1cm4gKnJlc3VsdDsKIH0KIAotU2ltcGxl
U3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIEhlYXBPcGVyYXRpb24gb3BlcmF0
aW9uKQorU2ltcGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIENvbGxlY3Rp
b25TY29wZSBzY29wZSkKIHsKLSAgICByZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwgR0NU
eXBlTWFwPFNpbXBsZVN0YXRzPigpKS5pdGVyYXRvci0+dmFsdWVbb3BlcmF0aW9uXTsKKyAgICBy
ZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwgR0NUeXBlTWFwPFNpbXBsZVN0YXRzPigpKS5p
dGVyYXRvci0+dmFsdWVbc2NvcGVdOwogfQogCiBjbGFzcyBUaW1pbmdTY29wZSB7CiBwdWJsaWM6
Ci0gICAgVGltaW5nU2NvcGUoSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IGNoYXIqIG5h
bWUpCi0gICAgICAgIDogbV9vcGVyYXRpb24ob3BlcmF0aW9uKQorICAgIFRpbWluZ1Njb3BlKE9w
dGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgICAg
IDogbV9zY29wZShzY29wZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7CiAgICAgICAg
IGlmIChtZWFzdXJlUGhhc2VUaW1pbmcoKSkKQEAgLTE1NiwxOCArMTU3LDE4IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgVGltaW5nU2NvcGUoSGVhcCYgaGVhcCwgY29uc3QgY2hhciogbmFt
ZSkKLSAgICAgICAgOiBUaW1pbmdTY29wZShoZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSwgbmFt
ZSkKKyAgICAgICAgOiBUaW1pbmdTY29wZShoZWFwLmNvbGxlY3Rpb25TY29wZSgpLCBuYW1lKQog
ICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRPcGVyYXRpb24oSGVhcE9wZXJhdGlvbiBv
cGVyYXRpb24pCisgICAgdm9pZCBzZXRTY29wZShPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNj
b3BlKQogICAgIHsKLSAgICAgICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247CisgICAgICAgIG1f
c2NvcGUgPSBzY29wZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRPcGVyYXRpb24oSGVhcCYg
aGVhcCkKKyAgICB2b2lkIHNldFNjb3BlKEhlYXAmIGhlYXApCiAgICAgewotICAgICAgICBzZXRP
cGVyYXRpb24oaGVhcC5vcGVyYXRpb25JblByb2dyZXNzKCkpOworICAgICAgICBzZXRTY29wZSho
ZWFwLmNvbGxlY3Rpb25TY29wZSgpKTsKICAgICB9CiAgICAgCiAgICAgflRpbWluZ1Njb3BlKCkK
QEAgLTE3NSwxMyArMTc2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1lYXN1cmVQaGFzZVRp
bWluZygpKSB7CiAgICAgICAgICAgICBkb3VibGUgYWZ0ZXIgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWVNUygpOwogICAgICAgICAgICAgZG91YmxlIHRpbWluZyA9IGFmdGVyIC0gbV9iZWZv
cmU7Ci0gICAgICAgICAgICBTaW1wbGVTdGF0cyYgc3RhdHMgPSB0aW1pbmdTdGF0cyhtX25hbWUs
IG1fb3BlcmF0aW9uKTsKKyAgICAgICAgICAgIFNpbXBsZVN0YXRzJiBzdGF0cyA9IHRpbWluZ1N0
YXRzKG1fbmFtZSwgKm1fc2NvcGUpOwogICAgICAgICAgICAgc3RhdHMuYWRkKHRpbWluZyk7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbR0M6IiwgbV9vcGVyYXRpb24sICJdICIsIG1fbmFtZSwgIiB0
b29rOiAiLCB0aW1pbmcsICIgbXMgKGF2ZXJhZ2UgIiwgc3RhdHMubWVhbigpLCAiIG1zKS5cbiIp
OworICAgICAgICAgICAgZGF0YUxvZygiW0dDOiIsICptX3Njb3BlLCAiXSAiLCBtX25hbWUsICIg
dG9vazogIiwgdGltaW5nLCAiIG1zIChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcykuXG4i
KTsKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgSGVhcE9wZXJhdGlvbiBtX29wZXJh
dGlvbjsKKyAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fc2NvcGU7CiAgICAgZG91Ymxl
IG1fYmVmb3JlOwogICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKIH07CkBAIC0yMDMsNyArMjA0LDYg
QEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9tYXhIZWFw
U2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24o
ZmFsc2UpCiAgICAgLCBtX3RvdGFsQnl0ZXNWaXNpdGVkKDApCi0gICAgLCBtX29wZXJhdGlvbklu
UHJvZ3Jlc3MoTm9PcGVyYXRpb24pCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCiAgICAgLCBt
X2V4dHJhTWVtb3J5U2l6ZSgwKQogICAgICwgbV9kZXByZWNhdGVkRXh0cmFNZW1vcnlTaXplKDAp
CkBAIC0yNTIsNyArMjUyLDggQEAgYm9vbCBIZWFwOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGlu
ZSkKIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKCFtX3ZtLT5lbnRyeVNjb3BlKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rp
b25TY29wZSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9tdXRhdG9yU3RhdGUgPT0gTXV0YXRvclN0
YXRlOjpSdW5uaW5nKTsKIAogICAgIG1fYXJyYXlCdWZmZXJzLmxhc3RDaGFuY2VUb0ZpbmFsaXpl
KCk7CiAgICAgbV9jb2RlQmxvY2tzLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwpAQCAtNDA4LDcg
KzQwOSw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKGRvdWJsZSBnY1N0YXJ0VGltZSwKICAgICAg
ICAgfQogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAotICAgICAgICBpZiAo
bV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGlmICht
X2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgICAg
IG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKICAgICAgICAgICAgIG1fc2xvdFZpc2l0b3IuY2xlYXJN
YXJrU3RhY2soKTsKICAgICAgICAgfQpAQCAtNDMxLDcgKzQzMiw3IEBAIHZvaWQgSGVhcDo6bWFy
a1Jvb3RzKGRvdWJsZSBnY1N0YXJ0VGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RW
aXNpdG9yID0gbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy50YWtlTGFzdCgpOwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIFdURjo6cmVnaXN0ZXJHQ1RocmVhZCgp
OworICAgICAgICAgICAgICAgIFdURjo6cmVnaXN0ZXJHQ1RocmVhZChHQ1RocmVhZFR5cGU6Okhl
bHBlcik7CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFBhcmFsbGVs
TW9kZUVuYWJsZXIgcGFyYWxsZWxNb2RlRW5hYmxlcigqc2xvdFZpc2l0b3IpOwpAQCAtNTI2LDcg
KzUyNyw3IEBAIHZvaWQgSGVhcDo6Z2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKENvbnMKIHZvaWQg
SGVhcDo6YmVnaW5NYXJraW5nKCkKIHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhp
cywgIkhlYXA6OmJlZ2luTWFya2luZyIpOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rp
b25TY29wZTo6RnVsbCkKICAgICAgICAgbV9jb2RlQmxvY2tzLT5jbGVhck1hcmtzRm9yRnVsbENv
bGxlY3Rpb24oKTsKICAgICAKICAgICB7CkBAIC01NDQsNyArNTQ1LDcgQEAgdm9pZCBIZWFwOjp2
aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCiAKIHZvaWQgSGVhcDo6dmlzaXRTbWFsbFN0cmlu
Z3MoKQogewotICAgIGlmICghbV92bS0+c21hbGxTdHJpbmdzLm5lZWRzVG9CZVZpc2l0ZWQobV9v
cGVyYXRpb25JblByb2dyZXNzKSkKKyAgICBpZiAoIW1fdm0tPnNtYWxsU3RyaW5ncy5uZWVkc1Rv
QmVWaXNpdGVkKCptX2NvbGxlY3Rpb25TY29wZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
dm0tPnNtYWxsU3RyaW5ncy52aXNpdFN0cm9uZ1JlZmVyZW5jZXMobV9zbG90VmlzaXRvcik7CkBA
IC03NjMsNyArNzY0LDcgQEAgdm9pZCBIZWFwOjp1cGRhdGVPYmplY3RDb3VudHMoZG91YmxlIGdj
UwogICAgICAgICBkYXRhTG9nRigiXG5OdW1iZXIgb2YgbGl2ZSBPYmplY3RzIGFmdGVyIEdDICVs
dSwgdG9vayAlLjZmIHNlY3NcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZpc2l0Q291
bnQpLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gZ2NTdGFydFRpbWUpOwog
ICAgIH0KICAgICAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0
aW9uKQorICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
CiAgICAgICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQgPSAwOwogCiAgICAgbV90b3RhbEJ5dGVzVmlz
aXRlZFRoaXNDeWNsZSA9IG1fc2xvdFZpc2l0b3IuYnl0ZXNWaXNpdGVkKCkgKyB0aHJlYWRCeXRl
c1Zpc2l0ZWQoKTsKQEAgLTg3MSw3ICs4NzIsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVC
bG9ja3MoKQogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVubmluZywgaXQncyBub3Qgc2FmZSB0
byBkZWxldGUgYWxsIEphdmFTY3JpcHQgY29kZSwgc2luY2UKICAgICAvLyB3ZSdsbCBlbmQgdXAg
cmV0dXJuaW5nIHRvIGRlbGV0ZWQgY29kZS4KICAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+ZW50
cnlTY29wZSk7Ci0gICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlv
bik7CisgICAgQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAKICAgICBjb21wbGV0ZUFsbEpJ
VFBsYW5zKCk7CiAKQEAgLTkwOCw3ICs5MDksNyBAQCB2b2lkIEhlYXA6OmNsZWFyVW5tYXJrZWRF
eGVjdXRhYmxlcygpCiB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKIHsK
ICAgICBjbGVhclVubWFya2VkRXhlY3V0YWJsZXMoKTsKLSAgICBtX2NvZGVCbG9ja3MtPmRlbGV0
ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyk7CisgICAgbV9j
b2RlQmxvY2tzLT5kZWxldGVVbm1hcmtlZEFuZFVucmVmZXJlbmNlZCgqbV9jb2xsZWN0aW9uU2Nv
cGUpOwogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHVi
Um91dGluZXMoKTsKIH0KIApAQCAtOTMyLDcgKzkzMyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFs
bEdhcmJhZ2UoKQogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoRnVsbENvbGxlY3Rpb24pOworICAgIGNvbGxl
Y3RXaXRob3V0QW55U3dlZXAoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKIAogICAgIERlZmVyR0NG
b3JBV2hpbGUgZGVmZXJHQygqdGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUlt
bW9ydGFsT2JqZWN0cygpKSkKQEAgLTk1NSwyOSArOTU2LDI5IEBAIHZvaWQgSGVhcDo6Y29sbGVj
dEFsbEdhcmJhZ2UoKQogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiB9
CiAKLXZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQordm9p
ZCBIZWFwOjpjb2xsZWN0KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICghbV9p
c1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKLQotICAgIGNvbGxlY3RXaXRob3V0QW55
U3dlZXAoY29sbGVjdGlvblR5cGUpOworICAgIAorICAgIGNvbGxlY3RXaXRob3V0QW55U3dlZXAo
c2NvcGUpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0V2l0aG91dEFueVN3
ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCitORVZFUl9JTkxJTkUgdm9pZCBIZWFw
Ojpjb2xsZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUp
CiB7CiAgICAgdm9pZCogc3RhY2tUb3A7CiAgICAgQUxMT0NBVEVfQU5EX0dFVF9SRUdJU1RFUl9T
VEFURShyZWdpc3RlcnMpOwogCi0gICAgY29sbGVjdEltcGwoY29sbGVjdGlvblR5cGUsIHd0ZlRo
cmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3RhY2tUb3AsIHJlZ2lzdGVycyk7CisgICAg
Y29sbGVjdEltcGwoc2NvcGUsIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3Rh
Y2tUb3AsIHJlZ2lzdGVycyk7CiAKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0obV92bSk7CiB9CiAK
LU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXBPcGVyYXRpb24gY29sbGVj
dGlvblR5cGUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVh
ZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQorTkVWRVJfSU5MSU5FIHZv
aWQgSGVhcDo6Y29sbGVjdEltcGwoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSwgdm9p
ZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJT
dGF0ZSYgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIFRpbWluZ1Njb3BlIGNvbGxlY3RJbXBsVGltaW5n
U2NvcGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCIpOworICAgIFRpbWluZ1Nj
b3BlIGNvbGxlY3RJbXBsVGltaW5nU2NvcGUoc2NvcGUsICJIZWFwOjpjb2xsZWN0SW1wbCIpOwog
ICAgIAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBH
QyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CkBAIC05OTAsODEgKzk5MSw3OCBAQCBORVZFUl9J
TkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgfQogICAgIAogICAgIGRvdWJs
ZSBnY1N0YXJ0VGltZTsKLSAgICB7Ci0gICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGltaW5nU2Nv
cGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCBiZWZvcmUgbWFya1Jvb3RzIik7
Ci0KLSAgICAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7Ci0gICAgICAgICAgICBEZWZl
ckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7Ci0gICAgICAgICAgICB2bSgpLT50eXBlUHJvZmls
ZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJHQyIpKTsKLSAgICAgICAg
fQotCisgICAgCisgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIERlZmVy
R0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKKyAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9n
KCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CisgICAgfQorICAgIAog
I2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUg
YXdoaWxlKCp0aGlzKTsKLSAgICAgICAgICAgIEpJVFdvcmtsaXN0OjppbnN0YW5jZSgpLT5jb21w
bGV0ZUFsbEZvclZNKCptX3ZtKTsKLSAgICAgICAgfQorICAgIHsKKyAgICAgICAgRGVmZXJHQ0Zv
ckFXaGlsZSBhd2hpbGUoKnRoaXMpOworICAgICAgICBKSVRXb3JrbGlzdDo6aW5zdGFuY2UoKS0+
Y29tcGxldGVBbGxGb3JWTSgqbV92bSk7CisgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0K
LSAgICAgICAgdm0oKS0+c2hhZG93Q2hpY2tlbigpLnVwZGF0ZSgqdm0oKSwgdm0oKS0+dG9wQ2Fs
bEZyYW1lKTsKLQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZWZlcnJhbERlcHRoKTsKLSAg
ICAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICAgICAgQVNTRVJUKG1faXNTYWZlVG9D
b2xsZWN0KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09
IE5vT3BlcmF0aW9uKTsKLQotICAgICAgICBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAg
ICAgIHdpbGxTdGFydENvbGxlY3Rpb24oY29sbGVjdGlvblR5cGUpOworICAgIAorICAgIHZtKCkt
PnNoYWRvd0NoaWNrZW4oKS51cGRhdGUoKnZtKCksIHZtKCktPnRvcENhbGxGcmFtZSk7CisgICAg
CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJyYWxEZXB0aCk7CisgICAgQVNTRVJUKHZtKCkt
PmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
KCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOworICAgIEFTU0VSVChtX2lzU2FmZVRvQ29sbGVjdCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIW1fY29sbGVjdGlvblNjb3BlKTsKKyAgICAKKyAgICBzdXNwZW5kQ29tcGlsZXJUaHJlYWRz
KCk7CisgICAgd2lsbFN0YXJ0Q29sbGVjdGlvbihzY29wZSk7CisgICAgeworICAgICAgICBIZWxw
aW5nR0NTY29wZSBoZWxwaW5nSGVhcFNjb3BlKCp0aGlzKTsKKyAgICAgICAgCisgICAgICAgIGNv
bGxlY3RJbXBsVGltaW5nU2NvcGUuc2V0U2NvcGUoKnRoaXMpOwogICAgICAgICAKLSAgICAgICAg
Y29sbGVjdEltcGxUaW1pbmdTY29wZS5zZXRPcGVyYXRpb24oKnRoaXMpOwotICAgICAgICBlYXJs
eVRpbWluZ1Njb3BlLnNldE9wZXJhdGlvbigqdGhpcyk7Ci0KICAgICAgICAgZ2NTdGFydFRpbWUg
PSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgICAgICBpZiAobV92ZXJp
ZmllcikgewogICAgICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgbGl2ZSBvYmplY3RzIGZyb20gdGhl
IGxhc3QgR0MgY3ljbGUgaGF2ZW4ndCBiZWVuIGNvcnJ1cHRlZCBieQogICAgICAgICAgICAgLy8g
bXV0YXRvcnMgYmVmb3JlIHdlIGJlZ2luIHRoaXMgbmV3IEdDIGN5Y2xlLgogICAgICAgICAgICAg
bV92ZXJpZmllci0+dmVyaWZ5KEhlYXBWZXJpZmllcjo6UGhhc2U6OkJlZm9yZUdDKTsKLQorICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX3ZlcmlmaWVyLT5pbml0aWFsaXplR0NDeWNsZSgpOwog
ICAgICAgICAgICAgbV92ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMoSGVhcFZlcmlmaWVyOjpQ
aGFzZTo6QmVmb3JlTWFya2luZyk7CiAgICAgICAgIH0KLQorICAgICAgICAKICAgICAgICAgZmx1
c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgICAgICBzdG9wQWxsb2NhdGlvbigpOwogICAg
ICAgICBwcmVwYXJlRm9yTWFya2luZygpOwogICAgICAgICBmbHVzaFdyaXRlQmFycmllckJ1ZmZl
cigpOwotCisgICAgICAgIAogICAgICAgICBpZiAoSGFzT3duUHJvcGVydHlDYWNoZSogY2FjaGUg
PSB2bSgpLT5oYXNPd25Qcm9wZXJ0eUNhY2hlKCkpCiAgICAgICAgICAgICBjYWNoZS0+Y2xlYXIo
KTsKKyAgICAgICAgCisgICAgICAgIG1hcmtSb290cyhnY1N0YXJ0VGltZSwgc3RhY2tPcmlnaW4s
IHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7CisgICAgICAgIAorICAgICAgICBpZiAo
bV92ZXJpZmllcikgeworICAgICAgICAgICAgbV92ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMo
SGVhcFZlcmlmaWVyOjpQaGFzZTo6QWZ0ZXJNYXJraW5nKTsKKyAgICAgICAgICAgIG1fdmVyaWZp
ZXItPnZlcmlmeShIZWFwVmVyaWZpZXI6OlBoYXNlOjpBZnRlck1hcmtpbmcpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgICAg
ICB2bSgpLT50eXBlUHJvZmlsZXIoKS0+aW52YWxpZGF0ZVR5cGVTZXRDYWNoZSgpOworICAgICAg
ICAKKyAgICAgICAgcmVhcFdlYWtIYW5kbGVzKCk7CisgICAgICAgIHBydW5lU3RhbGVFbnRyaWVz
RnJvbVdlYWtHQ01hcHMoKTsKKyAgICAgICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKKyAgICAgICAg
c25hcHNob3RVbnN3ZXB0KCk7CisgICAgICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXpl
cnMoKTsKKyAgICAgICAgcmVtb3ZlRGVhZENvbXBpbGVyV29ya2xpc3RFbnRyaWVzKCk7CisgICAg
ICAgIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7CisgICAgICAgIGRlbGV0ZVNvdXJjZVBy
b3ZpZGVyQ2FjaGVzKCk7CisgICAgICAgIAorICAgICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVw
ZXIoKTsKKyAgICAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRp
bmcodGhpcyk7CisgICAgICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmco
KTsKKyAgICAgICAgCisgICAgICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CisgICAgICAgIHVw
ZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKICAgICB9Ci0KLSAgICBtYXJrUm9vdHMoZ2NTdGFydFRp
bWUsIHN0YWNrT3JpZ2luLCBzdGFja1RvcCwgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpOwotICAgIAot
ICAgIFRpbWluZ1Njb3BlIGxhdGVUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OmNvbGxlY3RJbXBs
IGFmdGVyIG1hcmtSb290cyIpOwotCi0gICAgaWYgKG1fdmVyaWZpZXIpIHsKLSAgICAgICAgbV92
ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMoSGVhcFZlcmlmaWVyOjpQaGFzZTo6QWZ0ZXJNYXJr
aW5nKTsKLSAgICAgICAgbV92ZXJpZmllci0+dmVyaWZ5KEhlYXBWZXJpZmllcjo6UGhhc2U6OkFm
dGVyTWFya2luZyk7Ci0gICAgfQotCi0gICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQotICAg
ICAgICB2bSgpLT50eXBlUHJvZmlsZXIoKS0+aW52YWxpZGF0ZVR5cGVTZXRDYWNoZSgpOwotCi0g
ICAgcmVhcFdlYWtIYW5kbGVzKCk7Ci0gICAgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFw
cygpOwotICAgIHN3ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgc25hcHNob3RVbnN3ZXB0KCk7Ci0g
ICAgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwotICAgIHJlbW92ZURlYWRDb21w
aWxlcldvcmtsaXN0RW50cmllcygpOwotICAgIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7
Ci0gICAgZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKTsKLQotICAgIG5vdGlmeUluY3JlbWVu
dGFsU3dlZXBlcigpOwotICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhl
Y3V0aW5nKHRoaXMpOwotICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmco
KTsKLQotICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7Ci0gICAgdXBkYXRlQWxsb2NhdGlvbkxp
bWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUpOwogICAgIHJlc3Vt
ZUNvbXBpbGVyVGhyZWFkcygpOwogICAgIHN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpOwpAQCAtMTEw
MywyMiArMTEwMSwyMiBAQCB2b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNv
bGxlY3Rpb25UeXBlKQordm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENv
bGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAg
ICAgIGRhdGFMb2coIj0+ICIpOwogICAgIAotICAgIGlmIChzaG91bGREb0Z1bGxDb2xsZWN0aW9u
KGNvbGxlY3Rpb25UeXBlKSkgewotICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBGdWxs
Q29sbGVjdGlvbjsKKyAgICBpZiAoc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihzY29wZSkpIHsKKyAg
ICAgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw7CiAgICAgICAg
IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IGZhbHNlOwogICAgICAgICBpZiAoT3B0aW9uczo6
bG9nR0MoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bGxDb2xsZWN0aW9uLCAiKTsKICAgICB9
IGVsc2UgewotICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBFZGVuQ29sbGVjdGlvbjsK
KyAgICAgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkVkZW47CiAgICAg
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICAgICAgZGF0YUxvZygiRWRlbkNvbGxl
Y3Rpb24sICIpOwogICAgIH0KLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxD
b2xsZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29w
ZTo6RnVsbCkgewogICAgICAgICBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVB
ZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICAgICAgbV9l
eHRyYU1lbW9yeVNpemUgPSAwOwogICAgICAgICBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUg
PSAwOwpAQCAtMTEyOSw3ICsxMTI3LDcgQEAgdm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9u
KEhlYXBPcGVyYQogICAgICAgICBpZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKICAgICAgICAg
ICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbik7
CisgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVk
ZW4pOwogICAgICAgICBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3QgPSBtX3NpemVBZnRlckxh
c3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICB9CiAKQEAgLTExNDcs
NyArMTE0NSw3IEBAIHZvaWQgSGVhcDo6Zmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpCiAKIHZv
aWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKQogewotICAgIGlmIChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9uU2Nv
cGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKSB7CiAgICAgICAgIG1fd3JpdGVCYXJyaWVyQnVm
ZmVyLmZsdXNoKCp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExNzEsNyArMTE2
OSw3IEBAIHZvaWQgSGVhcDo6cmVhcFdlYWtIYW5kbGVzKCkKIAogdm9pZCBIZWFwOjpwcnVuZVN0
YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dy
ZXNzICE9IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSAhPSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8mIHBydW5l
Q2FsbGJhY2sgOiBtX3dlYWtHQ01hcHMudmFsdWVzKCkpCiAgICAgICAgIHBydW5lQ2FsbGJhY2so
KTsKQEAgLTExOTUsNyArMTE5Myw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlkZXJD
YWNoZXMoKQogCiB2b2lkIEhlYXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiB7Ci0gICAg
aWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlmICht
X2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgaWYg
KCFtX2xvZ2ljYWxseUVtcHR5V2Vha0Jsb2Nrcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2lu
ZGV4T2ZOZXh0TG9naWNhbGx5RW1wdHlXZWFrQmxvY2tUb1N3ZWVwID0gMDsKICAgICB9CkBAIC0x
MjQzLDcgKzEyNDEsNyBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQogICAg
IGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYgY3VycmVudEhlYXBTaXplID4gT3B0aW9u
czo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICBIZWFwU3RhdGlzdGljczo6ZXhpdFdpdGhGYWls
dXJlKCk7CiAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9u
KSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkg
ewogICAgICAgICAvLyBUbyBhdm9pZCBwYXRob2xvZ2ljYWwgR0MgY2h1cm4gaW4gdmVyeSBzbWFs
bCBhbmQgdmVyeSBsYXJnZSBoZWFwcywgd2Ugc2V0CiAgICAgICAgIC8vIHRoZSBuZXcgYWxsb2Nh
dGlvbiBsaW1pdCBiYXNlZCBvbiB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwLCB3aXRoIGEK
ICAgICAgICAgLy8gZml4ZWQgbWluaW11bS4KQEAgLTEyOTgsOCArMTI5Niw4IEBAIHZvaWQgSGVh
cDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rp
b24oZG91YmxlIGdjU3RhcnRUaW1lKQogewogICAgIGRvdWJsZSBnY0VuZFRpbWUgPSBXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIEhlYXBPcGVyYXRpb24gb3BlcmF0aW9u
ID0gbV9vcGVyYXRpb25JblByb2dyZXNzOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlID0gKm1fY29sbGVj
dGlvblNjb3BlOworICAgIGlmIChzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAg
ICAgIG1fbGFzdEZ1bGxHQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1lOwogICAgIGVs
c2UKICAgICAgICAgbV9sYXN0RWRlbkdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0gZ2NTdGFydFRpbWU7
CkBAIC0xMzIyLDExICsxMzIwLDExIEBAIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29sbGVjdGlvbihk
b3VibGUgZ2MKICAgICAgICAgcmVtb3ZlRGVhZEhlYXBTbmFwc2hvdE5vZGVzKCpoZWFwUHJvZmls
ZXIpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9
PSBFZGVuQ29sbGVjdGlvbiB8fCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rp
b24pOwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29sbGVjdGlvblNjb3BlKTsKKyAgICBtX2NvbGxlY3Rpb25TY29wZSA9IE51
bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAg
IG9ic2VydmVyLT5kaWRHYXJiYWdlQ29sbGVjdChvcGVyYXRpb24pOworICAgICAgICBvYnNlcnZl
ci0+ZGlkR2FyYmFnZUNvbGxlY3Qoc2NvcGUpOwogfQogCiB2b2lkIEhlYXA6OnJlc3VtZUNvbXBp
bGVyVGhyZWFkcygpCkBAIC0xMzg4LDcgKzEzODYsNyBAQCBib29sIEhlYXA6OmlzVmFsaWRBbGxv
Y2F0aW9uKHNpemVfdCkKICAgICBpZiAoIWlzVmFsaWRUaHJlYWRTdGF0ZShtX3ZtKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09w
ZXJhdGlvbikKKyAgICBpZiAoaXNDdXJyZW50VGhyZWFkQnVzeSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDY1LDI0ICsxNDYzLDE0IEBAIHZv
aWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoSlNDZWwKICAgICBtX3dyaXRlQmFycmll
ckJ1ZmZlci5hZGQoY2VsbCk7CiB9CiAKLWJvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlv
bihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSBjb25zdAorYm9vbCBIZWFw
OjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUp
IGNvbnN0CiB7CiAgICAgaWYgKCFPcHRpb25zOjp1c2VHZW5lcmF0aW9uYWxHQygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIHN3aXRjaCAocmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpIHsK
LSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2Fz
ZSBGdWxsQ29sbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBBbnlDb2xs
ZWN0aW9uOgorICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybiBtX3Nob3VsZERvRnVsbENv
bGxlY3Rpb247Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKnNjb3BlID09IENv
bGxlY3Rpb25TY29wZTo6RnVsbDsKIH0KIAogdm9pZCBIZWFwOjphZGRMb2dpY2FsbHlFbXB0eVdl
YWtCbG9jayhXZWFrQmxvY2sqIGJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNyArMjIsMTggQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIgogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgog
I2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCiAjaW5jbHVkZSAiSGVhcE9ic2VydmVyLmgiCi0jaW5j
bHVkZSAiSGVhcE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkxpc3RhYmxlSGFuZGxlci5oIgogI2lu
Y2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5o
IgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIK
ICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgogI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZUlEVGFibGUuaCIKQEAgLTQ4LDcgKzQ5LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIEFsbG9jYXRpb25TY29wZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENvZGVCbG9j
a1NldDsKIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0OwpAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBI
ZWFwOwogY2xhc3MgSGVhcFByb2ZpbGVyOwogY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogY2xhc3Mg
SGVhcFZlcmlmaWVyOworY2xhc3MgSGVscGluZ0dDU2NvcGU7CiBjbGFzcyBJbmNyZW1lbnRhbFN3
ZWVwZXI7CiBjbGFzcyBKSVRTdHViUm91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwpA
QCAtMTM5LDExICsxNDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoSGVhcE9i
c2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIpOyB9CiAgICAg
dm9pZCByZW1vdmVPYnNlcnZlcihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJz
LnJlbW92ZUZpcnN0KG9ic2VydmVyKTsgfQogCi0gICAgLy8gdHJ1ZSBpZiBjb2xsZWN0aW9uIGlz
IGluIHByb2dyZXNzCi0gICAgYm9vbCBpc0NvbGxlY3RpbmcoKTsKLSAgICBIZWFwT3BlcmF0aW9u
IG9wZXJhdGlvbkluUHJvZ3Jlc3MoKSB7IHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7IH0K
LSAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVz
cwotICAgIGJvb2wgaXNCdXN5KCk7CisgICAgTXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbXV0YXRvclN0YXRlOyB9CisgICAgT3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiBjb2xsZWN0aW9uU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsg
fQorCisgICAgLy8gV2UncmUgYWx3YXlzIGJ1c3kgb24gdGhlIGNvbGxlY3Rpb24gdGhyZWFkcy4g
T24gdGhlIG1haW4gdGhyZWFkLCB0aGlzIHJldHVybnMgdHJ1ZSBpZiB3ZSdyZQorICAgIC8vIGhl
bHBpbmcgaGVhcC4KKyAgICBib29sIGlzQ3VycmVudFRocmVhZEJ1c3koKTsKKyAgICAKICAgICBN
YXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Io
KSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVj
dG9yKCk7IH0KICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0RGVz
dHJ1Y3RvcigpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aERl
c3RydWN0b3IoKTsgfQogICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhp
bGlhcnlEYXRhKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvckF1eGlsaWFyeURh
dGEoKTsgfQpAQCAtMTcxLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKICAgICBib29sIHNob3VsZENvbGxlY3QoKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0
aW9uVHlwZSA9IEFueUNvbGxlY3Rpb24pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29s
bGVjdChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+ID0gTnVsbG9wdCk7CiAgICAgYm9vbCBjb2xs
ZWN0SWZOZWNlc3NhcnlPckRlZmVyKEdDRGVmZXJyYWxDb250ZXh0KiA9IG51bGxwdHIpOyAvLyBS
ZXR1cm5zIHRydWUgaWYgaXQgZGlkIGNvbGxlY3QuCiAgICAgdm9pZCBjb2xsZWN0QWNjb3JkaW5n
VG9EZWZlckdDUHJvYmFiaWxpdHkoKTsKIApAQCAtMjY4LDcgKzI3MSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCB1bnNpZ25lZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0
dXJuICZtX2JhcnJpZXJUaHJlc2hvbGQ7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
QWxsb2NhdGlvblNjb3BlOworICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW5nU2NvcGU7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICBmcmllbmQgY2xhc3MgRGVmZXJHQzsKICAgICBm
cmllbmQgY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZTsKQEAgLTI3OCw2ICsyODEsNyBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVTZXQ7CiAgICAgZnJpZW5kIGNsYXNzIEhlYXBVdGls
OwogICAgIGZyaWVuZCBjbGFzcyBIZWFwVmVyaWZpZXI7CisgICAgZnJpZW5kIGNsYXNzIEhlbHBp
bmdHQ1Njb3BlOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViUm91dGluZTsKICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFj
ZTsKQEAgLTI5Myw3ICsyOTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwg
R0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0V2l0aG91dEFu
eVN3ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKKyAg
ICB2b2lkIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9
IE51bGxvcHQpOwogCiAgICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOyAv
LyBGb3IgdXNlIHdpdGggb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzLgogICAgIHZvaWQqIGFsbG9j
YXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0
aG91dCBkZXN0cnVjdG9ycy4KQEAgLTMxMiwxMCArMzE2LDEwIEBAIHByaXZhdGU6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNp
emVfdCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXByZWNhdGVkUmVwb3J0RXh0cmFN
ZW1vcnlTbG93Q2FzZShzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0SW1wbChIZWFwT3BlcmF0
aW9uLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpS
ZWdpc3RlclN0YXRlJik7CisgICAgdm9pZCBjb2xsZWN0SW1wbChPcHRpb25hbDxDb2xsZWN0aW9u
U2NvcGU+LCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRz
OjpSZWdpc3RlclN0YXRlJik7CiAKICAgICB2b2lkIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsK
LSAgICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlw
ZSk7CisgICAgdm9pZCB3aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29w
ZT4pOwogICAgIHZvaWQgZmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgIHZvaWQgZmx1
c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW9uKCk7CkBAIC0z
NjYsNyArMzcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlX
ZWFrQmxvY2tzKCk7CiAgICAgYm9vbCBzd2VlcE5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jaygp
OwogCi0gICAgYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVz
dGVkQ29sbGVjdGlvblR5cGUpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlv
bihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHJlcXVlc3RlZENvbGxlY3Rpb25TY29wZSkgY29u
c3Q7CiAKICAgICB2b2lkIGluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKICAgICB2b2lkIGRlY3Jl
bWVudERlZmVycmFsRGVwdGgoKTsKQEAgLTM5NCw3ICszOTgsOCBAQCBwcml2YXRlOgogICAgIHNp
emVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVkOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVk
VGhpc0N5Y2xlOwogICAgIAotICAgIEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNz
OworICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9jb2xsZWN0aW9uU2NvcGU7CisgICAg
TXV0YXRvclN0YXRlIG1fbXV0YXRvclN0YXRlIHsgTXV0YXRvclN0YXRlOjpSdW5uaW5nIH07CiAg
ICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2Ug
bV9vYmplY3RTcGFjZTsKICAgICBHQ0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4g
bV9hcnJheUJ1ZmZlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxp
bmVzLmgJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDIxICs0NSwxNiBAQCBpbmxpbmUgYm9v
bCBIZWFwOjpzaG91bGRDb2xsZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
bV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9vcGVy
YXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChjb2xsZWN0aW9uU2NvcGUo
KSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdHQykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCiAgICAgICAg
IHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6
ZSgpOwogICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID4gbV9tYXhFZGVuU2l6
ZTsKIH0KIAotaW5saW5lIGJvb2wgSGVhcDo6aXNCdXN5KCkKK2lubGluZSBib29sIEhlYXA6Omlz
Q3VycmVudFRocmVhZEJ1c3koKQogewotICAgIHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
IT0gTm9PcGVyYXRpb247Ci19Ci0KLWlubGluZSBib29sIEhlYXA6OmlzQ29sbGVjdGluZygpCi17
Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbiB8fCBt
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb247CisgICAgcmV0dXJuIG1heUJl
R0NUaHJlYWQoKSB8fCBtdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmc7CiB9
CiAKIEFMV0FZU19JTkxJTkUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBIZWFwQ2VsbCogY2VsbCkK
QEAgLTc2LDcgKzcxLDcgQEAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSlNWYWx1ZSB2
KQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcmF3Q2Vs
bCkKIHsKLSAgICBBU1NFUlQoIW1heUJlR0NUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1heUJlR0NU
aHJlYWQoKSAhPSBHQ1RocmVhZFR5cGU6OkhlbHBlcik7CiAgICAgSGVhcENlbGwqIGNlbGwgPSBi
aXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKTsKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFs
bG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFy
a2VkKCk7CkBAIC0xNjEsNyArMTU2LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFN
ZW1vcnlBbGxvYwogaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKENl
bGxTdGF0ZSBvbGRTdGF0ZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBkb3VibGUtY291bnQgdGhlIGV4dHJhIG1lbW9yeSB0aGF0IHdhcyByZXBvcnRlZCBpbiBwcmV2
aW91cyBjb2xsZWN0aW9ucy4KLSAgICBpZiAob3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5D
b2xsZWN0aW9uICYmIG9sZFN0YXRlID09IENlbGxTdGF0ZTo6T2xkR3JleSkKKyAgICBpZiAoY29s
bGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuICYmIG9sZFN0YXRlID09IENl
bGxTdGF0ZTo6T2xkR3JleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2l6ZV90KiBjb3VudGVy
ID0gJm1fZXh0cmFNZW1vcnlTaXplOwpAQCAtMTc3LDcgKzE3Miw3IEBAIGlubGluZSB2b2lkIEhl
YXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXQKIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dGVy
bmFsTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQogewogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gZG91YmxlLWNvdW50IHRoZSBleHRlcm5hbCBtZW1vcnkgdGhh
dCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29sbGVjdGlvbnMuCi0gICAgaWYgKG9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6
Ok9sZEdyZXkpCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dGVybmFsTWVtb3J5U2l6ZTsKQEAgLTM3Miw3
ICszNjcsNyBAQCBpbmxpbmUgYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlCiAKIGlu
bGluZSB2b2lkIEhlYXA6OmNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSgpCiB7
Ci0gICAgaWYgKGlzRGVmZXJyZWQoKSB8fCAhbV9pc1NhZmVUb0NvbGxlY3QgfHwgbV9vcGVyYXRp
b25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChpc0RlZmVycmVkKCkgfHwgIW1f
aXNTYWZlVG9Db2xsZWN0IHx8IGNvbGxlY3Rpb25TY29wZSgpIHx8IG11dGF0b3JTdGF0ZSgpID09
IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmFu
ZG9tTnVtYmVyKCkgPCBPcHRpb25zOjpkZWZlckdDUHJvYmFiaWxpdHkoKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgJKHJldmlzaW9uIDIwNzY0MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSGVhcE9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIZWFwT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkhlYXBPYnNlcnZlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsR2FyYmFn
ZUNvbGxlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KEhlYXBP
cGVyYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoQ29sbGVj
dGlvblNjb3BlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyMDc2NDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCi17
Ci0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsKLSAgICBjYXNlIE5vT3BlcmF0aW9uOgotICAgICAg
ICBvdXQucHJpbnQoIk5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQWxsb2NhdGlv
bjoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBGdWxsQ29sbGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJGdWxsIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkVkZW4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKLSAgICAgICAgb3V0
LnByaW50KCJBbnkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9uIDIwNzY0
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWVudW0gSGVhcE9wZXJhdGlvbiB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0
aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rpb24sIEFueUNvbGxlY3Rpb24gfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVh
bTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SGVhcE9wZXJh
dGlvbik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mywy
NCArNDMsNiBAQCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1CiAgICAg
bV9jeWNsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4obV9udW1iZXJPZkN5Y2xlcyk7
CiB9CiAKLWNvbnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6Y29sbGVjdGlvblR5cGVOYW1lKEhlYXBP
cGVyYXRpb24gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE5vT3BlcmF0
aW9uOgotICAgICAgICByZXR1cm4gIk5vT3BlcmF0aW9uIjsKLSAgICBjYXNlIEFueUNvbGxlY3Rp
b246Ci0gICAgICAgIHJldHVybiAiQW55Q29sbGVjdGlvbiI7Ci0gICAgY2FzZSBBbGxvY2F0aW9u
OgotICAgICAgICByZXR1cm4gIkFsbG9jYXRpb24iOwotICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246
Ci0gICAgICAgIHJldHVybiAiRWRlbkNvbGxlY3Rpb24iOwotICAgIGNhc2UgRnVsbENvbGxlY3Rp
b246Ci0gICAgICAgIHJldHVybiAiRnVsbENvbGxlY3Rpb24iOwotICAgIH0KLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOyAvLyBTaWxlbmNpbmcg
YSBjb21waWxlciB3YXJuaW5nLgotfQotCiBjb25zdCBjaGFyKiBIZWFwVmVyaWZpZXI6OnBoYXNl
TmFtZShIZWFwVmVyaWZpZXI6OlBoYXNlIHBoYXNlKQogewogICAgIHN3aXRjaCAocGhhc2UpIHsK
QEAgLTgxLDcgKzYzLDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmluaXRpYWxpemVHQ0N5Y2xlKCkK
IHsKICAgICBIZWFwKiBoZWFwID0gbV9oZWFwOwogICAgIGluY3JlbWVudEN5Y2xlKCk7Ci0gICAg
Y3VycmVudEN5Y2xlKCkuY29sbGVjdGlvblR5cGUgPSBoZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCk7CisgICAgY3VycmVudEN5Y2xlKCkuc2NvcGUgPSAqaGVhcC0+Y29sbGVjdGlvblNjb3BlKCk7
CiB9CiAKIHN0cnVjdCBHYXRoZXJMaXZlT2JqRnVuY3RvciA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1
bmN0b3IgewpAQCAtMTk1LDcgKzE3Nyw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpyZXBvcnRPYmpl
Y3QoTGl2ZU9iamUKIAogICAgIGlmIChvYmpEYXRhLmlzQ29uZmlybWVkRGVhZCkgewogICAgICAg
ICBkYXRhTG9nRigiRk9VTkQgZGVhZCBvYmogJXAgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwK
LSAgICAgICAgICAgIG9iaiwgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCks
IGxpc3QubmFtZSk7CisgICAgICAgICAgICBvYmosIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29w
ZU5hbWUoY3ljbGUuc2NvcGUpLCBsaXN0Lm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMDYsNyArMTg4LDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OnJlcG9ydE9iamVjdChMaXZl
T2JqZQogICAgIGRhdGFMb2dGKCJGT1VORCBvYmogJXAgdHlwZSAnJXMnIGJ1dHRlcmZseSAlcCAo
YmFzZSAlcCkgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwKICAgICAgICAgb2JqLCBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUsCiAgICAgICAgIGJ1dHRlcmZseSwgYnV0dGVyZmx5
QmFzZSwKLSAgICAgICAgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCksIGxp
c3QubmFtZSk7CisgICAgICAgIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29wZU5hbWUoY3ljbGUu
c2NvcGUpLCBsaXN0Lm5hbWUpOwogfQogCiB2b2lkIEhlYXBWZXJpZmllcjo6Y2hlY2tJZlJlY29y
ZGVkKEpTT2JqZWN0KiBvYmopCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuaAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFZlcmlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGlj
OgogICAgIC8vIG9iamVjdCB3YXMgaW4gYW55IG9mIHRob3NlIGxpc3RzLgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY2hlY2tJZlJlY29yZGVkKEpTT2JqZWN0Kik7CiAKLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29sbGVjdGlvblR5cGVOYW1lKEhlYXBPcGVyYXRpb24pOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBwaGFzZU5hbWUoUGhhc2UpOwogCiBwcml2YXRlOgpAQCAtNjUsMTQgKzY0
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgSGVhcE9wZXJh
dGlvbiBjb2xsZWN0aW9uVHlwZTsKKyAgICAgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlOwogICAg
ICAgICBMaXZlT2JqZWN0TGlzdCBiZWZvcmU7CiAgICAgICAgIExpdmVPYmplY3RMaXN0IGFmdGVy
OwotCi0gICAgICAgIGNvbnN0IGNoYXIqIGNvbGxlY3Rpb25UeXBlTmFtZSgpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZWFwVmVyaWZpZXI6OmNvbGxlY3Rpb25UeXBlTmFt
ZShjb2xsZWN0aW9uVHlwZSk7Ci0gICAgICAgIH0KICAgICB9OwogCiAgICAgdm9pZCBpbmNyZW1l
bnRDeWNsZSgpIHsgbV9jdXJyZW50Q3ljbGUgPSAobV9jdXJyZW50Q3ljbGUgKyAxKSAlIG1fbnVt
YmVyT2ZDeWNsZXM7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlbHBpbmdH
Q1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVscGlu
Z0dDU2NvcGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWxwaW5nR0NTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhlYXAuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEhlbHBpbmdHQ1Njb3BlIHsKK3B1YmxpYzoKKyAgICBIZWxwaW5nR0NTY29wZShI
ZWFwJiBoZWFwKQorICAgICAgICA6IG1faGVhcChoZWFwKQorICAgICAgICAsIG1fb2xkU3RhdGUo
bV9oZWFwLm1fbXV0YXRvclN0YXRlKQorICAgIHsKKyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0
YXRlID0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0M7CisgICAgfQorICAgIAorICAgIH5IZWxwaW5n
R0NTY29wZSgpCisgICAgeworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3RhdGUgPSBtX29sZFN0
YXRlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBIZWFwJiBtX2hlYXA7CisgICAgTXV0YXRvclN0
YXRlIG1fb2xkU3RhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCShyZXZpc2lvbiAy
MDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTGFyZ2VBbGxvY2F0aW9uOjpy
ZWFwV2Vha1NldCgpCiAKIHZvaWQgTGFyZ2VBbGxvY2F0aW9uOjpmbGlwKCkKIHsKLSAgICBBU1NF
UlQoaGVhcCgpLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pOworICAg
IEFTU0VSVChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVs
bCk7CiAgICAgY2xlYXJNYXJrZWQoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFya2Vk
QWxsb2NhdG9yLmgiCiAKLSNpbmNsdWRlICJBbGxvY2F0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJB
bGxvY2F0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCkBAIC0xODUsNyAr
MTg1LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZG9UZQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1faGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsK
ICAgICAgICAgfQotICAgICAgICBBU1NFUlQobV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gTm9PcGVyYXRpb24pOwogICAgIH0KICAgICBpZiAoKythbGxvY2F0aW9uQ291bnQgPj0gT3B0
aW9uczo6c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzKCkpCiAgICAgICAgIGFsbG9jYXRpb25Db3Vu
dCA9IDA7CkBAIC0yMTQsMTAgKzIxMywxMCBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9j
YXRlU2xvd0Nhc2VJCiAgICAgCiAgICAgZGlkQ29uc3VtZUZyZWVMaXN0KCk7CiAgICAgCisgICAg
QWxsb2NhdGluZ1Njb3BlIGhlYWxwaW5nSGVhcCgqbV9oZWFwKTsKKwogICAgIG1faGVhcC0+Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcihkZWZlcnJhbENvbnRleHQpOwogICAgIAotICAgIEFsbG9j
YXRpb25TY29wZSBhbGxvY2F0aW9uU2NvcGUoKm1faGVhcCk7Ci0KICAgICB2b2lkKiByZXN1bHQg
PSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShy
ZXN1bHQgIT0gMCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJEZXN0
cnVjdGlvbk1vZGUuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkhlYXBDZWxs
LmgiCi0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvblN0YXR1
cy5oIgogI2luY2x1ZGUgIldlYWtTZXQuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24g
MjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFy
ZUZvckFsbG9jYXRpb24oKQogCiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0Fj
dGl2ZVdlYWtTZXRzKTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCkgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJz
ZXJ5T2Zmc2V0Rm9yU3dlZXAgPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAg
IGVsc2UKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0g
MDsKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKEhl
YXBSb290CiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKICAg
ICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rp
b24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogfQogCkBA
IC0zNjcsNyArMzY3LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKICAgICAK
ICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogICAgIAotICAgIGlmICht
X2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAo
bV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAg
ICAgIG1fYWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiB9CiAKQEAgLTM4Myw3ICszODMs
NyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzdG9wQWxsb2NhdGluZygpCiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OnByZXBhcmVGb3JNYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblBy
b2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlv
bnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiA9IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZz
ZXQ7CiAgICAgZWxzZQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29s
bGVjdGlvbiA9IDA7CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5r
KCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFw
LT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9o
ZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAg
ICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICAgICAgYWxsb2NhdG9y
LmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCk7CkBAIC01OTcsNyArNTk3LDcgQEAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogTWFya2VkU3BhY2U6OmZpbmRFbQogCiB2b2lkIE1hcmtlZFNwYWNl
OjpzbmFwc2hvdFVuc3dlcHQoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jl
c3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29w
ZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikgewogICAgICAgICBmb3JFYWNoQWxsb2NhdG9y
KAogICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3ZXB0Rm9y
RWRlbkNvbGxlY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0
b3JTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0
YXRvclN0YXRlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NdXRhdG9yU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCisK
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBN
dXRhdG9yU3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgTXV0
YXRvclN0YXRlOjpSdW5uaW5nOgorICAgICAgICBvdXQucHJpbnQoIlJ1bm5pbmciKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgTXV0YXRvclN0YXRlOjpBbGxvY2F0aW5nOgorICAgICAgICBv
dXQucHJpbnQoIkFsbG9jYXRpbmciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTXV0YXRv
clN0YXRlOjpIZWxwaW5nR0M6CisgICAgICAgIG91dC5wcmludCgiSGVscGluZ0dDIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L011dGF0b3JTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L011dGF0b3JTdGF0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL011dGF0b3JTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgTXV0
YXRvclN0YXRlIHsKKyAgICAvLyBUaGUgbXV0YXRvciBpcyBydW5uaW5nIHdoZW4gaXQncyBub3Qg
aW5zaWRlIGEgSGVhcCBzbG93IHBhdGguCisgICAgUnVubmluZywKKyAgICAKKyAgICAvLyBUaGUg
bXV0YXRvciBpcyBpbiBhbiBhbGxvY2F0aW9uIHNsb3cgcGF0aC4KKyAgICBBbGxvY2F0aW5nLAor
ICAgIAorICAgIC8vIFRoZSBtdXRhdG9yIHdhcyBhc2tlZCBieSB0aGUgR0MgdG8gZG8gc29tZSB3
b3JrLgorICAgIEhlbHBpbmdHQworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFj
ZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiwgSlNDOjpNdXRhdG9yU3RhdGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24g
MjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIFNsb3RWaXNpdG9yOjp+U2xvdFZpc2l0b3Io
KQogCiB2b2lkIFNsb3RWaXNpdG9yOjpkaWRTdGFydE1hcmtpbmcoKQogewotICAgIGlmIChoZWFw
KCktPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAoaGVh
cCgpLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAg
IEFTU0VSVChtX29wYXF1ZVJvb3RzLmlzRW1wdHkoKSk7IC8vIFNob3VsZCBoYXZlIG1lcmdlZCBi
eSBub3cuCiAgICAgZWxzZQogICAgICAgICByZXNldCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjAsMTcgKzMyMCwxNiBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0
CiAgICAgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjZWxsLCBvYmplY3RHcm91
cCwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdl
Q29sbGVjdGlvbjo6VHlwZSBwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKEhlYXBPcGVyYXRp
b24gb3BlcmF0aW9uKQorc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VD
b2xsZWN0aW9uOjpUeXBlIHByb3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24oQ29sbGVjdGlvblNj
b3BlIHNjb3BlKQogewotICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7Ci0gICAgY2FzZSBGdWxsQ29s
bGVjdGlvbjoKKyAgICBzd2l0Y2ggKHNjb3BlKSB7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGw6CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdl
Q29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgorICAgIGNh
c2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgogICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OlBhcnRpYWw7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKICAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOwogfQogCiB2b2lkIEluc3Bl
Y3RvckhlYXBBZ2VudDo6d2lsbEdhcmJhZ2VDb2xsZWN0KCkKQEAgLTM0MSw3ICszNDAsNyBAQCB2
b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6d2lsbEdhcmJhZ2VDb2xsCiAgICAgbV9nY1N0YXJ0VGlt
ZSA9IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVjdChIZWFwT3BlcmF0
aW9uIG9wZXJhdGlvbikKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVj
dChDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAg
QVNTRVJUKCFzdGQ6OmlzbmFuKG1fZ2NTdGFydFRpbWUpKTsKQEAgLTM1Niw3ICszNTUsNyBAQCB2
b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlCiAgICAgLy8gVk0gYXMgdGhl
IGluc3BlY3RlZCBwYWdlLgogCiAgICAgR2FyYmFnZUNvbGxlY3Rpb25EYXRhIGRhdGE7Ci0gICAg
ZGF0YS50eXBlID0gcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihvcGVyYXRpb24pOworICAg
IGRhdGEudHlwZSA9IHByb3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24oc2NvcGUpOwogICAgIGRh
dGEuc3RhcnRUaW1lID0gbV9nY1N0YXJ0VGltZTsKICAgICBkYXRhLmVuZFRpbWUgPSBtX2Vudmly
b25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuaAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gSGVhcE9ic2VydmVyCiAgICAgdm9p
ZCB3aWxsR2FyYmFnZUNvbGxlY3QoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEdhcmJhZ2VDb2xs
ZWN0KEpTQzo6SGVhcE9wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRHYXJiYWdlQ29s
bGVjdChKU0M6OkNvbGxlY3Rpb25TY29wZSkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGNsZWFySGVhcFNuYXBzaG90cygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NTUsOSArNzU1LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQ
cm9ncmFtRXhlYwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZt
LmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZt
LmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxs
KCk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCkBAIC05
MDAsOCArOTAwLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQVNT
RVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeSgpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgQVNTRVJUKCF2bS5p
c0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CisgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBi
b29sIGlzSlNDYWxsID0gKGNhbGxUeXBlID09IENhbGxUeXBlOjpKUyk7CkBAIC05NjIsMTAgKzk2
MiwxMCBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAg
IC8vIFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhhdmUgdG8gcmV0dXJuIHNvbWV0
aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQogICAgIC8vIGFscmVhZHkgaW4gYW4gaW52YWxpZCBzdGF0
ZS4KLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIGJvb2wg
aXNKU0NvbnN0cnVjdCA9IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKQEAg
LTEwMjgsNyArMTAyOCw3IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVG
b3IKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBB
U1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIAotICAgIGlmICh2bS5pc0NvbGxl
Y3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkp
CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAKICAgICAvLyBDb21waWxlIHRo
ZSBjYWxsZWU6CkBAIC0xMDUzLDkgKzEwNTMsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlKENhbGxGcmFtZUNsCiAgICAgVk0mIHZtID0gKmNsb3N1cmUudm07CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBBU1NFUlQoIXZtLmlzQ29s
bGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRo
cmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29s
bGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAK
ICAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKQEAgLTEwNzYsOSAr
MTA3Niw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAg
IEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NFUlQoIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAg
IGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25D
dXJyZW50VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIFZNRW50cnlT
Y29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwpAQCAtMTE4Miw5ICsx
MTgyLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9ncgogCiAgICAg
QVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCghdGhy
b3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7
CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgVk1FbnRyeVNj
b3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMjA3NjQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgQ29kZVByb2Zp
bGluZyBwcm9maWxlKHNvdXJjZSk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBKU0ludGVybmFsUHJv
bWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09
IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4
ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJu
IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIGluaXRpYXRv
cik7CiB9CkBAIC0xODUsNyArMTg1LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFs
dWF0ZU1vZHVsZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgU3ltYm9sKiBr
ZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKIApAQCAtMjEyLDcgKzIx
Miw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSoKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJl
YWQoKSk7CiAKICAgICByZXR1cm4gbG9hZE1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSks
IGluaXRpYXRvcik7CiB9CkBAIC0yMjMsNyArMjIzLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRNb2R1bGUoRXhlY1N0YXRlKgogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0u
YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUo
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAg
U3ltYm9sKiBrZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKIApAQCAt
MjQxLDcgKzI0MSw3IEBAIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSoK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVj
LT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVz
eSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVs
ZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNWYWx1
ZShleGVjLT52bSgpLCBtb2R1bGVLZXkpLCBpbml0aWF0b3IpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcs
NyArMjY3LDcgQEAgSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdgogewog
ICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Zt
LT5hcGlMb2NrKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+aXNDb2xs
ZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5hcGlMb2NrKCkuY3VycmVu
dFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50
VGhyZWFkKCkpOwogICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9w
QWxsTG9ja3ModGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExMyw5ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmcqIG51bGxPYmpl
Y3RTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX251bGxPYmplY3RTdHJpbmc7IH0KICAgICBKU1N0
cmluZyogdW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV91bmRlZmluZWRP
YmplY3RTdHJpbmc7IH0KIAotICAgIGJvb2wgbmVlZHNUb0JlVmlzaXRlZChIZWFwT3BlcmF0aW9u
IGNvbGxlY3Rpb25UeXBlKSBjb25zdAorICAgIGJvb2wgbmVlZHNUb0JlVmlzaXRlZChDb2xsZWN0
aW9uU2NvcGUgc2NvcGUpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoY29sbGVjdGlvblR5cGUg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgICAgIGlmIChzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGwpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIG1fbmVlZHNU
b0JlVmlzaXRlZDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU3Niw3ICs1NzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGR1bXBSZWdFeHBUcmFjZSgpOwogCi0gICAgYm9vbCBpc0NvbGxl
Y3RvckJ1c3koKSB7IHJldHVybiBoZWFwLmlzQnVzeSgpOyB9CisgICAgYm9vbCBpc0NvbGxlY3Rv
ckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSB7IHJldHVybiBoZWFwLmlzQ3VycmVudFRocmVhZEJ1c3ko
KTsgfQogCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgYm9vbCBpc0luaXRpYWxpemlu
Z09iamVjdCgpIGNvbnN0OyAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSlNEb2xsYXJWTVByb3RvdHlwZTo6ZWRlbkdD
KEV4ZWNTdGEKIHsKICAgICBpZiAoIWVuc3VyZUN1cnJlbnRUaHJlYWRPd25zSlNMb2NrKGV4ZWMp
KQogICAgICAgICByZXR1cm47Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KEVkZW5Db2xsZWN0
aW9uKTsKKyAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0Mo
RXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAtMjAgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgdHJhY2tpbmcgb2Yg
dGhlIGNvYXJzZS1ncmFpbiBIZWFwIHN0YXRlIChhbGxvY2F0aW5nIG9yIG5vdCwgY29sbGVjdG9y
IG9yIG5vdCwgZWRlbiB2cyBmdWxsKSBzaG91bGQgcmVzcGVjdCB0aGUgb3J0aG9nb25hbGl0eSBi
ZXR3ZWVuIGFsbG9jYXRpbmcgYW5kIGNvbGxlY3RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzczOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAgICAgICAgVGhlcmUgd2lsbCBzb29uIGJlIGRpZmZl
cmVudCBraW5kcyBvZiBHQyB0aHJlYWRzLCBhbmQgV1RGJ3MgImFyZSB5b3UgYSBHQyB0aHJlYWQi
IHRoaW5nCisgICAgICAgIHNob3VsZCBrbm93IGFib3V0IHRoaXMuCisKKyAgICAgICAgKiB3dGYv
TWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVHQ1RocmVhZHMpOgorICAg
ICAgICAoV1RGOjpyZWdpc3RlckdDVGhyZWFkKToKKyAgICAgICAgKFdURjo6bWF5QmVHQ1RocmVh
ZCk6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuaDoKKwogMjAxNi0xMC0xOSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbiB0
aGF0IGNvbWJpbmVzIFdURjo6dmlzaXQoLi4uKSB3aXRoIFdURjo6bWFrZVZpc2l0b3IoLi4uKQpJ
bmRleDogU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvTWFpblRocmVhZC5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9XVEYv
d3RmL01haW5UaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsMTQgKzE5MCwxNCBAQCBi
b29sIGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChUCiB9CiAjZW5kaWYKIAotc3Rh
dGljIFRocmVhZFNwZWNpZmljPGJvb2w+KiBpc0dDVGhyZWFkOworc3RhdGljIFRocmVhZFNwZWNp
ZmljPE9wdGlvbmFsPEdDVGhyZWFkVHlwZT4+KiBpc0dDVGhyZWFkOwogCiB2b2lkIGluaXRpYWxp
emVHQ1RocmVhZHMoKQogewotICAgIGlzR0NUaHJlYWQgPSBuZXcgVGhyZWFkU3BlY2lmaWM8Ym9v
bD4oKTsKKyAgICBpc0dDVGhyZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPE9wdGlvbmFsPEdDVGhy
ZWFkVHlwZT4+KCk7CiB9CiAKLXZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpCit2b2lkIHJlZ2lzdGVy
R0NUaHJlYWQoR0NUaHJlYWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKCFpc0dDVGhyZWFkKSB7CiAg
ICAgICAgIC8vIFRoaXMgaGFwcGVucyBpZiB3ZSdyZSBydW5uaW5nIGluIGEgcHJvY2VzcyB0aGF0
IGRvZXNuJ3QgY2FyZSBhYm91dApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgcmVnaXN0ZXJHQ1Ro
cmVhZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqKmlzR0NUaHJlYWQgPSB0cnVl
OworICAgICoqaXNHQ1RocmVhZCA9IHR5cGU7CiB9CiAKIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1Ro
cmVhZCgpCkBAIC0yMTYsOSArMjE2LDEzIEBAIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgp
CiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi1ib29sIG1heUJlR0NUaHJlYWQoKQor
T3B0aW9uYWw8R0NUaHJlYWRUeXBlPiBtYXlCZUdDVGhyZWFkKCkKIHsKLSAgICByZXR1cm4gaXNH
Q1RocmVhZCAmJiBpc0dDVGhyZWFkLT5pc1NldCgpICYmICoqaXNHQ1RocmVhZDsKKyAgICBpZiAo
IWlzR0NUaHJlYWQpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIGlmICghaXNHQ1RocmVh
ZC0+aXNTZXQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuICoqaXNHQ1Ro
cmVhZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYWlu
VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCShyZXZp
c2lvbiAyMDc2NDApCisrKyBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDkgKzMzLDEyIEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxz
dGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKK2NsYXNzIFByaW50U3RyZWFtOworCiB0eXBlZGVm
IHVpbnQzMl90IFRocmVhZElkZW50aWZpZXI7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhl
IG1haW4gdGhyZWFkLgpAQCAtNjcsOCArNzAsMTUgQEAgaW5saW5lIGJvb2wgaXNVSVRocmVhZCgp
IHsgcmV0dXJuIGlzTWFpbgogCiB2b2lkIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKIAotV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgbWF5QmVHQ1RocmVhZCgpOworZW51bSBjbGFzcyBHQ1RocmVhZFR5cGUgeworICAgIE1h
aW4sCisgICAgSGVscGVyCit9OworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBH
Q1RocmVhZFR5cGUpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhyZWFk
KEdDVGhyZWFkVHlwZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8R0NUaHJlYWRUeXBl
PiBtYXlCZUdDVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWRP
ckdDVGhyZWFkKCk7CiAKIC8vIE5PVEU6IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZXJuYWwgdG8g
dGhlIGNhbGxPbk1haW5UaHJlYWQgaW1wbGVtZW50YXRpb24uCkBAIC04OCw2ICs5OCw3IEBAIHZv
aWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGgKIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKK3VzaW5nIFdURjo6R0NUaHJlYWRUeXBlOwogdXNpbmcgV1RGOjpjYWxsT25NYWluVGhy
ZWFkOwogdXNpbmcgV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQ7CiB1c2lu
ZyBXVEY6OmlzTWFpblRocmVhZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzY0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE2LTEwLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIHRyYWNraW5nIG9mIHRoZSBjb2Fyc2UtZ3JhaW4gSGVhcCBzdGF0ZSAoYWxsb2NhdGluZyBv
ciBub3QsIGNvbGxlY3RvciBvciBub3QsIGVkZW4gdnMgZnVsbCkgc2hvdWxkIHJlc3BlY3QgdGhl
IG9ydGhvZ29uYWxpdHkgYmV0d2VlbiBhbGxvY2F0aW5nIGFuZCBjb2xsZWN0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVj
YXVzZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpnYXJiYWdlQ29s
bGVjdE5vdyk6CisKIDIwMTYtMTAtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIHRhYmxlLmRlbGV0ZVJvdygtMSkgYSBuby1vcCB3aGVuIHRoZXJlIGFy
ZSBubyByb3dzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dD
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBHQ0Nv
bnRyb2xsZXI6OmdjVGltZXJGaXJlZCgpCiB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxl
Y3ROb3coKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25WTSgp
KTsKLSAgICBpZiAoIUpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuaXNCdXN5KCkpIHsKKyAg
ICBpZiAoIUpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgp
KSB7CiAgICAgICAgIEpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuY29sbGVjdEFsbEdhcmJh
Z2UoKTsKICAgICAgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292275</attachid>
            <date>2016-10-20 15:49:37 -0700</date>
            <delta_ts>2016-10-20 16:20:01 -0700</delta_ts>
            <desc>possible patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>108602</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NSBA
QAorMjAxNi0xMC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSB0cmFja2luZyBvZiB0aGUgY29hcnNlLWdyYWluIEhlYXAgc3RhdGUgKGFsbG9jYXRpbmcg
b3Igbm90LCBjb2xsZWN0b3Igb3Igbm90LCBlZGVuIHZzIGZ1bGwpIHNob3VsZCByZXNwZWN0IHRo
ZSBvcnRob2dvbmFsaXR5IGJldHdlZW4gYWxsb2NhdGluZyBhbmQgY29sbGVjdGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIAorICAgICAgICBXZSBuZWVk
IHRvIGtub3cgaWYgd2UncmUgY3VycmVudGx5IGluIGFuIGFsbG9jYXRpb24gc2xvdyBwYXRoLCBz
byB0aGF0IGNvZGUgY2FuIGFzc2VydCB0aGF0CisgICAgICAgIGl0J3Mgbm90IGJlaW5nIHVzZWQg
ZnJvbSBpbnNpZGUgYSBkZXN0cnVjdG9yIHRoYXQgcnVucyBkdXJpbmcgYSBzd2VlcC4gV2UgbmVl
ZCB0byBrbm93IGlmCisgICAgICAgIHdlJ3JlIGN1cnJlbnRseSBjb2xsZWN0aW5nLCBiZWNhdXNl
IHNvbWUgY29kZSBiZWhhdmVzIGRpZmZlcmVudGx5IGR1cmluZyBjb2xsZWN0aW9uLCBhbmQKKyAg
ICAgICAgb3RoZXIgY29kZSB3YW50cyB0byBhc3NlcnQgdGhhdCBpdCdzIG5vdCBiZWluZyB1c2Vk
IGZyb20gaW5zaWRlIGEgdmlzaXRDaGlsZHJlbiBtZXRob2QgdGhhdAorICAgICAgICBydW5zIGR1
cmluZyBtYXJraW5nLiBJZiB3ZSBhcmUgY29sbGVjdGluZywgd2UgbmVlZCB0byBrbm93IGlmIGl0
J3MgYW4gZWRlbiBjb2xsZWN0aW9uIG9yIGEKKyAgICAgICAgZnVsbCBjb2xsZWN0aW9uLiBJZiB3
ZSBhcmUgcmVxdWVzdGluZyBhIGNvbGxlY3Rpb24sIHdlIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBy
ZXF1ZXN0aW5nIGFuCisgICAgICAgIGVkZW4gY29sbGVjdGlvbiwgYSBmdWxsIGNvbGxlY3Rpb24s
IG9yIGFueSBraW5kIG9mIGNvbGxlY3Rpb24uCisgICAgICAgIAorICAgICAgICBQcmlvciB0byB0
aGlzIGNoYW5nZSwgeW91IHdvdWxkIHJlYXNvbiBhYm91dCBhbGwgb2YgdGhlc2UgdGhpbmdzIHVz
aW5nIHRoZSBIZWFwT3BlcmF0aW9uLiBJdAorICAgICAgICBoYWQgdGhlIGZvbGxvd2luZyBzdGF0
ZXM6IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rp
b24sIGFuZAorICAgICAgICBBbnlDb2xsZWN0aW9uLiBOb09wZXJhdGlvbiB2ZXJzdXMgQWxsb2Nh
dGlvbiB3YXMgcHJpbWFyaWx5IGZvciBhc3NlcnRpbmcgdGhhdCBzd2VlcCBkaWRuJ3QKKyAgICAg
ICAgY2FsbCBhcmJpdHJhcnkgSlMuIEZ1bGxDb2xsZWN0aW9uIHZlcnN1cyBFZGVuQ29sbGVjdGlv
biB3YXMgYWJvdXQgZGVzY3JpYmluZyBnZW5lcmF0aW9ucy4gV2UKKyAgICAgICAgd291bGQgZXZl
biB1c2UgSGVhcE9wZXJhdGlvbiBpbiBwbGFjZXMgd2hlcmUgd2Uga25ldyB0aGF0IGl0IGNvdWxk
IG9ubHkgYmUgZWl0aGVyIEZ1bGwgb3IKKyAgICAgICAgRWRlbiwgYmVjYXVzZSB3ZSBqdXN0IG5l
ZWRlZCBhIHZhcmlhYmxlIHRvIHRlbGwgdXMgd2hpY2ggZ2VuZXJhdGlvbiB3ZSB3ZXJlIHRhbGtp
bmcgYWJvdXQuCisgICAgICAgIEl0IHdhcyBhbGwgdmVyeSBjb25mdXNpbmcuCisgICAgICAgIAor
ICAgICAgICBXaGVyZSBpdCBjb21wbGV0ZWx5IGJyZWFrcyBkb3duIGlzIHRoZSBmYWN0IHRoYXQg
YSBjb25jdXJyZW50IEdDIGhhcyB0d28gbG9naWNhbCB0aHJlYWRzLCB0aGUKKyAgICAgICAgbXV0
YXRvciBhbmQgdGhlIGNvbGxlY3Rvciwgd2hpY2ggY2FuIGNoYW5nZSBzdGF0ZSBpbmRlcGVuZGVu
dGx5LiBUaGUgbXV0YXRvciBjYW4gYmUKKyAgICAgICAgYWxsb2NhdGluZy4gSXQgY2FuIGFsc28g
YmUgZG9pbmcgc29tZSB3b3JrIHRvIGhlbHAgdGhlIEdDLiBUaGF0J3MgdGhyZWUgc3RhdGVzOiBy
dW5uaW5nLAorICAgICAgICBhbGxvY2F0aW5nLCBvciBoZWxwaW5nIEdDLiBBdCB0aGUgc2FtZSB0
aW1lLCB0aGUgR0MgdGhyZWFkIGNvdWxkIGVpdGhlciBiZSBydW5uaW5nIG9yIG5vdCwKKyAgICAg
ICAgYW5kIGlmIGl0J3MgcnVubmluZywgaXQgY291bGQgYmUgYSBmdWxsIGNvbGxlY3Rpb24gb3Ig
YW4gZWRlbiBjb2xsZWN0aW9uLiBCZWNhdXNlIHRoZSBtdXRhdG9yCisgICAgICAgIGFuZCBjb2xs
ZWN0b3IgY2FuIHJ1biBhdCB0aGUgc2FtZSB0aW1lLCBpdCBtZWFucyB0aGF0IGlmIHdlIHVzZWQg
b25lIGVudW0sIHdlIHdvdWxkIG5lZWQgbmluZQorICAgICAgICBzdGF0ZXM6IGV2ZXJ5IGNvbWJp
bmF0aW9uIG9mIG11dGF0b3IgcnVubmluZywgYWxsb2NhdGluZywgb3IgaGVscGluZyBHQywgY3Jv
c3NlZCB3aXRoCisgICAgICAgIGNvbGxlY3RvciBub3QgcnVubmluZywgcnVubmluZyBlZGVuLCBv
ciBydW5uaW5nIGZ1bGwuIFNvLCB0aGlzIGNoYW5nZSBkZWNvdXBsZXMgbXV0YXRvciBzdGF0ZQor
ICAgICAgICBmcm9tIGNvbGxlY3RvciBzdGF0ZSBhbmQgdXNlcyB0d28gc2VwYXJhdGUgZmllbGRz
IHdpdGggdHdvIGRpZmZlcmVudCB0eXBlcy4KKyAgICAgICAgCisgICAgICAgIE11dGF0b3Igc3Rh
dGUgaXMgZGVzY3JpYmVkIHVzaW5nIE11dGF0b3JTdGF0ZSwgd2hpY2ggY2FuIGJlIGVpdGhlciBN
dXRhdG9yU3RhdGU6OlJ1bm5pbmcsCisgICAgICAgIE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZywg
b3IgTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MuCisgICAgICAgIAorICAgICAgICBDb2xsZWN0b3Ig
c3RhdGUgaXMgZGVzY3JpYmVkIHVzaW5nIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4uIENvbGxl
Y3Rpb25TY29wZSBkZXNjcmliZXMgaG93CisgICAgICAgIGJpZyB0aGUgc2NvcGUgb2YgdGhlIGNv
bGxlY3Rpb24gaXMsIGFuZCBpdCBjYW4gYmUgZWl0aGVyIENvbGxlY3Rpb25TY29wZTo6RWRlbiBv
cgorICAgICAgICBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwuIElmIHRoZSBPcHRpb25hbCBpcyBOdWxs
b3B0LCBpdCBtZWFucyB0aGF0IHdlIGFyZSBub3QgY29sbGVjdGluZy4gVGhpcworICAgICAgICB3
YXksIHlvdSBjYW4gdHJlYXQgY29sbGVjdGlvblNjb3BlIGFzIGEgYm9vbGVhbiAoYW4gT3B0aW9u
YWwgaXMgdHJ1ZSBpZmYgaXQncyBlbmdhZ2VkKS4gWW91CisgICAgICAgIGNhbiBwYXNzIGFyb3Vu
ZCBqdXN0IGEgQ29sbGVjdGlvblNjb3BlIGlmIHlvdSBrbm93IHRoYXQgeW91IG11c3QgYmUgY29s
bGVjdGluZyBhbmQgeW91IGp1c3QKKyAgICAgICAgd2FudCB0byBrbm93IGFib3V0IHRoZSBnZW5l
cmF0aW9uLiBBbHNvLCB3ZSBjYW4gdXNlIE51bGxvcHQgaW4gbWV0aG9kcyB0aGF0IHJlcXVlc3QK
KyAgICAgICAgY29sbGVjdGlvbiwgd2hpY2ggdGhvc2UgbWV0aG9kcyB0YWtlIHRvIG1lYW4gdGhh
dCB0aGV5IGNhbiBydW4gYW55IGtpbmQgb2YgY29sbGVjdGlvbiAodGhlCisgICAgICAgIG9sZCBB
bnlDb2xsZWN0aW9uKS4KKyAgICAgICAgCisgICAgICAgIEFub3RoZXIgdXNlIG9mIEhlYXBPcGVy
YXRpb24gd2FzIHRvIGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgd2hldGhlciB0aGUgY2FsbGVyIGlz
IHJ1bm5pbmcgYXMKKyAgICAgICAgcGFydCBvZiB0aGUgR0Mgb3IgYXMgcGFydCBvZiB0aGUgbXV0
YXRvci4gT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBkb2VzIG5vdCBhbnN3ZXIgdGhpcywKKyAg
ICAgICAgc2luY2UgY29kZSB0aGF0IHJ1bnMgaW4gdGhlIG11dGF0b3Igd2hpbGUgdGhlIG11dGF0
b3IgaXMgbm90IEhlbHBpbmdHQyBhdCB0aGUgc2FtZSB0aW1lIGFzCisgICAgICAgIHRoZSBjb2xs
ZWN0b3IgaXMgcnVubmluZyBzaG91bGQgcnVuIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBtdXRh
dG9yIG5vdCBhcyBpZiBpdCB3YXMgcGFydCBvZgorICAgICAgICB0aGUgR0MuIE11dGF0b3JTdGF0
ZSBpcyBuZWVkZWQgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24sIGJ1dCBpdCBkb2Vzbid0IHRlbGwg
dGhlIHdob2xlIHN0b3J5CisgICAgICAgIHNpbmNlIGNvZGUgdGhhdCBydW5zIGluIHRoZSBjb2xs
ZWN0b3IgdGhyZWFkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIG11dGF0b3IgaXMgcnVubmluZwor
ICAgICAgICBzaG91bGQgcnVuIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBHQyBub3QgYXMgaWYg
aXQgd2FzIHBhcnQgb2YgdGhlIG11dGF0b3IuIFNvLCB3ZSBuZWVkIHRvCisgICAgICAgIGtub3cg
aWYgd2UncmUgb24gdGhlIGNvbGxlY3RvciB0aHJlYWQgb3IgdGhlIG11dGF0b3IgdGhyZWFkLiBX
ZSBhbHJlYWR5IGhhdmUgYSBXVEYgZmFjaWxpdHkKKyAgICAgICAgZm9yIHRoaXMsIHdoaWNoIGFu
c3dlcnMgaWYgYSB0aHJlYWQgaXMgYSBHQyB0aHJlYWQuIEJ1dCB3ZSBhbHJlYWR5IHVzZSB0aGlz
IHRvIGFuc3dlciBhCisgICAgICAgIHN0cm9uZ2VyIHF1ZXN0aW9uOiBhcmUgd2UgcGFydCBvZiB0
aGUgcGFyYWxsZWwgR0MgaGVscGVycz8gU29tZSBmdW5jdGlvbnMgaW4gdGhlIEdDLCBsaWtlCisg
ICAgICAgIG1hcmsgYml0IHF1ZXJpZXMsIHdpbGwgd29yayBmaW5lIGluIGEgY29uY3VycmVudCBj
b2xsZWN0b3IgdGhyZWFkIHNvIGxvbmcgYXMgdGhlcmUgaXMgbm8KKyAgICAgICAgcGFyYWxsZWwg
bWFya2luZy4gU28sIHRoaXMgY2hhbmdlIGFsc28gY2hhbmdlcyBXVEYncyBtYXlCZUdDVGhyZWFk
IHRvIHRlbGwgd2hhdCBraW5kIG9mIEdDCisgICAgICAgIHRocmVhZCB3ZSBtYXkgYmU6IGVpdGhl
ciBHQ1RocmVhZFR5cGU6Ok1haW4gb3IgR0NUaHJlYWRUeXBlOjpIZWxwZXIuIFRoZSBwYXJhbGxl
bCBHQyBzYWZldHkKKyAgICAgICAgY2hlY2tzIGxvb2sgZm9yIEdDVGhyZWFkVHlwZTo6SGVscGVy
LiBUaGUgInNob3VsZCBJIHJ1biBhcyBtdXRhdG9yIiBxdWVyeSBjYW4gbm93IGJlIGFuc3dlcmVk
CisgICAgICAgIGJ5IGNoZWNraW5nIHdpdGggbWF5QmVHQ1RocmVhZCwgd2hpY2ggcmV0dXJucyBP
cHRpb25hbDxHQ1RocmVhZFR5cGU+OyBpZiBlbmdhZ2VkLCB0aGVuIHJ1biBhcworICAgICAgICBH
QywgZWxzZSBydW4gYXMgR0MgaWYgTXV0YXRvclN0YXRlIGlzIEhlbHBpbmdHQywgZWxzZSBydW4g
YXMgbXV0YXRvci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIHdh
eSB0aGF0IHRoZSBHQyBiZWhhdmVzLCBidXQgaXQgZG9lcyBjaGFuZ2UgaG93IHRoZSBHQyByZXBy
ZXNlbnRzIGEKKyAgICAgICAgZnVuZGFtZW50YWwgcGllY2Ugb2Ygc3RhdGUuIFNvLCBpdCdzIGEg
YmlnIGNoYW5nZS4gSXQgc2hvdWxkIGJlIHBlcmYtbmV1dHJhbCAoc3RpbGwgdGVzdGluZykuCisK
KyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTU3luY2hyb25vdXNFZGVuQ29s
bGVjdEZvckRlYnVnZ2luZyk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAgICAqIGZ0bC9GVExDb21waWxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL0FsbG9j
YXRpbmdTY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWxsb2NhdGluZ1Njb3BlOjpBbGxv
Y2F0aW5nU2NvcGUpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW5nU2NvcGU6On5BbGxvY2F0aW5n
U2NvcGUpOgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNjb3BlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogaGVhcC9Db2RlQmxvY2tTZXQuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6
OmRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKToKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9j
a1NldC5oOgorICAgICAgICAqIGhlYXAvQ29sbGVjdGlvblNjb3BlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUpOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBoZWFwL0NvbGxlY3Rpb25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBoZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpFZGVuR0NB
Y3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24pOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmRvQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9HQ1R5cGVNYXAuaDoKKyAgICAgICAgKEpT
Qzo6R0NUeXBlTWFwOjpvcGVyYXRvcltdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRv
RmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAoSlND
OjpIZWFwOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFNtYWxsU3Ry
aW5ncyk6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyk6CisgICAgICAg
IChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpk
ZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RB
bGxHYXJiYWdlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6
OkhlYXA6OmNvbGxlY3RXaXRob3V0QW55U3dlZXApOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0SW1wbCk6CisgICAgICAgIChKU0M6OkhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24pOgorICAg
ICAgICAoSlNDOjpIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcik6CisgICAgICAgIChKU0M6
OkhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRh
dGVBbGxvY2F0aW9uTGltaXRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkRmluaXNoQ29sbGVj
dGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OmlzVmFsaWRBbGxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgIChKU0M6OkhlYXA6Om11dGF0b3JTdGF0ZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OmNvbGxlY3Rpb25TY29wZSk6CisgICAgICAgIChKU0M6OkhlYXA6Om9wZXJhdGlvbkluUHJv
Z3Jlc3MpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SGVhcDo6c2hvdWxkQ29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmlzQ3VycmVu
dFRocmVhZEJ1c3kpOgorICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6
OnJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxl
Y3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OkhlYXA6Omlz
QnVzeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OmlzQ29sbGVjdGluZyk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9IZWFwT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBP
cGVyYXRpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvSGVhcE9wZXJhdGlvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcFZlcmlmaWVyOjppbml0aWFsaXplR0NDeWNsZSk6CisgICAgICAgIChKU0M6OkhlYXBWZXJp
Zmllcjo6cmVwb3J0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcFZlcmlmaWVyOjpjb2xsZWN0
aW9uVHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmg6Cisg
ICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6R0NDeWNsZTo6Y29sbGVjdGlvblR5cGVOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlbHBpbmdHQ1Njb3BlLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpIZWxwaW5nR0NTY29wZTo6SGVscGluZ0dDU2NvcGUpOgorICAgICAgICAoSlNDOjpI
ZWxwaW5nR0NTY29wZTo6fkhlbHBpbmdHQ1Njb3BlKToKKyAgICAgICAgKiBoZWFwL0xhcmdlQWxs
b2NhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6ZmxpcCk6CisgICAg
ICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJbXBsKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjp2aXNpdFdlYWtTZXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnJlYXBXZWFr
U2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yTWFya2luZyk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KToKKyAgICAgICAgKiBoZWFwL011dGF0b3JTdGF0
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBo
ZWFwL011dGF0b3JTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2luZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVjdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChm
dW5jdGlvbkZ1bGxHQyk6CisgICAgICAgIChmdW5jdGlvbkVkZW5HQyk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAgICAgICAo
SlNDOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToK
KyAgICAgICAgKEpTQzo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxs
TG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6
OlNtYWxsU3RyaW5nczo6bmVlZHNUb0JlVmlzaXRlZCk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAoSlNDOjpWTTo6aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKToKKyAg
ICAgICAgKEpTQzo6Vk06OmlzQ29sbGVjdG9yQnVzeSk6IERlbGV0ZWQuCisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk1Qcm90
b3R5cGU6OmVkZW5HQyk6CisKIDIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBkaXNhbGxvdyByZWZlcmVuY2VzIHRvIGBhd2FpdGAg
aW4gQXN5bmNGdW5jdGlvbiBmb3JtYWwgcGFyYW1ldGVycwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNiArNDUxLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIGhlYXAvQWxsb2NhdG9yQXR0cmlidXRlcy5j
cHAKICAgICBoZWFwL0NvZGVCbG9ja1NldC5jcHAKKyAgICBoZWFwL0NvbGxlY3Rpb25TY29wZS5j
cHAKICAgICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAogICAgIGhlYXAvRGVmZXJHQy5jcHAK
ICAgICBoZWFwL0Rlc3RydWN0aW9uTW9kZS5jcHAKQEAgLTQ2NCw3ICs0NjUsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvSGVhcC5jcHAKICAgICBoZWFwL0hlYXBDZWxs
LmNwcAogICAgIGhlYXAvSGVhcEhlbHBlclBvb2wuY3BwCi0gICAgaGVhcC9IZWFwT3BlcmF0aW9u
LmNwcAogICAgIGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNw
cAogICAgIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQ4MCw2ICs0ODAsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAog
ICAgIGhlYXAvTWFya2VkQmxvY2suY3BwCiAgICAgaGVhcC9NYXJrZWRTcGFjZS5jcHAKKyAgICBo
ZWFwL011dGF0b3JTdGF0ZS5jcHAKICAgICBoZWFwL1Nsb3RWaXNpdG9yLmNwcAogICAgIGhlYXAv
V2Vhay5jcHAKICAgICBoZWFwL1dlYWtCbG9jay5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY3NywxNCArMTY3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RnVsbEdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
LSAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhl
YXAoKS0+Y29sbGVjdChDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rp
b24oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBl
eGVjLT5oZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhlYXAoKS0+
Y29sbGVjdChDb2xsZWN0aW9uU2NvcGU6OkVkZW4pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAy
MDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEpTU3lu
Y2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBleGVjLT52bSgp
LmhlYXAuY29sbGVjdChFZGVuQ29sbGVjdGlvbik7CisgICAgZXhlYy0+dm0oKS5oZWFwLmNvbGxl
Y3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogdm9pZCBKU0Rpc2FibGVHQ1RpbWVyKHZv
aWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3NjQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw3ICs1MTAsNiBAQAogCQkwRjgzMzVCNzE2
MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMx
RUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hE
aXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsgfTsK
LQkJMEY4NkEyNkQxRDZGNzk2NTAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkMxRDZGNzk2MjAw
Q0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwICovOyB9OwogCQkwRjg2QTI2RjFENkY3QjMzMDBD
QjBDOTIgLyogR0NUeXBlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjg2QTI2RTFENkY3QjMxMDBDQjBDOTIgLyogR0NUeXBlTWFwLmggKi87IH07
CiAJCTBGODZBRTIwMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QUUxRjFD
NTMxMUM1MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICovOyB9OwogCQkwRjg4
NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAv
KiBCeXRlY29kZVVzZURlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01OTIsNiArNTkxLDEyIEBACiAJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJE
OSAvKiBERkdOb2RlRmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAg
Ki87IH07CiAJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI4MTUwRTk1
MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLzsgfTsKIAkJMEZBNTgxQkMxNTBFOTUzMDAw
QjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAq
LzsgfTsKKwkJMEZBNzYyMDQxREI5MjQyNjAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMDFE
QjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLzsgfTsKKwkJMEZBNzYyMDUx
REI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENv
bGxlY3Rpb25TY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDIxREI5
MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgKi87IH07CisJCTBGQTc2MjA3MURCOTI0
MzMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3Rh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkE3NjIwOTFEQjkyODNFMDBCN0EyRkQgLyogSGVscGluZ0dDU2NvcGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjA4MURCOTI4M0MwMEI3QTJG
RCAvKiBIZWxwaW5nR0NTY29wZS5oICovOyB9OworCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0EyRkQg
LyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmgg
Ki87IH07CiAJCTBGQTdBOEVCMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RTkxOEI0MTNDODAwNTIz
NzFEIC8qIFJlZy5jcHAgKi87IH07CiAJCTBGQTdBOEVDMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTdBOEVB
MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkE3QThFRTE4Q0U0RkQ4MDA1MjM3MUQgLyogU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuY3BwICovOyB9OwpAQCAtNjIzLDcgKzYyOCw2IEBACiAJCTBGQjRGQjczMUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlT
bG93UGF0aC5jcHAgKi87IH07CiAJCTBGQjRGQjc0MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5
U2xvd1BhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjRGQjcxMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCAqLzsgfTsKIAkJ
MEZCNEZCNzUxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcyMUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi87IH07Ci0JCTBGQjUzMDM5MUQ5MDQw
NEMwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAvKiBBbGxvY2F0
aW9uU2NvcGUuaCAqLzsgfTsKIAkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RkI1NDY3OTE0RjVDNDZCMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzgxNEY1
QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKIAkJMEZC
NTQ2N0IxNEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0NjdBMTRG
NUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTYsNyArMTE2MCw2
IEBACiAJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRCQjdG
MjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oICovOyB9OwogCQky
QTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVDOTA5MTg2MEQ2QzIw
MDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwICovOyB9OwogCQkyQTRFQzkwQzE4NjBE
NkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNkY0NjI1MTdF
OTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkE3QTU4RUYxODA4QTRDNDAwMjBCREY3IC8qIERl
ZmVyR0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovOyB9OwogCQkyQTgzNjM4
NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4MzE4RDdEMEVFMDAw
MEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CiAJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0Mg
LyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yODM0LDcgKzI4MzcsNiBAQAogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgz
NjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RG
R0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjg2QTI2
QzFENkY3OTYyMDBDQjBDOTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY4NkEyNkUxRDZGN0IzMTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY4NkFFMUYxQzUzMTFDNTAwNkJFOEVDIC8qIEIzQ29tcHV0ZURpdmlz
aW9uTWFnaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb21wdXRlRGl2
aXNpb25NYWdpYy5oOyBwYXRoID0gYjMvQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNv
ZGVVc2VEZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVVc2VE
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MTUsNiArMjkxNywxMiBAQAog
CQkwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVGbGFncy5jcHA7IHBhdGggPSBkZmcv
REZHTm9kZUZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjgx
NTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdOb2RlRmxhZ3MuaDsgcGF0aCA9IGRmZy9ERkdOb2RlRmxhZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjkxNTBFOTUyQTAwQjlBMkQ5IC8qIERG
R05vZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVUeXBl
Lmg7IHBhdGggPSBkZmcvREZHTm9kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xsZWN0aW9uU2NvcGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29s
bGVjdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rp
b25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMjFEQjkyNDIz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE11dGF0b3JTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRvclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQTc2MjA4MURCOTI4M0MwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWxwaW5nR0NTY29wZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2Nh
dGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpbmdT
Y29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE3QThFOTE4QjQxM0M4MDA1
MjM3MUQgLyogUmVnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVBMThCNDEzQzgwMDUy
MzcxRCAvKiBSZWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5NTYsNyArMjk2NCw2IEBACiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1
QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRlRMTGF6eVNsb3dQYXRoLmNwcDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEg
LyogRlRMTGF6eVNsb3dQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TExhenlTbG93UGF0aC5oOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xv
d1BhdGhDYWxsLmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlv
blNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3NjE0RjU5QUQxMDAyQzI5
ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2N0Ex
NEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ1MCw3ICszNDU3LDYgQEAKIAkJMkE0
QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdyaXRlQmFycmllckJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJB
NEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8q
IERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJH
Qy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2MzgzMThEN0QwRUUwMDAw
RUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDQ3LDcgKzU0
NTMsNyBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEZCNTMwMzgxRDkwNDA0NjAwRjI4
QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovLAorCQkJCTBGQTc2MjBBMURCOTU5RjYwMEI3QTJG
RCAvKiBBbGxvY2F0aW5nU2NvcGUuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkg
LyogQWxsb2NhdG9yQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYw
OUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuaCAqLywKIAkJCQkwRjA3MEE0MjFENTQzQTg5MDA2
RTcyMzIgLyogQ2VsbENvbnRhaW5lci5oICovLApAQCAtNTQ1Niw2ICs1NDYyLDggQEAKIAkJCQkw
RkQ4QTMxMTE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4
QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggKi8sCiAJCQkJMEY2NjRDRTcx
REEzMDRFRDAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLywKKwkJCQkwRkE3NjIw
MDFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLywKKwkJCQkwRkE3NjIw
MTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggKi8sCiAJCQkJMTQ2QjE0REIx
MkVCNUIxMjAwMUJFQzFCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFG
MjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2VydmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThF
RTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8sCkBAIC01NTAwLDggKzU1MDgsNiBA
QAogCQkJCUMyREE3NzgyMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oICovLAogCQkJ
CTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLywKIAkJ
CQlBNTMzOUVDODFCQjRCNDUxMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggKi8sCi0JCQkJMEY4
NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwICovLAotCQkJCTJBNkY0
NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi8sCiAJCQkJQTUzOThGQTkx
Qzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8sCiAJCQkJQTUzOThGQUExQzc1
MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5oICovLAogCQkJCTE0Rjk3NDQ2MTM4Qzg1M0Uw
MERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLywKQEAgLTU1MTYsNiArNTUyMiw3IEBACiAJ
CQkJMEZBREU2NzIxRDREMjNCQzAwNzY4NDU3IC8qIEhlYXBVdGlsLmggKi8sCiAJCQkJRkU3QkE2
MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi8sCiAJCQkJRkU3QkE2MEUx
QTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oICovLAorCQkJCTBGQTc2MjA4MURCOTI4
M0MwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oICovLAogCQkJCUMyNUY4QkNCMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJCUMyNUY4QkNDMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJCQkwRjc2NkQyOTE1QThD
QzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLApAQCAtNTU0MSw2ICs1NTQ4
LDggQEAKIAkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVz
LmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8s
CiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAorCQkJCTBG
QTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwICovLAorCQkJCTBGQTc2
MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLywKIAkJCQlBRERCMUY2MjE4
RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RC
QUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAw
NUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCkBAIC03NTAwLDYgKzc1MDksNyBAQAogCQkJCTBG
RUM4NTAzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tVdGlscy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1MDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxvY2tXb3JrbGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tTcGVj
aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNzFEQjkyNDMzMDBCN0EyRkQgLyogTXV0
YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwODFCREFDREFDMDA4MEZGNzQg
LyogQjNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwQTFCREFDREFDMDA4
MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURDNDU0QjhEMUQwMEU4MjQw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjAwLDcgKzc2MTAs
NiBAQAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVGM0M2IC8qIENh
bGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhB
RTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Mjc2NzMyNDFCNjgw
QzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRC
Q0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5MDUsNiArNzkxNCw4IEBACiAJCQkJMkFEMkVERkIxOTc5OUUz
ODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDQ2
MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkw
RDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZBNzYyMDkxREI5MjgzRTAwQjdBMkZEIC8qIEhlbHBpbmdHQ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTk4RDBFMTgzRTM4MDAwRjkyOTcg
LyogRXJyb3JJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEYwRTE4MzlEQjAw
MEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTQsNyArODA2
NSw2IEBACiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMzlFQzkxQkI0QjQ2MDAwNTRGMDA1IC8qIEhlYXBP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkE2RjQ2MjYxN0U5NTlD
RTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Rjk3NDQ3
MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRl
cnMgKi8sCkBAIC04MTE3LDYgKzgxMjcsNyBAQAogCQkJCUExODE5M0UzMUI0RTBDREIwMEZDMTAy
OSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
QjlFMjNFMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExODE5M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNTFEQjkyNDI5MDBCN0EyRkQg
LyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q2RTFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTE4
N0EwRjFDMDMwRDZDMDAzOEJCQ0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgxLDcgKzk0OTIsNiBAQAogCQkJCUE3OEE5NzdB
MTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUw
Rjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGODZBMjZEMUQ2Rjc5
NjUwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0Uw
MUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyog
REZHUHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTYyOCw2ICs5NjM4LDcgQEAKIAkJ
CQlBNThFMzU5MTE4NjBERUNGMDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1MTNFNUNBMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4NDBFMjAxODdCN0I4NjAwODQzQjEw
IC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA0
MURCOTI0MjYwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ4QTdCRUYxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjI0RTU1NTE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1l
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1Q0VFRTE0MTg3RjNCQUQwMEU1NUM5OSAvKiBJ
bnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3ODIsNiArOTc5Myw3IEBACiAJ
CQkJREMxN0U4MTcxQzlDOTFENjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9y
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNFN0IyIC8q
IENMb29wU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3
QTQ4IC8qIEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUMwRUMyMUFBMEQ3REEw
MEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIw
NzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDc0LDcgKzM0NzQsNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlz
b24oUHJvZmlsZXI6OkpldHRpCiAgICAgICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgxKSwgYW5k
IGRvZXMgaXRzIG93biBib29rLWtlZXBpbmcgYWJvdXQgd2hldGhlciBpdCBoYXMgYWxyZWFkeSBo
YXBwZW5lZC4KICAgICAgICAgaWYgKCFqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbnZhbGlkYXRl
KCkpIHsKICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZC4KLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSB8fCAobV92bS0+
aGVhcC5pc0NvbGxlY3RpbmcoKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJTY3JpcHRFeGVjdXRh
YmxlKCkpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9IHJlcGxhY2VtZW50
KCkgfHwgKG1fdm0tPmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFwOjppc01hcmtl
ZChvd25lclNjcmlwdEV4ZWN1dGFibGUoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTM1MDYsNyArMzUwNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNv
bihQcm9maWxlcjo6SmV0dGkKIAogICAgIC8vIEpldHRpc29uIGNhbiBoYXBwZW4gZHVyaW5nIEdD
LiBXZSBkb24ndCB3YW50IHRvIGluc3RhbGwgY29kZSB0byBhIGRlYWQgZXhlY3V0YWJsZQogICAg
IC8vIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgYSBkZWFkIG9iamVjdCB0byB0aGUgcmVtZW1iZXJl
ZCBzZXQuCi0gICAgaWYgKG1fdm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkgJiYgIUhlYXA6OmlzTWFy
a2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkKKyAgICBpZiAobV92bS0+aGVhcC5pc0N1cnJl
bnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgp
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMgKDIpLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIw
NzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsOSArMTAzLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpCiAgICAgICAgICAgICBkYXRhTG9nKG1f
d29ya2xpc3QsICI6IENvbXBpbGluZyAiLCBtX3BsYW4tPmtleSgpLCAiIGFzeW5jaHJvbm91c2x5
XG4iKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW4tPnZtLT5oZWFw
LmlzQ29sbGVjdGluZygpKTsKKyAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgZm9yIHRoZSBHQyB0
byBiZSBzYWZlcG9pbnRpbmcgc2luY2Ugd2Ugb3duIHJpZ2h0VG9SdW4uCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhlYXAubXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRl
OjpIZWxwaW5nR0MpOwogICAgICAgICBtX3BsYW4tPmNvbXBpbGVJblRocmVhZCgqbV9sb25nTGl2
ZWRTdGF0ZSwgJm1fZGF0YSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+c3RhZ2Ug
PT0gUGxhbjo6Q2FuY2VsbGVkIHx8ICFtX3BsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT5zdGFnZSA9PSBQbGFuOjpDYW5jZWxsZWQg
fHwgbV9wbGFuLT52bS0+aGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OkhlbHBp
bmdHQyk7CiAgICAgICAgIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV93b3JrbGlzdC5tX2xvY2spOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV93b3JrbGlzdC5tX3BsYW5Db21waWxlZC5ub3RpZnlB
bGwoKTsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wbGFuLT52bS0+aGVh
cC5pc0NvbGxlY3RpbmcoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhl
YXAubXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
CiAKICAgICBpZiAoc2FmZXBvaW50UmVzdWx0LmRpZEdldENhbmNlbGxlZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXN0YXRlLmdyYXBoLm1fdm0uaGVhcC5pc0NvbGxl
Y3RpbmcoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGUuZ3JhcGgubV92bS5oZWFwLm11dGF0
b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKTsKICAgICAKICAgICBpZiAoc3Rh
dGUuYWxsb2NhdGlvbkZhaWxlZCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SGVhcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWxsb2NhdGluZ1Njb3BlIHsKK3B1
YmxpYzoKKyAgICBBbGxvY2F0aW5nU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAgOiBtX2hlYXAo
aGVhcCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5tX211dGF0b3JTdGF0
ZSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcpOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3Rh
dGUgPSBNdXRhdG9yU3RhdGU6OkFsbG9jYXRpbmc7CisgICAgfQorICAgIAorICAgIH5BbGxvY2F0
aW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLm1fbXV0YXRv
clN0YXRlID09IE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZyk7CisgICAgICAgIG1faGVhcC5tX211
dGF0b3JTdGF0ZSA9IE11dGF0b3JTdGF0ZTo6UnVubmluZzsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSGVhcCYgbV9oZWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCShyZXZpc2lvbiAyMDc2
NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIZWFwLmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBBbGxvY2F0aW9uU2NvcGUgewotcHVibGljOgotICAgIEFs
bG9jYXRpb25TY29wZShIZWFwJiBoZWFwKQotICAgICAgICA6IG1faGVhcChoZWFwKQotICAgICAg
ICAsIG1fbGFzdE9wZXJhdGlvbihtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbGFzdE9wZXJhdGlvbiA9PSBOb09wZXJhdGlvbiB8fCBtX2xhc3RP
cGVyYXRpb24gPT0gQWxsb2NhdGlvbik7Ci0gICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPSBBbGxvY2F0aW9uOwotICAgIH0KLSAgICAKLSAgICB+QWxsb2NhdGlvblNjb3BlKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID09IEFs
bG9jYXRpb24pOwotICAgICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID0gbV9sYXN0
T3BlcmF0aW9uOwotICAgIH0KLXByaXZhdGU6Ci0gICAgSGVhcCYgbV9oZWFwOwotICAgIEhlYXBP
cGVyYXRpb24gbV9sYXN0T3BlcmF0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAkocmV2aXNp
b24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENvZGVCbG9ja1NldDo6
bGFzdENoYW5jZVRvRmluYWxpemUoCiAgICAgICAgIGNvZGVCbG9jay0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLmRlc3Ryb3koY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tTZXQ6OmRl
bGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUp
Cit2b2lkIENvZGVCbG9ja1NldDo6ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOwotICAg
IEhhc2hTZXQ8Q29kZUJsb2NrKj4mIHNldCA9IGNvbGxlY3Rpb25UeXBlID09IEVkZW5Db2xsZWN0
aW9uID8gbV9uZXdDb2RlQmxvY2tzIDogbV9vbGRDb2RlQmxvY2tzOworICAgIEhhc2hTZXQ8Q29k
ZUJsb2NrKj4mIHNldCA9IHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiA/IG1fbmV3Q29k
ZUJsb2NrcyA6IG1fb2xkQ29kZUJsb2NrczsKICAgICBWZWN0b3I8Q29kZUJsb2NrKj4gdW5tYXJr
ZWQ7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IHNldCkgewogICAgICAgICBpZiAo
SGVhcDo6aXNNYXJrZWQoY29kZUJsb2NrKSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb2RlQmxv
Y2tTZXQ6OmRlbGV0ZVVubWFya2VkQW5kVW5yZQogICAgIH0KIAogICAgIC8vIEFueSByZW1haW5p
bmcgeW91bmcgQ29kZUJsb2NrcyBhcmUgbGl2ZSBhbmQgbmVlZCB0byBiZSBwcm9tb3RlZCB0byB0
aGUgc2V0IG9mIG9sZCBDb2RlQmxvY2tzLgotICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBFZGVu
Q29sbGVjdGlvbikKKyAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAg
ICAgICBwcm9tb3RlWW91bmdDb2RlQmxvY2tzKGxvY2tlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDc2NDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29s
bGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NTZWdtZW50ZWRBcnJheS5oIgotI2luY2x1ZGUg
IkhlYXBPcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICAKICAgICAvLyBEZWxldGUgYWxsIGNvZGUgYmxvY2tzIHRoYXQgYXJlIG9u
bHkgcmVmZXJlbmNlZCBieSB0aGlzIHNldCAoaS5lLiBvd25lZAogICAgIC8vIGJ5IHRoaXMgc2V0
KSwgYW5kIHRoYXQgaGF2ZSBub3QgYmVlbiBtYXJrZWQuCi0gICAgdm9pZCBkZWxldGVVbm1hcmtl
ZEFuZFVucmVmZXJlbmNlZChIZWFwT3BlcmF0aW9uKTsKKyAgICB2b2lkIGRlbGV0ZVVubWFya2Vk
QW5kVW5yZWZlcmVuY2VkKENvbGxlY3Rpb25TY29wZSk7CiAgICAgCiAgICAgLy8gQWRkIGFsbCBj
dXJyZW50bHkgZXhlY3V0aW5nIENvZGVCbG9ja3MgdG8gdGhlIHJlbWVtYmVyZWQgc2V0IHRvIGJl
IAogICAgIC8vIHJlLXNjYW5uZWQgZHVyaW5nIHRoZSBuZXh0IGNvbGxlY3Rpb24uCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29sbGVjdGlvblNjb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgorCisjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBjb2xsZWN0
aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSBzY29wZSkKK3sKKyAgICBzd2l0Y2ggKHNjb3Bl
KSB7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46CisgICAgICAgIHJldHVybiAiRWRl
biI7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw6CisgICAgICAgIHJldHVybiAiRnVs
bCI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwor
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29sbGVjdGlvblNjb3Bl
IHNjb3BlKQoreworICAgIG91dC5wcmludChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUoc2NvcGUp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisK
K2VudW0gY2xhc3MgQ29sbGVjdGlvblNjb3BlIHsgRWRlbiwgRnVsbCB9OworCitjb25zdCBjaGFy
KiBjb2xsZWN0aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSk7CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rpb25TY29wZSk7CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVu
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6RWRlbkdD
QWN0aXZpdHlDYQogCiB2b2lkIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigp
CiB7Ci0gICAgbV92bS0+aGVhcC5jb2xsZWN0KEVkZW5Db2xsZWN0aW9uKTsKKyAgICBtX3ZtLT5o
ZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogZG91YmxlIEVkZW5HQ0Fj
dGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24g
MjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrOjpkb0NvbGxlY3RpbwogICAgIH0KICNlbmRpZgogCi0gICAgaGVhcC5jb2xsZWN0
KEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBoZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpGdWxs
KTsKIH0KIAogZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAkocmV2aXNpb24gMjA3NjQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUeXBlTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIZWFwT3Bl
cmF0aW9uLmgiCisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSwyMCArMzUsMjQgQEAgc3RydWN0
IEdDVHlwZU1hcCB7CiAgICAgVCBlZGVuOwogICAgIFQgZnVsbDsKICAgICAKLSAgICBUJiBvcGVy
YXRvcltdKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQorICAgIFQmIG9wZXJhdG9yW10oQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogICAgIHsKLSAgICAgICAgaWYgKG9wZXJhdGlvbiA9PSBGdWxsQ29s
bGVjdGlvbikKKyAgICAgICAgc3dpdGNoIChzY29wZSkgeworICAgICAgICBjYXNlIENvbGxlY3Rp
b25TY29wZTo6RnVsbDoKICAgICAgICAgICAgIHJldHVybiBmdWxsOwotICAgICAgICBBU1NFUlQo
b3BlcmF0aW9uID09IEVkZW5Db2xsZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGVkZW47CisgICAg
ICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgorICAgICAgICAgICAgcmV0dXJuIGVkZW47
CisgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgY29uc3QgVCYgb3BlcmF0b3JbXShIZWFwT3Bl
cmF0aW9uIG9wZXJhdGlvbikgY29uc3QKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKENvbGxlY3Rp
b25TY29wZSBzY29wZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChvcGVyYXRpb24gPT0gRnVs
bENvbGxlY3Rpb24pCisgICAgICAgIHN3aXRjaCAoc2NvcGUpIHsKKyAgICAgICAgY2FzZSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGw6CiAgICAgICAgICAgICByZXR1cm4gZnVsbDsKLSAgICAgICAgQVNT
RVJUKG9wZXJhdGlvbiA9PSBFZGVuQ29sbGVjdGlvbik7Ci0gICAgICAgIHJldHVybiBlZGVuOwor
ICAgICAgICBjYXNlIENvbGxlY3Rpb25TY29wZTo6RWRlbjoKKyAgICAgICAgICAgIHJldHVybiBl
ZGVuOworICAgICAgICB9CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSGVh
cFNuYXBzaG90LmgiCiAjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJIZWFw
VmVyaWZpZXIuaCIKKyNpbmNsdWRlICJIZWxwaW5nR0NTY29wZS5oIgogI2luY2x1ZGUgIkluY3Jl
bWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklU
U3R1YlJvdXRpbmVTZXQuaCIKQEAgLTE0MCwxNSArMTQxLDE1IEBAIEhhc2hNYXA8Y29uc3QgY2hh
ciosIEdDVHlwZU1hcDxTaW1wbGVTdGEKICAgICByZXR1cm4gKnJlc3VsdDsKIH0KIAotU2ltcGxl
U3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIEhlYXBPcGVyYXRpb24gb3BlcmF0
aW9uKQorU2ltcGxlU3RhdHMmIHRpbWluZ1N0YXRzKGNvbnN0IGNoYXIqIG5hbWUsIENvbGxlY3Rp
b25TY29wZSBzY29wZSkKIHsKLSAgICByZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwgR0NU
eXBlTWFwPFNpbXBsZVN0YXRzPigpKS5pdGVyYXRvci0+dmFsdWVbb3BlcmF0aW9uXTsKKyAgICBy
ZXR1cm4gdGltaW5nU3RhdHMoKS5hZGQobmFtZSwgR0NUeXBlTWFwPFNpbXBsZVN0YXRzPigpKS5p
dGVyYXRvci0+dmFsdWVbc2NvcGVdOwogfQogCiBjbGFzcyBUaW1pbmdTY29wZSB7CiBwdWJsaWM6
Ci0gICAgVGltaW5nU2NvcGUoSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IGNoYXIqIG5h
bWUpCi0gICAgICAgIDogbV9vcGVyYXRpb24ob3BlcmF0aW9uKQorICAgIFRpbWluZ1Njb3BlKE9w
dGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgICAg
IDogbV9zY29wZShzY29wZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7CiAgICAgICAg
IGlmIChtZWFzdXJlUGhhc2VUaW1pbmcoKSkKQEAgLTE1NiwxOCArMTU3LDE4IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgCiAgICAgVGltaW5nU2NvcGUoSGVhcCYgaGVhcCwgY29uc3QgY2hhciogbmFt
ZSkKLSAgICAgICAgOiBUaW1pbmdTY29wZShoZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSwgbmFt
ZSkKKyAgICAgICAgOiBUaW1pbmdTY29wZShoZWFwLmNvbGxlY3Rpb25TY29wZSgpLCBuYW1lKQog
ICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRPcGVyYXRpb24oSGVhcE9wZXJhdGlvbiBv
cGVyYXRpb24pCisgICAgdm9pZCBzZXRTY29wZShPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNj
b3BlKQogICAgIHsKLSAgICAgICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247CisgICAgICAgIG1f
c2NvcGUgPSBzY29wZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRPcGVyYXRpb24oSGVhcCYg
aGVhcCkKKyAgICB2b2lkIHNldFNjb3BlKEhlYXAmIGhlYXApCiAgICAgewotICAgICAgICBzZXRP
cGVyYXRpb24oaGVhcC5vcGVyYXRpb25JblByb2dyZXNzKCkpOworICAgICAgICBzZXRTY29wZSho
ZWFwLmNvbGxlY3Rpb25TY29wZSgpKTsKICAgICB9CiAgICAgCiAgICAgflRpbWluZ1Njb3BlKCkK
QEAgLTE3NSwxMyArMTc2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1lYXN1cmVQaGFzZVRp
bWluZygpKSB7CiAgICAgICAgICAgICBkb3VibGUgYWZ0ZXIgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWVNUygpOwogICAgICAgICAgICAgZG91YmxlIHRpbWluZyA9IGFmdGVyIC0gbV9iZWZv
cmU7Ci0gICAgICAgICAgICBTaW1wbGVTdGF0cyYgc3RhdHMgPSB0aW1pbmdTdGF0cyhtX25hbWUs
IG1fb3BlcmF0aW9uKTsKKyAgICAgICAgICAgIFNpbXBsZVN0YXRzJiBzdGF0cyA9IHRpbWluZ1N0
YXRzKG1fbmFtZSwgKm1fc2NvcGUpOwogICAgICAgICAgICAgc3RhdHMuYWRkKHRpbWluZyk7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJbR0M6IiwgbV9vcGVyYXRpb24sICJdICIsIG1fbmFtZSwgIiB0
b29rOiAiLCB0aW1pbmcsICIgbXMgKGF2ZXJhZ2UgIiwgc3RhdHMubWVhbigpLCAiIG1zKS5cbiIp
OworICAgICAgICAgICAgZGF0YUxvZygiW0dDOiIsICptX3Njb3BlLCAiXSAiLCBtX25hbWUsICIg
dG9vazogIiwgdGltaW5nLCAiIG1zIChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcykuXG4i
KTsKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgSGVhcE9wZXJhdGlvbiBtX29wZXJh
dGlvbjsKKyAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fc2NvcGU7CiAgICAgZG91Ymxl
IG1fYmVmb3JlOwogICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKIH07CkBAIC0yMDMsNyArMjA0LDYg
QEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9tYXhIZWFw
U2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24o
ZmFsc2UpCiAgICAgLCBtX3RvdGFsQnl0ZXNWaXNpdGVkKDApCi0gICAgLCBtX29wZXJhdGlvbklu
UHJvZ3Jlc3MoTm9PcGVyYXRpb24pCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCiAgICAgLCBt
X2V4dHJhTWVtb3J5U2l6ZSgwKQogICAgICwgbV9kZXByZWNhdGVkRXh0cmFNZW1vcnlTaXplKDAp
CkBAIC0yNTIsNyArMjUyLDggQEAgYm9vbCBIZWFwOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGlu
ZSkKIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKCFtX3ZtLT5lbnRyeVNjb3BlKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NvbGxlY3Rp
b25TY29wZSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9tdXRhdG9yU3RhdGUgPT0gTXV0YXRvclN0
YXRlOjpSdW5uaW5nKTsKIAogICAgIG1fYXJyYXlCdWZmZXJzLmxhc3RDaGFuY2VUb0ZpbmFsaXpl
KCk7CiAgICAgbV9jb2RlQmxvY2tzLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwpAQCAtNDA4LDcg
KzQwOSw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKGRvdWJsZSBnY1N0YXJ0VGltZSwKICAgICAg
ICAgfQogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAotICAgICAgICBpZiAo
bV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIGlmICht
X2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgICAg
IG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKICAgICAgICAgICAgIG1fc2xvdFZpc2l0b3IuY2xlYXJN
YXJrU3RhY2soKTsKICAgICAgICAgfQpAQCAtNDMxLDcgKzQzMiw3IEBAIHZvaWQgSGVhcDo6bWFy
a1Jvb3RzKGRvdWJsZSBnY1N0YXJ0VGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RW
aXNpdG9yID0gbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy50YWtlTGFzdCgpOwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIFdURjo6cmVnaXN0ZXJHQ1RocmVhZCgp
OworICAgICAgICAgICAgICAgIFdURjo6cmVnaXN0ZXJHQ1RocmVhZChHQ1RocmVhZFR5cGU6Okhl
bHBlcik7CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFBhcmFsbGVs
TW9kZUVuYWJsZXIgcGFyYWxsZWxNb2RlRW5hYmxlcigqc2xvdFZpc2l0b3IpOwpAQCAtNTI2LDcg
KzUyNyw3IEBAIHZvaWQgSGVhcDo6Z2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKENvbnMKIHZvaWQg
SGVhcDo6YmVnaW5NYXJraW5nKCkKIHsKICAgICBUaW1pbmdTY29wZSB0aW1pbmdTY29wZSgqdGhp
cywgIkhlYXA6OmJlZ2luTWFya2luZyIpOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rp
b25TY29wZTo6RnVsbCkKICAgICAgICAgbV9jb2RlQmxvY2tzLT5jbGVhck1hcmtzRm9yRnVsbENv
bGxlY3Rpb24oKTsKICAgICAKICAgICB7CkBAIC01NDQsNyArNTQ1LDcgQEAgdm9pZCBIZWFwOjp2
aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpCiAKIHZvaWQgSGVhcDo6dmlzaXRTbWFsbFN0cmlu
Z3MoKQogewotICAgIGlmICghbV92bS0+c21hbGxTdHJpbmdzLm5lZWRzVG9CZVZpc2l0ZWQobV9v
cGVyYXRpb25JblByb2dyZXNzKSkKKyAgICBpZiAoIW1fdm0tPnNtYWxsU3RyaW5ncy5uZWVkc1Rv
QmVWaXNpdGVkKCptX2NvbGxlY3Rpb25TY29wZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
dm0tPnNtYWxsU3RyaW5ncy52aXNpdFN0cm9uZ1JlZmVyZW5jZXMobV9zbG90VmlzaXRvcik7CkBA
IC03NjMsNyArNzY0LDcgQEAgdm9pZCBIZWFwOjp1cGRhdGVPYmplY3RDb3VudHMoZG91YmxlIGdj
UwogICAgICAgICBkYXRhTG9nRigiXG5OdW1iZXIgb2YgbGl2ZSBPYmplY3RzIGFmdGVyIEdDICVs
dSwgdG9vayAlLjZmIHNlY3NcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZpc2l0Q291
bnQpLCBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gZ2NTdGFydFRpbWUpOwog
ICAgIH0KICAgICAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0
aW9uKQorICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
CiAgICAgICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQgPSAwOwogCiAgICAgbV90b3RhbEJ5dGVzVmlz
aXRlZFRoaXNDeWNsZSA9IG1fc2xvdFZpc2l0b3IuYnl0ZXNWaXNpdGVkKCkgKyB0aHJlYWRCeXRl
c1Zpc2l0ZWQoKTsKQEAgLTg3MSw3ICs4NzIsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZUFsbENvZGVC
bG9ja3MoKQogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVubmluZywgaXQncyBub3Qgc2FmZSB0
byBkZWxldGUgYWxsIEphdmFTY3JpcHQgY29kZSwgc2luY2UKICAgICAvLyB3ZSdsbCBlbmQgdXAg
cmV0dXJuaW5nIHRvIGRlbGV0ZWQgY29kZS4KICAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+ZW50
cnlTY29wZSk7Ci0gICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlv
bik7CisgICAgQVNTRVJUKCFtX2NvbGxlY3Rpb25TY29wZSk7CiAKICAgICBjb21wbGV0ZUFsbEpJ
VFBsYW5zKCk7CiAKQEAgLTkwOCw3ICs5MDksNyBAQCB2b2lkIEhlYXA6OmNsZWFyVW5tYXJrZWRF
eGVjdXRhYmxlcygpCiB2b2lkIEhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCkKIHsK
ICAgICBjbGVhclVubWFya2VkRXhlY3V0YWJsZXMoKTsKLSAgICBtX2NvZGVCbG9ja3MtPmRlbGV0
ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyk7CisgICAgbV9j
b2RlQmxvY2tzLT5kZWxldGVVbm1hcmtlZEFuZFVucmVmZXJlbmNlZCgqbV9jb2xsZWN0aW9uU2Nv
cGUpOwogICAgIG1faml0U3R1YlJvdXRpbmVzLT5kZWxldGVVbm1hcmtlZEpldHRpc29uZWRTdHVi
Um91dGluZXMoKTsKIH0KIApAQCAtOTMyLDcgKzkzMyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFs
bEdhcmJhZ2UoKQogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoRnVsbENvbGxlY3Rpb24pOworICAgIGNvbGxl
Y3RXaXRob3V0QW55U3dlZXAoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKIAogICAgIERlZmVyR0NG
b3JBV2hpbGUgZGVmZXJHQygqdGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUlt
bW9ydGFsT2JqZWN0cygpKSkKQEAgLTk1NSwyOSArOTU2LDI5IEBAIHZvaWQgSGVhcDo6Y29sbGVj
dEFsbEdhcmJhZ2UoKQogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiB9
CiAKLXZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQordm9p
ZCBIZWFwOjpjb2xsZWN0KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICghbV9p
c1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKLQotICAgIGNvbGxlY3RXaXRob3V0QW55
U3dlZXAoY29sbGVjdGlvblR5cGUpOworICAgIAorICAgIGNvbGxlY3RXaXRob3V0QW55U3dlZXAo
c2NvcGUpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0V2l0aG91dEFueVN3
ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCitORVZFUl9JTkxJTkUgdm9pZCBIZWFw
Ojpjb2xsZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUp
CiB7CiAgICAgdm9pZCogc3RhY2tUb3A7CiAgICAgQUxMT0NBVEVfQU5EX0dFVF9SRUdJU1RFUl9T
VEFURShyZWdpc3RlcnMpOwogCi0gICAgY29sbGVjdEltcGwoY29sbGVjdGlvblR5cGUsIHd0ZlRo
cmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3RhY2tUb3AsIHJlZ2lzdGVycyk7CisgICAg
Y29sbGVjdEltcGwoc2NvcGUsIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpLCAmc3Rh
Y2tUb3AsIHJlZ2lzdGVycyk7CiAKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0obV92bSk7CiB9CiAK
LU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXBPcGVyYXRpb24gY29sbGVj
dGlvblR5cGUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVh
ZHM6OlJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQorTkVWRVJfSU5MSU5FIHZv
aWQgSGVhcDo6Y29sbGVjdEltcGwoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSwgdm9p
ZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJT
dGF0ZSYgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIFRpbWluZ1Njb3BlIGNvbGxlY3RJbXBsVGltaW5n
U2NvcGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCIpOworICAgIFRpbWluZ1Nj
b3BlIGNvbGxlY3RJbXBsVGltaW5nU2NvcGUoc2NvcGUsICJIZWFwOjpjb2xsZWN0SW1wbCIpOwog
ICAgIAogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBH
QyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CkBAIC05OTAsODEgKzk5MSw3OCBAQCBORVZFUl9J
TkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAgICAgfQogICAgIAogICAgIGRvdWJs
ZSBnY1N0YXJ0VGltZTsKLSAgICB7Ci0gICAgICAgIFRpbWluZ1Njb3BlIGVhcmx5VGltaW5nU2Nv
cGUoY29sbGVjdGlvblR5cGUsICJIZWFwOjpjb2xsZWN0SW1wbCBiZWZvcmUgbWFya1Jvb3RzIik7
Ci0KLSAgICAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7Ci0gICAgICAgICAgICBEZWZl
ckdDRm9yQVdoaWxlIGF3aGlsZSgqdGhpcyk7Ci0gICAgICAgICAgICB2bSgpLT50eXBlUHJvZmls
ZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJHQyIpKTsKLSAgICAgICAg
fQotCisgICAgCisgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgIERlZmVy
R0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKKyAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9n
KCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7CisgICAgfQorICAgIAog
I2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUg
YXdoaWxlKCp0aGlzKTsKLSAgICAgICAgICAgIEpJVFdvcmtsaXN0OjppbnN0YW5jZSgpLT5jb21w
bGV0ZUFsbEZvclZNKCptX3ZtKTsKLSAgICAgICAgfQorICAgIHsKKyAgICAgICAgRGVmZXJHQ0Zv
ckFXaGlsZSBhd2hpbGUoKnRoaXMpOworICAgICAgICBKSVRXb3JrbGlzdDo6aW5zdGFuY2UoKS0+
Y29tcGxldGVBbGxGb3JWTSgqbV92bSk7CisgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0K
LSAgICAgICAgdm0oKS0+c2hhZG93Q2hpY2tlbigpLnVwZGF0ZSgqdm0oKSwgdm0oKS0+dG9wQ2Fs
bEZyYW1lKTsKLQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZWZlcnJhbERlcHRoKTsKLSAg
ICAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICAgICAgQVNTRVJUKG1faXNTYWZlVG9D
b2xsZWN0KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09
IE5vT3BlcmF0aW9uKTsKLQotICAgICAgICBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAg
ICAgIHdpbGxTdGFydENvbGxlY3Rpb24oY29sbGVjdGlvblR5cGUpOworICAgIAorICAgIHZtKCkt
PnNoYWRvd0NoaWNrZW4oKS51cGRhdGUoKnZtKCksIHZtKCktPnRvcENhbGxGcmFtZSk7CisgICAg
CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJyYWxEZXB0aCk7CisgICAgQVNTRVJUKHZtKCkt
PmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZt
KCktPmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOworICAgIEFTU0VSVChtX2lzU2FmZVRvQ29sbGVjdCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIW1fY29sbGVjdGlvblNjb3BlKTsKKyAgICAKKyAgICBzdXNwZW5kQ29tcGlsZXJUaHJlYWRz
KCk7CisgICAgd2lsbFN0YXJ0Q29sbGVjdGlvbihzY29wZSk7CisgICAgeworICAgICAgICBIZWxw
aW5nR0NTY29wZSBoZWxwaW5nSGVhcFNjb3BlKCp0aGlzKTsKKyAgICAgICAgCisgICAgICAgIGNv
bGxlY3RJbXBsVGltaW5nU2NvcGUuc2V0U2NvcGUoKnRoaXMpOwogICAgICAgICAKLSAgICAgICAg
Y29sbGVjdEltcGxUaW1pbmdTY29wZS5zZXRPcGVyYXRpb24oKnRoaXMpOwotICAgICAgICBlYXJs
eVRpbWluZ1Njb3BlLnNldE9wZXJhdGlvbigqdGhpcyk7Ci0KICAgICAgICAgZ2NTdGFydFRpbWUg
PSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgICAgICBpZiAobV92ZXJp
ZmllcikgewogICAgICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgbGl2ZSBvYmplY3RzIGZyb20gdGhl
IGxhc3QgR0MgY3ljbGUgaGF2ZW4ndCBiZWVuIGNvcnJ1cHRlZCBieQogICAgICAgICAgICAgLy8g
bXV0YXRvcnMgYmVmb3JlIHdlIGJlZ2luIHRoaXMgbmV3IEdDIGN5Y2xlLgogICAgICAgICAgICAg
bV92ZXJpZmllci0+dmVyaWZ5KEhlYXBWZXJpZmllcjo6UGhhc2U6OkJlZm9yZUdDKTsKLQorICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX3ZlcmlmaWVyLT5pbml0aWFsaXplR0NDeWNsZSgpOwog
ICAgICAgICAgICAgbV92ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMoSGVhcFZlcmlmaWVyOjpQ
aGFzZTo6QmVmb3JlTWFya2luZyk7CiAgICAgICAgIH0KLQorICAgICAgICAKICAgICAgICAgZmx1
c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgICAgICBzdG9wQWxsb2NhdGlvbigpOwogICAg
ICAgICBwcmVwYXJlRm9yTWFya2luZygpOwogICAgICAgICBmbHVzaFdyaXRlQmFycmllckJ1ZmZl
cigpOwotCisgICAgICAgIAogICAgICAgICBpZiAoSGFzT3duUHJvcGVydHlDYWNoZSogY2FjaGUg
PSB2bSgpLT5oYXNPd25Qcm9wZXJ0eUNhY2hlKCkpCiAgICAgICAgICAgICBjYWNoZS0+Y2xlYXIo
KTsKKyAgICAgICAgCisgICAgICAgIG1hcmtSb290cyhnY1N0YXJ0VGltZSwgc3RhY2tPcmlnaW4s
IHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7CisgICAgICAgIAorICAgICAgICBpZiAo
bV92ZXJpZmllcikgeworICAgICAgICAgICAgbV92ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMo
SGVhcFZlcmlmaWVyOjpQaGFzZTo6QWZ0ZXJNYXJraW5nKTsKKyAgICAgICAgICAgIG1fdmVyaWZp
ZXItPnZlcmlmeShIZWFwVmVyaWZpZXI6OlBoYXNlOjpBZnRlck1hcmtpbmcpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpCisgICAgICAgICAg
ICB2bSgpLT50eXBlUHJvZmlsZXIoKS0+aW52YWxpZGF0ZVR5cGVTZXRDYWNoZSgpOworICAgICAg
ICAKKyAgICAgICAgcmVhcFdlYWtIYW5kbGVzKCk7CisgICAgICAgIHBydW5lU3RhbGVFbnRyaWVz
RnJvbVdlYWtHQ01hcHMoKTsKKyAgICAgICAgc3dlZXBBcnJheUJ1ZmZlcnMoKTsKKyAgICAgICAg
c25hcHNob3RVbnN3ZXB0KCk7CisgICAgICAgIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXpl
cnMoKTsKKyAgICAgICAgcmVtb3ZlRGVhZENvbXBpbGVyV29ya2xpc3RFbnRyaWVzKCk7CisgICAg
ICAgIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7CisgICAgICAgIGRlbGV0ZVNvdXJjZVBy
b3ZpZGVyQ2FjaGVzKCk7CisgICAgICAgIAorICAgICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVw
ZXIoKTsKKyAgICAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRp
bmcodGhpcyk7CisgICAgICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmco
KTsKKyAgICAgICAgCisgICAgICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CisgICAgICAgIHVw
ZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKICAgICB9Ci0KLSAgICBtYXJrUm9vdHMoZ2NTdGFydFRp
bWUsIHN0YWNrT3JpZ2luLCBzdGFja1RvcCwgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpOwotICAgIAot
ICAgIFRpbWluZ1Njb3BlIGxhdGVUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6OmNvbGxlY3RJbXBs
IGFmdGVyIG1hcmtSb290cyIpOwotCi0gICAgaWYgKG1fdmVyaWZpZXIpIHsKLSAgICAgICAgbV92
ZXJpZmllci0+Z2F0aGVyTGl2ZU9iamVjdHMoSGVhcFZlcmlmaWVyOjpQaGFzZTo6QWZ0ZXJNYXJr
aW5nKTsKLSAgICAgICAgbV92ZXJpZmllci0+dmVyaWZ5KEhlYXBWZXJpZmllcjo6UGhhc2U6OkFm
dGVyTWFya2luZyk7Ci0gICAgfQotCi0gICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQotICAg
ICAgICB2bSgpLT50eXBlUHJvZmlsZXIoKS0+aW52YWxpZGF0ZVR5cGVTZXRDYWNoZSgpOwotCi0g
ICAgcmVhcFdlYWtIYW5kbGVzKCk7Ci0gICAgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFw
cygpOwotICAgIHN3ZWVwQXJyYXlCdWZmZXJzKCk7Ci0gICAgc25hcHNob3RVbnN3ZXB0KCk7Ci0g
ICAgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwotICAgIHJlbW92ZURlYWRDb21w
aWxlcldvcmtsaXN0RW50cmllcygpOwotICAgIGRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7
Ci0gICAgZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKTsKLQotICAgIG5vdGlmeUluY3JlbWVu
dGFsU3dlZXBlcigpOwotICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhl
Y3V0aW5nKHRoaXMpOwotICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmco
KTsKLQotICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7Ci0gICAgdXBkYXRlQWxsb2NhdGlvbkxp
bWl0cygpOwogICAgIGRpZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUpOwogICAgIHJlc3Vt
ZUNvbXBpbGVyVGhyZWFkcygpOwogICAgIHN3ZWVwTGFyZ2VBbGxvY2F0aW9ucygpOwpAQCAtMTEw
MywyMiArMTEwMSwyMiBAQCB2b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNv
bGxlY3Rpb25UeXBlKQordm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENv
bGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAg
ICAgIGRhdGFMb2coIj0+ICIpOwogICAgIAotICAgIGlmIChzaG91bGREb0Z1bGxDb2xsZWN0aW9u
KGNvbGxlY3Rpb25UeXBlKSkgewotICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBGdWxs
Q29sbGVjdGlvbjsKKyAgICBpZiAoc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihzY29wZSkpIHsKKyAg
ICAgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw7CiAgICAgICAg
IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IGZhbHNlOwogICAgICAgICBpZiAoT3B0aW9uczo6
bG9nR0MoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bGxDb2xsZWN0aW9uLCAiKTsKICAgICB9
IGVsc2UgewotICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBFZGVuQ29sbGVjdGlvbjsK
KyAgICAgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBDb2xsZWN0aW9uU2NvcGU6OkVkZW47CiAgICAg
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICAgICAgZGF0YUxvZygiRWRlbkNvbGxl
Y3Rpb24sICIpOwogICAgIH0KLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxD
b2xsZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29w
ZTo6RnVsbCkgewogICAgICAgICBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVB
ZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICAgICAgbV9l
eHRyYU1lbW9yeVNpemUgPSAwOwogICAgICAgICBtX2RlcHJlY2F0ZWRFeHRyYU1lbW9yeVNpemUg
PSAwOwpAQCAtMTEyOSw3ICsxMTI3LDcgQEAgdm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9u
KEhlYXBPcGVyYQogICAgICAgICBpZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKICAgICAgICAg
ICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbik7
CisgICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVk
ZW4pOwogICAgICAgICBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3QgPSBtX3NpemVBZnRlckxh
c3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICB9CiAKQEAgLTExNDcs
NyArMTE0NSw3IEBAIHZvaWQgSGVhcDo6Zmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpCiAKIHZv
aWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKQogewotICAgIGlmIChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0aW9uU2Nv
cGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKSB7CiAgICAgICAgIG1fd3JpdGVCYXJyaWVyQnVm
ZmVyLmZsdXNoKCp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExNzEsNyArMTE2
OSw3IEBAIHZvaWQgSGVhcDo6cmVhcFdlYWtIYW5kbGVzKCkKIAogdm9pZCBIZWFwOjpwcnVuZVN0
YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dy
ZXNzICE9IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSAhPSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8mIHBydW5l
Q2FsbGJhY2sgOiBtX3dlYWtHQ01hcHMudmFsdWVzKCkpCiAgICAgICAgIHBydW5lQ2FsbGJhY2so
KTsKQEAgLTExOTUsNyArMTE5Myw3IEBAIHZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlkZXJD
YWNoZXMoKQogCiB2b2lkIEhlYXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiB7Ci0gICAg
aWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgIGlmICht
X2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgaWYg
KCFtX2xvZ2ljYWxseUVtcHR5V2Vha0Jsb2Nrcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2lu
ZGV4T2ZOZXh0TG9naWNhbGx5RW1wdHlXZWFrQmxvY2tUb1N3ZWVwID0gMDsKICAgICB9CkBAIC0x
MjQzLDcgKzEyNDEsNyBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQogICAg
IGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYgY3VycmVudEhlYXBTaXplID4gT3B0aW9u
czo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICBIZWFwU3RhdGlzdGljczo6ZXhpdFdpdGhGYWls
dXJlKCk7CiAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9u
KSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkg
ewogICAgICAgICAvLyBUbyBhdm9pZCBwYXRob2xvZ2ljYWwgR0MgY2h1cm4gaW4gdmVyeSBzbWFs
bCBhbmQgdmVyeSBsYXJnZSBoZWFwcywgd2Ugc2V0CiAgICAgICAgIC8vIHRoZSBuZXcgYWxsb2Nh
dGlvbiBsaW1pdCBiYXNlZCBvbiB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwLCB3aXRoIGEK
ICAgICAgICAgLy8gZml4ZWQgbWluaW11bS4KQEAgLTEyOTgsOCArMTI5Niw4IEBAIHZvaWQgSGVh
cDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rp
b24oZG91YmxlIGdjU3RhcnRUaW1lKQogewogICAgIGRvdWJsZSBnY0VuZFRpbWUgPSBXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIEhlYXBPcGVyYXRpb24gb3BlcmF0aW9u
ID0gbV9vcGVyYXRpb25JblByb2dyZXNzOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlID0gKm1fY29sbGVj
dGlvblNjb3BlOworICAgIGlmIChzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAg
ICAgIG1fbGFzdEZ1bGxHQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1lOwogICAgIGVs
c2UKICAgICAgICAgbV9sYXN0RWRlbkdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0gZ2NTdGFydFRpbWU7
CkBAIC0xMzIyLDExICsxMzIwLDExIEBAIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29sbGVjdGlvbihk
b3VibGUgZ2MKICAgICAgICAgcmVtb3ZlRGVhZEhlYXBTbmFwc2hvdE5vZGVzKCpoZWFwUHJvZmls
ZXIpOwogICAgIH0KIAotICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9
PSBFZGVuQ29sbGVjdGlvbiB8fCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rp
b24pOwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29sbGVjdGlvblNjb3BlKTsKKyAgICBtX2NvbGxlY3Rpb25TY29wZSA9IE51
bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAg
IG9ic2VydmVyLT5kaWRHYXJiYWdlQ29sbGVjdChvcGVyYXRpb24pOworICAgICAgICBvYnNlcnZl
ci0+ZGlkR2FyYmFnZUNvbGxlY3Qoc2NvcGUpOwogfQogCiB2b2lkIEhlYXA6OnJlc3VtZUNvbXBp
bGVyVGhyZWFkcygpCkBAIC0xMzg4LDcgKzEzODYsNyBAQCBib29sIEhlYXA6OmlzVmFsaWRBbGxv
Y2F0aW9uKHNpemVfdCkKICAgICBpZiAoIWlzVmFsaWRUaHJlYWRTdGF0ZShtX3ZtKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09w
ZXJhdGlvbikKKyAgICBpZiAoaXNDdXJyZW50VGhyZWFkQnVzeSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDY1LDI0ICsxNDYzLDE0IEBAIHZv
aWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoSlNDZWwKICAgICBtX3dyaXRlQmFycmll
ckJ1ZmZlci5hZGQoY2VsbCk7CiB9CiAKLWJvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlv
bihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSBjb25zdAorYm9vbCBIZWFw
OjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUp
IGNvbnN0CiB7CiAgICAgaWYgKCFPcHRpb25zOjp1c2VHZW5lcmF0aW9uYWxHQygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIHN3aXRjaCAocmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpIHsK
LSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2Fz
ZSBGdWxsQ29sbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBBbnlDb2xs
ZWN0aW9uOgorICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJldHVybiBtX3Nob3VsZERvRnVsbENv
bGxlY3Rpb247Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKnNjb3BlID09IENv
bGxlY3Rpb25TY29wZTo6RnVsbDsKIH0KIAogdm9pZCBIZWFwOjphZGRMb2dpY2FsbHlFbXB0eVdl
YWtCbG9jayhXZWFrQmxvY2sqIGJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNyArMjIsMTggQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIgogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgog
I2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCiAjaW5jbHVkZSAiSGVhcE9ic2VydmVyLmgiCi0jaW5j
bHVkZSAiSGVhcE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkxpc3RhYmxlSGFuZGxlci5oIgogI2lu
Y2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5o
IgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQuaCIK
ICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgogI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZUlEVGFibGUuaCIKQEAgLTQ4LDcgKzQ5LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIEFsbG9jYXRpb25TY29wZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIENvZGVCbG9j
a1NldDsKIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0OwpAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBI
ZWFwOwogY2xhc3MgSGVhcFByb2ZpbGVyOwogY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogY2xhc3Mg
SGVhcFZlcmlmaWVyOworY2xhc3MgSGVscGluZ0dDU2NvcGU7CiBjbGFzcyBJbmNyZW1lbnRhbFN3
ZWVwZXI7CiBjbGFzcyBKSVRTdHViUm91dGluZTsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwpA
QCAtMTM5LDExICsxNDAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoSGVhcE9i
c2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIpOyB9CiAgICAg
dm9pZCByZW1vdmVPYnNlcnZlcihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJz
LnJlbW92ZUZpcnN0KG9ic2VydmVyKTsgfQogCi0gICAgLy8gdHJ1ZSBpZiBjb2xsZWN0aW9uIGlz
IGluIHByb2dyZXNzCi0gICAgYm9vbCBpc0NvbGxlY3RpbmcoKTsKLSAgICBIZWFwT3BlcmF0aW9u
IG9wZXJhdGlvbkluUHJvZ3Jlc3MoKSB7IHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7IH0K
LSAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVz
cwotICAgIGJvb2wgaXNCdXN5KCk7CisgICAgTXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbXV0YXRvclN0YXRlOyB9CisgICAgT3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiBjb2xsZWN0aW9uU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsg
fQorCisgICAgLy8gV2UncmUgYWx3YXlzIGJ1c3kgb24gdGhlIGNvbGxlY3Rpb24gdGhyZWFkcy4g
T24gdGhlIG1haW4gdGhyZWFkLCB0aGlzIHJldHVybnMgdHJ1ZSBpZiB3ZSdyZQorICAgIC8vIGhl
bHBpbmcgaGVhcC4KKyAgICBib29sIGlzQ3VycmVudFRocmVhZEJ1c3koKTsKKyAgICAKICAgICBN
YXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Io
KSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhvdXREZXN0cnVj
dG9yKCk7IH0KICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yT2JqZWN0RGVz
dHJ1Y3RvcigpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aERl
c3RydWN0b3IoKTsgfQogICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JBdXhp
bGlhcnlEYXRhKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvckF1eGlsaWFyeURh
dGEoKTsgfQpAQCAtMTcxLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKICAgICBib29sIHNob3VsZENvbGxlY3QoKTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0
aW9uVHlwZSA9IEFueUNvbGxlY3Rpb24pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29s
bGVjdChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+ID0gTnVsbG9wdCk7CiAgICAgYm9vbCBjb2xs
ZWN0SWZOZWNlc3NhcnlPckRlZmVyKEdDRGVmZXJyYWxDb250ZXh0KiA9IG51bGxwdHIpOyAvLyBS
ZXR1cm5zIHRydWUgaWYgaXQgZGlkIGNvbGxlY3QuCiAgICAgdm9pZCBjb2xsZWN0QWNjb3JkaW5n
VG9EZWZlckdDUHJvYmFiaWxpdHkoKTsKIApAQCAtMjY4LDcgKzI3MSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCB1bnNpZ25lZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0
dXJuICZtX2JhcnJpZXJUaHJlc2hvbGQ7IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3Mg
QWxsb2NhdGlvblNjb3BlOworICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW5nU2NvcGU7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICBmcmllbmQgY2xhc3MgRGVmZXJHQzsKICAgICBm
cmllbmQgY2xhc3MgRGVmZXJHQ0ZvckFXaGlsZTsKQEAgLTI3OCw2ICsyODEsNyBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBIYW5kbGVTZXQ7CiAgICAgZnJpZW5kIGNsYXNzIEhlYXBVdGls
OwogICAgIGZyaWVuZCBjbGFzcyBIZWFwVmVyaWZpZXI7CisgICAgZnJpZW5kIGNsYXNzIEhlbHBp
bmdHQ1Njb3BlOwogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViUm91dGluZTsKICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFj
ZTsKQEAgLTI5Myw3ICsyOTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwg
R0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0V2l0aG91dEFu
eVN3ZWVwKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKKyAg
ICB2b2lkIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9
IE51bGxvcHQpOwogCiAgICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOyAv
LyBGb3IgdXNlIHdpdGggb2JqZWN0cyB3aXRoIGRlc3RydWN0b3JzLgogICAgIHZvaWQqIGFsbG9j
YXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0
aG91dCBkZXN0cnVjdG9ycy4KQEAgLTMxMiwxMCArMzE2LDEwIEBAIHByaXZhdGU6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNp
emVfdCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXByZWNhdGVkUmVwb3J0RXh0cmFN
ZW1vcnlTbG93Q2FzZShzaXplX3QpOwogCi0gICAgdm9pZCBjb2xsZWN0SW1wbChIZWFwT3BlcmF0
aW9uLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpS
ZWdpc3RlclN0YXRlJik7CisgICAgdm9pZCBjb2xsZWN0SW1wbChPcHRpb25hbDxDb2xsZWN0aW9u
U2NvcGU+LCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRz
OjpSZWdpc3RlclN0YXRlJik7CiAKICAgICB2b2lkIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsK
LSAgICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlw
ZSk7CisgICAgdm9pZCB3aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29w
ZT4pOwogICAgIHZvaWQgZmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgIHZvaWQgZmx1
c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW9uKCk7CkBAIC0z
NjYsNyArMzcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlX
ZWFrQmxvY2tzKCk7CiAgICAgYm9vbCBzd2VlcE5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jaygp
OwogCi0gICAgYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVz
dGVkQ29sbGVjdGlvblR5cGUpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlv
bihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHJlcXVlc3RlZENvbGxlY3Rpb25TY29wZSkgY29u
c3Q7CiAKICAgICB2b2lkIGluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKICAgICB2b2lkIGRlY3Jl
bWVudERlZmVycmFsRGVwdGgoKTsKQEAgLTM5NCw3ICszOTgsOCBAQCBwcml2YXRlOgogICAgIHNp
emVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVkOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVk
VGhpc0N5Y2xlOwogICAgIAotICAgIEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNz
OworICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9jb2xsZWN0aW9uU2NvcGU7CisgICAg
TXV0YXRvclN0YXRlIG1fbXV0YXRvclN0YXRlIHsgTXV0YXRvclN0YXRlOjpSdW5uaW5nIH07CiAg
ICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2Ug
bV9vYmplY3RTcGFjZTsKICAgICBHQ0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4g
bV9hcnJheUJ1ZmZlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxp
bmVzLmgJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDIxICs0NSwxNiBAQCBpbmxpbmUgYm9v
bCBIZWFwOjpzaG91bGRDb2xsZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
bV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9vcGVy
YXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChjb2xsZWN0aW9uU2NvcGUo
KSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdHQykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCiAgICAgICAg
IHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6
ZSgpOwogICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID4gbV9tYXhFZGVuU2l6
ZTsKIH0KIAotaW5saW5lIGJvb2wgSGVhcDo6aXNCdXN5KCkKK2lubGluZSBib29sIEhlYXA6Omlz
Q3VycmVudFRocmVhZEJ1c3koKQogewotICAgIHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
IT0gTm9PcGVyYXRpb247Ci19Ci0KLWlubGluZSBib29sIEhlYXA6OmlzQ29sbGVjdGluZygpCi17
Ci0gICAgcmV0dXJuIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbiB8fCBt
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb247CisgICAgcmV0dXJuIG1heUJl
R0NUaHJlYWQoKSB8fCBtdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmc7CiB9
CiAKIEFMV0FZU19JTkxJTkUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBIZWFwQ2VsbCogY2VsbCkK
QEAgLTc2LDcgKzcxLDcgQEAgaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSlNWYWx1ZSB2
KQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWQoY29uc3Qgdm9pZCogcmF3Q2Vs
bCkKIHsKLSAgICBBU1NFUlQoIW1heUJlR0NUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1heUJlR0NU
aHJlYWQoKSAhPSBHQ1RocmVhZFR5cGU6OkhlbHBlcik7CiAgICAgSGVhcENlbGwqIGNlbGwgPSBi
aXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKTsKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFs
bG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFy
a2VkKCk7CkBAIC0xNjEsNyArMTU2LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFN
ZW1vcnlBbGxvYwogaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKENl
bGxTdGF0ZSBvbGRTdGF0ZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBkb3VibGUtY291bnQgdGhlIGV4dHJhIG1lbW9yeSB0aGF0IHdhcyByZXBvcnRlZCBpbiBwcmV2
aW91cyBjb2xsZWN0aW9ucy4KLSAgICBpZiAob3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5D
b2xsZWN0aW9uICYmIG9sZFN0YXRlID09IENlbGxTdGF0ZTo6T2xkR3JleSkKKyAgICBpZiAoY29s
bGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuICYmIG9sZFN0YXRlID09IENl
bGxTdGF0ZTo6T2xkR3JleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2l6ZV90KiBjb3VudGVy
ID0gJm1fZXh0cmFNZW1vcnlTaXplOwpAQCAtMTc3LDcgKzE3Miw3IEBAIGlubGluZSB2b2lkIEhl
YXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXQKIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dGVy
bmFsTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQogewogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gZG91YmxlLWNvdW50IHRoZSBleHRlcm5hbCBtZW1vcnkgdGhh
dCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29sbGVjdGlvbnMuCi0gICAgaWYgKG9wZXJhdGlv
bkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6
Ok9sZEdyZXkpCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dGVybmFsTWVtb3J5U2l6ZTsKQEAgLTM3Miw3
ICszNjcsNyBAQCBpbmxpbmUgYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlCiAKIGlu
bGluZSB2b2lkIEhlYXA6OmNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSgpCiB7
Ci0gICAgaWYgKGlzRGVmZXJyZWQoKSB8fCAhbV9pc1NhZmVUb0NvbGxlY3QgfHwgbV9vcGVyYXRp
b25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKQorICAgIGlmIChpc0RlZmVycmVkKCkgfHwgIW1f
aXNTYWZlVG9Db2xsZWN0IHx8IGNvbGxlY3Rpb25TY29wZSgpIHx8IG11dGF0b3JTdGF0ZSgpID09
IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmFu
ZG9tTnVtYmVyKCkgPCBPcHRpb25zOjpkZWZlckdDUHJvYmFiaWxpdHkoKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9ic2VydmVyLmgJKHJldmlzaW9uIDIwNzY0MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSGVhcE9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIZWFwT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkhlYXBPYnNlcnZlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsR2FyYmFn
ZUNvbGxlY3QoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KEhlYXBP
cGVyYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoQ29sbGVj
dGlvblNjb3BlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAyMDc2NDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSGVhcE9wZXJhdGlvbiBvcGVyYXRpb24pCi17
Ci0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsKLSAgICBjYXNlIE5vT3BlcmF0aW9uOgotICAgICAg
ICBvdXQucHJpbnQoIk5vbmUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQWxsb2NhdGlv
bjoKLSAgICAgICAgb3V0LnByaW50KCJBbGxvYyIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBGdWxsQ29sbGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJGdWxsIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAgICBvdXQucHJpbnQoIkVkZW4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKLSAgICAgICAgb3V0
LnByaW50KCJBbnkiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9uIDIwNzY0
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWVudW0gSGVhcE9wZXJhdGlvbiB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0
aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rpb24sIEFueUNvbGxlY3Rpb24gfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBQcmludFN0cmVh
bTsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SGVhcE9wZXJh
dGlvbik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFZlcmlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Mywy
NCArNDMsNiBAQCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1CiAgICAg
bV9jeWNsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4obV9udW1iZXJPZkN5Y2xlcyk7
CiB9CiAKLWNvbnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6Y29sbGVjdGlvblR5cGVOYW1lKEhlYXBP
cGVyYXRpb24gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE5vT3BlcmF0
aW9uOgotICAgICAgICByZXR1cm4gIk5vT3BlcmF0aW9uIjsKLSAgICBjYXNlIEFueUNvbGxlY3Rp
b246Ci0gICAgICAgIHJldHVybiAiQW55Q29sbGVjdGlvbiI7Ci0gICAgY2FzZSBBbGxvY2F0aW9u
OgotICAgICAgICByZXR1cm4gIkFsbG9jYXRpb24iOwotICAgIGNhc2UgRWRlbkNvbGxlY3Rpb246
Ci0gICAgICAgIHJldHVybiAiRWRlbkNvbGxlY3Rpb24iOwotICAgIGNhc2UgRnVsbENvbGxlY3Rp
b246Ci0gICAgICAgIHJldHVybiAiRnVsbENvbGxlY3Rpb24iOwotICAgIH0KLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOyAvLyBTaWxlbmNpbmcg
YSBjb21waWxlciB3YXJuaW5nLgotfQotCiBjb25zdCBjaGFyKiBIZWFwVmVyaWZpZXI6OnBoYXNl
TmFtZShIZWFwVmVyaWZpZXI6OlBoYXNlIHBoYXNlKQogewogICAgIHN3aXRjaCAocGhhc2UpIHsK
QEAgLTgxLDcgKzYzLDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmluaXRpYWxpemVHQ0N5Y2xlKCkK
IHsKICAgICBIZWFwKiBoZWFwID0gbV9oZWFwOwogICAgIGluY3JlbWVudEN5Y2xlKCk7Ci0gICAg
Y3VycmVudEN5Y2xlKCkuY29sbGVjdGlvblR5cGUgPSBoZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCk7CisgICAgY3VycmVudEN5Y2xlKCkuc2NvcGUgPSAqaGVhcC0+Y29sbGVjdGlvblNjb3BlKCk7
CiB9CiAKIHN0cnVjdCBHYXRoZXJMaXZlT2JqRnVuY3RvciA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1
bmN0b3IgewpAQCAtMTk1LDcgKzE3Nyw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpyZXBvcnRPYmpl
Y3QoTGl2ZU9iamUKIAogICAgIGlmIChvYmpEYXRhLmlzQ29uZmlybWVkRGVhZCkgewogICAgICAg
ICBkYXRhTG9nRigiRk9VTkQgZGVhZCBvYmogJXAgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwK
LSAgICAgICAgICAgIG9iaiwgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCks
IGxpc3QubmFtZSk7CisgICAgICAgICAgICBvYmosIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29w
ZU5hbWUoY3ljbGUuc2NvcGUpLCBsaXN0Lm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMDYsNyArMTg4LDcgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OnJlcG9ydE9iamVjdChMaXZl
T2JqZQogICAgIGRhdGFMb2dGKCJGT1VORCBvYmogJXAgdHlwZSAnJXMnIGJ1dHRlcmZseSAlcCAo
YmFzZSAlcCkgaW4gR0NbJWRdICVzIGxpc3QgJyVzJ1xuIiwKICAgICAgICAgb2JqLCBzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUsCiAgICAgICAgIGJ1dHRlcmZseSwgYnV0dGVyZmx5
QmFzZSwKLSAgICAgICAgY3ljbGVJbmRleCwgY3ljbGUuY29sbGVjdGlvblR5cGVOYW1lKCksIGxp
c3QubmFtZSk7CisgICAgICAgIGN5Y2xlSW5kZXgsIGNvbGxlY3Rpb25TY29wZU5hbWUoY3ljbGUu
c2NvcGUpLCBsaXN0Lm5hbWUpOwogfQogCiB2b2lkIEhlYXBWZXJpZmllcjo6Y2hlY2tJZlJlY29y
ZGVkKEpTT2JqZWN0KiBvYmopCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuaAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFZlcmlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGlj
OgogICAgIC8vIG9iamVjdCB3YXMgaW4gYW55IG9mIHRob3NlIGxpc3RzLgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY2hlY2tJZlJlY29yZGVkKEpTT2JqZWN0Kik7CiAKLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29sbGVjdGlvblR5cGVOYW1lKEhlYXBPcGVyYXRpb24pOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBwaGFzZU5hbWUoUGhhc2UpOwogCiBwcml2YXRlOgpAQCAtNjUsMTQgKzY0
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgSGVhcE9wZXJh
dGlvbiBjb2xsZWN0aW9uVHlwZTsKKyAgICAgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlOwogICAg
ICAgICBMaXZlT2JqZWN0TGlzdCBiZWZvcmU7CiAgICAgICAgIExpdmVPYmplY3RMaXN0IGFmdGVy
OwotCi0gICAgICAgIGNvbnN0IGNoYXIqIGNvbGxlY3Rpb25UeXBlTmFtZSgpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZWFwVmVyaWZpZXI6OmNvbGxlY3Rpb25UeXBlTmFt
ZShjb2xsZWN0aW9uVHlwZSk7Ci0gICAgICAgIH0KICAgICB9OwogCiAgICAgdm9pZCBpbmNyZW1l
bnRDeWNsZSgpIHsgbV9jdXJyZW50Q3ljbGUgPSAobV9jdXJyZW50Q3ljbGUgKyAxKSAlIG1fbnVt
YmVyT2ZDeWNsZXM7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlbHBpbmdH
Q1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVscGlu
Z0dDU2NvcGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWxwaW5nR0NTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkhlYXAuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEhlbHBpbmdHQ1Njb3BlIHsKK3B1YmxpYzoKKyAgICBIZWxwaW5nR0NTY29wZShI
ZWFwJiBoZWFwKQorICAgICAgICA6IG1faGVhcChoZWFwKQorICAgICAgICAsIG1fb2xkU3RhdGUo
bV9oZWFwLm1fbXV0YXRvclN0YXRlKQorICAgIHsKKyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0
YXRlID0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0M7CisgICAgfQorICAgIAorICAgIH5IZWxwaW5n
R0NTY29wZSgpCisgICAgeworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3RhdGUgPSBtX29sZFN0
YXRlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBIZWFwJiBtX2hlYXA7CisgICAgTXV0YXRvclN0
YXRlIG1fb2xkU3RhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCShyZXZpc2lvbiAy
MDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTGFyZ2VBbGxvY2F0aW9uOjpy
ZWFwV2Vha1NldCgpCiAKIHZvaWQgTGFyZ2VBbGxvY2F0aW9uOjpmbGlwKCkKIHsKLSAgICBBU1NF
UlQoaGVhcCgpLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pOworICAg
IEFTU0VSVChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVs
bCk7CiAgICAgY2xlYXJNYXJrZWQoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFya2Vk
QWxsb2NhdG9yLmgiCiAKLSNpbmNsdWRlICJBbGxvY2F0aW9uU2NvcGUuaCIKKyNpbmNsdWRlICJB
bGxvY2F0aW5nU2NvcGUuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCkBAIC0xODUsNyAr
MTg1LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6ZG9UZQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1faGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsK
ICAgICAgICAgfQotICAgICAgICBBU1NFUlQobV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gTm9PcGVyYXRpb24pOwogICAgIH0KICAgICBpZiAoKythbGxvY2F0aW9uQ291bnQgPj0gT3B0
aW9uczo6c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzKCkpCiAgICAgICAgIGFsbG9jYXRpb25Db3Vu
dCA9IDA7CkBAIC0yMTQsMTAgKzIxMywxMCBAQCB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9j
YXRlU2xvd0Nhc2VJCiAgICAgCiAgICAgZGlkQ29uc3VtZUZyZWVMaXN0KCk7CiAgICAgCisgICAg
QWxsb2NhdGluZ1Njb3BlIGhlYWxwaW5nSGVhcCgqbV9oZWFwKTsKKwogICAgIG1faGVhcC0+Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcihkZWZlcnJhbENvbnRleHQpOwogICAgIAotICAgIEFsbG9j
YXRpb25TY29wZSBhbGxvY2F0aW9uU2NvcGUoKm1faGVhcCk7Ci0KICAgICB2b2lkKiByZXN1bHQg
PSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShy
ZXN1bHQgIT0gMCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJEZXN0
cnVjdGlvbk1vZGUuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkhlYXBDZWxs
LmgiCi0jaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvblN0YXR1
cy5oIgogI2luY2x1ZGUgIldlYWtTZXQuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24g
MjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFy
ZUZvckFsbG9jYXRpb24oKQogCiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0Fj
dGl2ZVdlYWtTZXRzKTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNz
KCkgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNOdXJz
ZXJ5T2Zmc2V0Rm9yU3dlZXAgPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAg
IGVsc2UKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0g
MDsKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKEhl
YXBSb290CiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKICAg
ICAKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rp
b24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogfQogCkBA
IC0zNjcsNyArMzY3LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKICAgICAK
ICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogICAgIAotICAgIGlmICht
X2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAo
bV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAg
ICAgIG1fYWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiB9CiAKQEAgLTM4Myw3ICszODMs
NyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzdG9wQWxsb2NhdGluZygpCiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OnByZXBhcmVGb3JNYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblBy
b2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlv
bnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiA9IG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZz
ZXQ7CiAgICAgZWxzZQogICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29s
bGVjdGlvbiA9IDA7CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5r
KCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFw
LT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9o
ZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAg
ICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICAgICAgYWxsb2NhdG9y
LmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCk7CkBAIC01OTcsNyArNTk3LDcgQEAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogTWFya2VkU3BhY2U6OmZpbmRFbQogCiB2b2lkIE1hcmtlZFNwYWNl
OjpzbmFwc2hvdFVuc3dlcHQoKQogewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jl
c3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgeworICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29w
ZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikgewogICAgICAgICBmb3JFYWNoQWxsb2NhdG9y
KAogICAgICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAgICBhbGxvY2F0b3Iuc25hcHNob3RVbnN3ZXB0Rm9y
RWRlbkNvbGxlY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0
b3JTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0
YXRvclN0YXRlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NdXRhdG9yU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTXV0YXRvclN0YXRlLmgiCisK
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBN
dXRhdG9yU3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgTXV0
YXRvclN0YXRlOjpSdW5uaW5nOgorICAgICAgICBvdXQucHJpbnQoIlJ1bm5pbmciKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgTXV0YXRvclN0YXRlOjpBbGxvY2F0aW5nOgorICAgICAgICBv
dXQucHJpbnQoIkFsbG9jYXRpbmciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTXV0YXRv
clN0YXRlOjpIZWxwaW5nR0M6CisgICAgICAgIG91dC5wcmludCgiSGVscGluZ0dDIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L011dGF0b3JTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L011dGF0b3JTdGF0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL011dGF0b3JTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgTXV0
YXRvclN0YXRlIHsKKyAgICAvLyBUaGUgbXV0YXRvciBpcyBydW5uaW5nIHdoZW4gaXQncyBub3Qg
aW5zaWRlIGEgSGVhcCBzbG93IHBhdGguCisgICAgUnVubmluZywKKyAgICAKKyAgICAvLyBUaGUg
bXV0YXRvciBpcyBpbiBhbiBhbGxvY2F0aW9uIHNsb3cgcGF0aC4KKyAgICBBbGxvY2F0aW5nLAor
ICAgIAorICAgIC8vIFRoZSBtdXRhdG9yIHdhcyBhc2tlZCBieSB0aGUgR0MgdG8gZG8gc29tZSB3
b3JrLgorICAgIEhlbHBpbmdHQworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFj
ZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiwgSlNDOjpNdXRhdG9yU3RhdGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24g
MjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIFNsb3RWaXNpdG9yOjp+U2xvdFZpc2l0b3Io
KQogCiB2b2lkIFNsb3RWaXNpdG9yOjpkaWRTdGFydE1hcmtpbmcoKQogewotICAgIGlmIChoZWFw
KCktPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAoaGVh
cCgpLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAg
IEFTU0VSVChtX29wYXF1ZVJvb3RzLmlzRW1wdHkoKSk7IC8vIFNob3VsZCBoYXZlIG1lcmdlZCBi
eSBub3cuCiAgICAgZWxzZQogICAgICAgICByZXNldCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjAsMTcgKzMyMCwxNiBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0
CiAgICAgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjZWxsLCBvYmplY3RHcm91
cCwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdl
Q29sbGVjdGlvbjo6VHlwZSBwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKEhlYXBPcGVyYXRp
b24gb3BlcmF0aW9uKQorc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkhlYXA6OkdhcmJhZ2VD
b2xsZWN0aW9uOjpUeXBlIHByb3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24oQ29sbGVjdGlvblNj
b3BlIHNjb3BlKQogewotICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7Ci0gICAgY2FzZSBGdWxsQ29s
bGVjdGlvbjoKKyAgICBzd2l0Y2ggKHNjb3BlKSB7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGw6CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdl
Q29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgorICAgIGNh
c2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgogICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OlBhcnRpYWw7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKICAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkhlYXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpGdWxsOwogfQogCiB2b2lkIEluc3Bl
Y3RvckhlYXBBZ2VudDo6d2lsbEdhcmJhZ2VDb2xsZWN0KCkKQEAgLTM0MSw3ICszNDAsNyBAQCB2
b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6d2lsbEdhcmJhZ2VDb2xsCiAgICAgbV9nY1N0YXJ0VGlt
ZSA9IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVjdChIZWFwT3BlcmF0
aW9uIG9wZXJhdGlvbikKK3ZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVj
dChDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAg
QVNTRVJUKCFzdGQ6OmlzbmFuKG1fZ2NTdGFydFRpbWUpKTsKQEAgLTM1Niw3ICszNTUsNyBAQCB2
b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlCiAgICAgLy8gVk0gYXMgdGhl
IGluc3BlY3RlZCBwYWdlLgogCiAgICAgR2FyYmFnZUNvbGxlY3Rpb25EYXRhIGRhdGE7Ci0gICAg
ZGF0YS50eXBlID0gcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihvcGVyYXRpb24pOworICAg
IGRhdGEudHlwZSA9IHByb3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24oc2NvcGUpOwogICAgIGRh
dGEuc3RhcnRUaW1lID0gbV9nY1N0YXJ0VGltZTsKICAgICBkYXRhLmVuZFRpbWUgPSBtX2Vudmly
b25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuaAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gSGVhcE9ic2VydmVyCiAgICAgdm9p
ZCB3aWxsR2FyYmFnZUNvbGxlY3QoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEdhcmJhZ2VDb2xs
ZWN0KEpTQzo6SGVhcE9wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRHYXJiYWdlQ29s
bGVjdChKU0M6OkNvbGxlY3Rpb25TY29wZSkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGNsZWFySGVhcFNuYXBzaG90cygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NTUsOSArNzU1LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQ
cm9ncmFtRXhlYwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZt
LmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZt
LmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxs
KCk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCkBAIC05
MDAsOCArOTAwLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQVNT
RVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeSgpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgQVNTRVJUKCF2bS5p
c0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CisgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBi
b29sIGlzSlNDYWxsID0gKGNhbGxUeXBlID09IENhbGxUeXBlOjpKUyk7CkBAIC05NjIsMTAgKzk2
MiwxMCBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAg
IC8vIFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhhdmUgdG8gcmV0dXJuIHNvbWV0
aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQogICAgIC8vIGFscmVhZHkgaW4gYW4gaW52YWxpZCBzdGF0
ZS4KLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIGJvb2wg
aXNKU0NvbnN0cnVjdCA9IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKQEAg
LTEwMjgsNyArMTAyOCw3IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVG
b3IKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBB
U1NFUlQoIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIAotICAgIGlmICh2bS5pc0NvbGxl
Y3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkp
CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAKICAgICAvLyBDb21waWxlIHRo
ZSBjYWxsZWU6CkBAIC0xMDUzLDkgKzEwNTMsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlKENhbGxGcmFtZUNsCiAgICAgVk0mIHZtID0gKmNsb3N1cmUudm07CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBBU1NFUlQoIXZtLmlzQ29s
bGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRo
cmVhZCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29s
bGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAK
ICAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKQEAgLTEwNzYsOSAr
MTA3Niw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAg
IEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NFUlQoIXRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAg
IGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25D
dXJyZW50VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIFZNRW50cnlT
Y29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwpAQCAtMTE4Miw5ICsx
MTgyLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9ncgogCiAgICAg
QVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCghdGhy
b3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7
CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgVk1FbnRyeVNj
b3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMjA3NjQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgQ29kZVByb2Zp
bGluZyBwcm9maWxlKHNvdXJjZSk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBKU0ludGVybmFsUHJv
bWlzZSogbG9hZEFuZEV2YWx1YXRlTW9kdWxlCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09
IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4
ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgcmV0dXJu
IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSksIGluaXRpYXRv
cik7CiB9CkBAIC0xODUsNyArMTg1LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRBbmRFdmFs
dWF0ZU1vZHVsZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAgU3ltYm9sKiBr
ZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKIApAQCAtMjEyLDcgKzIx
Miw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4ZWNTdGF0ZSoKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkp
OwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJl
YWQoKSk7CiAKICAgICByZXR1cm4gbG9hZE1vZHVsZShsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSks
IGluaXRpYXRvcik7CiB9CkBAIC0yMjMsNyArMjIzLDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRNb2R1bGUoRXhlY1N0YXRlKgogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0u
YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUo
KSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCiAgICAg
U3ltYm9sKiBrZXkgPSBjcmVhdGVTeW1ib2xGb3JFbnRyeVBvaW50TW9kdWxlKHZtKTsKIApAQCAt
MjQxLDcgKzI0MSw3IEBAIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSoK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FTU0VSVChleGVj
LT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmlu
Z1RhYmxlKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVz
eSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVs
ZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgaWRlbnRpZmllclRvSlNWYWx1
ZShleGVjLT52bSgpLCBtb2R1bGVLZXkpLCBpbml0aWF0b3IpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcs
NyArMjY3LDcgQEAgSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdgogewog
ICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Zt
LT5hcGlMb2NrKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+aXNDb2xs
ZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5hcGlMb2NrKCkuY3VycmVu
dFRocmVhZElzSG9sZGluZ0xvY2soKSB8fCAhbV92bS0+aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50
VGhyZWFkKCkpOwogICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9w
QWxsTG9ja3ModGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExMyw5ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmcqIG51bGxPYmpl
Y3RTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX251bGxPYmplY3RTdHJpbmc7IH0KICAgICBKU1N0
cmluZyogdW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV91bmRlZmluZWRP
YmplY3RTdHJpbmc7IH0KIAotICAgIGJvb2wgbmVlZHNUb0JlVmlzaXRlZChIZWFwT3BlcmF0aW9u
IGNvbGxlY3Rpb25UeXBlKSBjb25zdAorICAgIGJvb2wgbmVlZHNUb0JlVmlzaXRlZChDb2xsZWN0
aW9uU2NvcGUgc2NvcGUpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoY29sbGVjdGlvblR5cGUg
PT0gRnVsbENvbGxlY3Rpb24pCisgICAgICAgIGlmIChzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGwpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIG1fbmVlZHNU
b0JlVmlzaXRlZDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU3Niw3ICs1NzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGR1bXBSZWdFeHBUcmFjZSgpOwogCi0gICAgYm9vbCBpc0NvbGxl
Y3RvckJ1c3koKSB7IHJldHVybiBoZWFwLmlzQnVzeSgpOyB9CisgICAgYm9vbCBpc0NvbGxlY3Rv
ckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSB7IHJldHVybiBoZWFwLmlzQ3VycmVudFRocmVhZEJ1c3ko
KTsgfQogCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgYm9vbCBpc0luaXRpYWxpemlu
Z09iamVjdCgpIGNvbnN0OyAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSlNEb2xsYXJWTVByb3RvdHlwZTo6ZWRlbkdD
KEV4ZWNTdGEKIHsKICAgICBpZiAoIWVuc3VyZUN1cnJlbnRUaHJlYWRPd25zSlNMb2NrKGV4ZWMp
KQogICAgICAgICByZXR1cm47Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KEVkZW5Db2xsZWN0
aW9uKTsKKyAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0Mo
RXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAtMjAgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBUaGUgdHJhY2tpbmcgb2Yg
dGhlIGNvYXJzZS1ncmFpbiBIZWFwIHN0YXRlIChhbGxvY2F0aW5nIG9yIG5vdCwgY29sbGVjdG9y
IG9yIG5vdCwgZWRlbiB2cyBmdWxsKSBzaG91bGQgcmVzcGVjdCB0aGUgb3J0aG9nb25hbGl0eSBi
ZXR3ZWVuIGFsbG9jYXRpbmcgYW5kIGNvbGxlY3RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzczOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAgICAgICAgVGhlcmUgd2lsbCBzb29uIGJlIGRpZmZl
cmVudCBraW5kcyBvZiBHQyB0aHJlYWRzLCBhbmQgV1RGJ3MgImFyZSB5b3UgYSBHQyB0aHJlYWQi
IHRoaW5nCisgICAgICAgIHNob3VsZCBrbm93IGFib3V0IHRoaXMuCisKKyAgICAgICAgKiB3dGYv
TWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVHQ1RocmVhZHMpOgorICAg
ICAgICAoV1RGOjpyZWdpc3RlckdDVGhyZWFkKToKKyAgICAgICAgKFdURjo6bWF5QmVHQ1RocmVh
ZCk6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuaDoKKwogMjAxNi0xMC0xOSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbiB0
aGF0IGNvbWJpbmVzIFdURjo6dmlzaXQoLi4uKSB3aXRoIFdURjo6bWFrZVZpc2l0b3IoLi4uKQpJ
bmRleDogU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvTWFpblRocmVhZC5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9XVEYv
d3RmL01haW5UaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsMTQgKzE5MCwxNCBAQCBi
b29sIGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChUCiB9CiAjZW5kaWYKIAotc3Rh
dGljIFRocmVhZFNwZWNpZmljPGJvb2w+KiBpc0dDVGhyZWFkOworc3RhdGljIFRocmVhZFNwZWNp
ZmljPE9wdGlvbmFsPEdDVGhyZWFkVHlwZT4+KiBpc0dDVGhyZWFkOwogCiB2b2lkIGluaXRpYWxp
emVHQ1RocmVhZHMoKQogewotICAgIGlzR0NUaHJlYWQgPSBuZXcgVGhyZWFkU3BlY2lmaWM8Ym9v
bD4oKTsKKyAgICBpc0dDVGhyZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPE9wdGlvbmFsPEdDVGhy
ZWFkVHlwZT4+KCk7CiB9CiAKLXZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpCit2b2lkIHJlZ2lzdGVy
R0NUaHJlYWQoR0NUaHJlYWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKCFpc0dDVGhyZWFkKSB7CiAg
ICAgICAgIC8vIFRoaXMgaGFwcGVucyBpZiB3ZSdyZSBydW5uaW5nIGluIGEgcHJvY2VzcyB0aGF0
IGRvZXNuJ3QgY2FyZSBhYm91dApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgcmVnaXN0ZXJHQ1Ro
cmVhZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqKmlzR0NUaHJlYWQgPSB0cnVl
OworICAgICoqaXNHQ1RocmVhZCA9IHR5cGU7CiB9CiAKIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1Ro
cmVhZCgpCkBAIC0yMTYsOSArMjE2LDEzIEBAIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgp
CiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi1ib29sIG1heUJlR0NUaHJlYWQoKQor
T3B0aW9uYWw8R0NUaHJlYWRUeXBlPiBtYXlCZUdDVGhyZWFkKCkKIHsKLSAgICByZXR1cm4gaXNH
Q1RocmVhZCAmJiBpc0dDVGhyZWFkLT5pc1NldCgpICYmICoqaXNHQ1RocmVhZDsKKyAgICBpZiAo
IWlzR0NUaHJlYWQpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIGlmICghaXNHQ1RocmVh
ZC0+aXNTZXQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuICoqaXNHQ1Ro
cmVhZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYWlu
VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCShyZXZp
c2lvbiAyMDc2NDApCisrKyBTb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDkgKzMzLDEyIEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDxz
dGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKK2NsYXNzIFByaW50U3RyZWFtOworCiB0eXBlZGVm
IHVpbnQzMl90IFRocmVhZElkZW50aWZpZXI7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhl
IG1haW4gdGhyZWFkLgpAQCAtNjcsOCArNzAsMTUgQEAgaW5saW5lIGJvb2wgaXNVSVRocmVhZCgp
IHsgcmV0dXJuIGlzTWFpbgogCiB2b2lkIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKIAotV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgbWF5QmVHQ1RocmVhZCgpOworZW51bSBjbGFzcyBHQ1RocmVhZFR5cGUgeworICAgIE1h
aW4sCisgICAgSGVscGVyCit9OworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBH
Q1RocmVhZFR5cGUpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhyZWFk
KEdDVGhyZWFkVHlwZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8R0NUaHJlYWRUeXBl
PiBtYXlCZUdDVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWRP
ckdDVGhyZWFkKCk7CiAKIC8vIE5PVEU6IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZXJuYWwgdG8g
dGhlIGNhbGxPbk1haW5UaHJlYWQgaW1wbGVtZW50YXRpb24uCkBAIC04OCw2ICs5OCw3IEBAIHZv
aWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGgKIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKK3VzaW5nIFdURjo6R0NUaHJlYWRUeXBlOwogdXNpbmcgV1RGOjpjYWxsT25NYWluVGhy
ZWFkOwogdXNpbmcgV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQ7CiB1c2lu
ZyBXVEY6OmlzTWFpblRocmVhZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzY0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE2LTEwLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIHRyYWNraW5nIG9mIHRoZSBjb2Fyc2UtZ3JhaW4gSGVhcCBzdGF0ZSAoYWxsb2NhdGluZyBv
ciBub3QsIGNvbGxlY3RvciBvciBub3QsIGVkZW4gdnMgZnVsbCkgc2hvdWxkIHJlc3BlY3QgdGhl
IG9ydGhvZ29uYWxpdHkgYmV0d2VlbiBhbGxvY2F0aW5nIGFuZCBjb2xsZWN0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVj
YXVzZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpnYXJiYWdlQ29s
bGVjdE5vdyk6CisKIDIwMTYtMTAtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIHRhYmxlLmRlbGV0ZVJvdygtMSkgYSBuby1vcCB3aGVuIHRoZXJlIGFy
ZSBubyByb3dzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dD
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBHQ0Nv
bnRyb2xsZXI6OmdjVGltZXJGaXJlZCgpCiB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxl
Y3ROb3coKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25WTSgp
KTsKLSAgICBpZiAoIUpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuaXNCdXN5KCkpIHsKKyAg
ICBpZiAoIUpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgp
KSB7CiAgICAgICAgIEpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuY29sbGVjdEFsbEdhcmJh
Z2UoKTsKICAgICAgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKICAgICB9
CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vd0lm
Tm8KIHsKICNpZiBVU0UoQ0YpIHx8IFVTRShHTElCKQogICAgIEpTTG9ja0hvbGRlciBsb2NrKEpT
RE9NV2luZG93Ojpjb21tb25WTSgpKTsKLSAgICBpZiAoIUpTRE9NV2luZG93Ojpjb21tb25WTSgp
LmhlYXAuaXNCdXN5KCkpCisgICAgaWYgKCFKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5oZWFwLmlz
Q3VycmVudFRocmVhZEJ1c3koKSkKICAgICAgICAgSlNET01XaW5kb3c6OmNvbW1vblZNKCkuaGVh
cC5jb2xsZWN0QWxsR2FyYmFnZUlmTm90RG9uZVJlY2VudGx5KCk7CiAjZWxzZQogICAgIGdhcmJh
Z2VDb2xsZWN0U29vbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292277</attachid>
            <date>2016-10-20 16:20:01 -0700</date>
            <delta_ts>2016-10-20 16:20:01 -0700</delta_ts>
            <desc>possible patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>108708</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NSBA
QAorMjAxNi0xMC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSB0cmFja2luZyBvZiB0aGUgY29hcnNlLWdyYWluIEhlYXAgc3RhdGUgKGFsbG9jYXRpbmcg
b3Igbm90LCBjb2xsZWN0b3Igb3Igbm90LCBlZGVuIHZzIGZ1bGwpIHNob3VsZCByZXNwZWN0IHRo
ZSBvcnRob2dvbmFsaXR5IGJldHdlZW4gYWxsb2NhdGluZyBhbmQgY29sbGVjdGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIAorICAgICAgICBXZSBuZWVk
IHRvIGtub3cgaWYgd2UncmUgY3VycmVudGx5IGluIGFuIGFsbG9jYXRpb24gc2xvdyBwYXRoLCBz
byB0aGF0IGNvZGUgY2FuIGFzc2VydCB0aGF0CisgICAgICAgIGl0J3Mgbm90IGJlaW5nIHVzZWQg
ZnJvbSBpbnNpZGUgYSBkZXN0cnVjdG9yIHRoYXQgcnVucyBkdXJpbmcgYSBzd2VlcC4gV2UgbmVl
ZCB0byBrbm93IGlmCisgICAgICAgIHdlJ3JlIGN1cnJlbnRseSBjb2xsZWN0aW5nLCBiZWNhdXNl
IHNvbWUgY29kZSBiZWhhdmVzIGRpZmZlcmVudGx5IGR1cmluZyBjb2xsZWN0aW9uLCBhbmQKKyAg
ICAgICAgb3RoZXIgY29kZSB3YW50cyB0byBhc3NlcnQgdGhhdCBpdCdzIG5vdCBiZWluZyB1c2Vk
IGZyb20gaW5zaWRlIGEgdmlzaXRDaGlsZHJlbiBtZXRob2QgdGhhdAorICAgICAgICBydW5zIGR1
cmluZyBtYXJraW5nLiBJZiB3ZSBhcmUgY29sbGVjdGluZywgd2UgbmVlZCB0byBrbm93IGlmIGl0
J3MgYW4gZWRlbiBjb2xsZWN0aW9uIG9yIGEKKyAgICAgICAgZnVsbCBjb2xsZWN0aW9uLiBJZiB3
ZSBhcmUgcmVxdWVzdGluZyBhIGNvbGxlY3Rpb24sIHdlIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBy
ZXF1ZXN0aW5nIGFuCisgICAgICAgIGVkZW4gY29sbGVjdGlvbiwgYSBmdWxsIGNvbGxlY3Rpb24s
IG9yIGFueSBraW5kIG9mIGNvbGxlY3Rpb24uCisgICAgICAgIAorICAgICAgICBQcmlvciB0byB0
aGlzIGNoYW5nZSwgeW91IHdvdWxkIHJlYXNvbiBhYm91dCBhbGwgb2YgdGhlc2UgdGhpbmdzIHVz
aW5nIHRoZSBIZWFwT3BlcmF0aW9uLiBJdAorICAgICAgICBoYWQgdGhlIGZvbGxvd2luZyBzdGF0
ZXM6IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rp
b24sIGFuZAorICAgICAgICBBbnlDb2xsZWN0aW9uLiBOb09wZXJhdGlvbiB2ZXJzdXMgQWxsb2Nh
dGlvbiB3YXMgcHJpbWFyaWx5IGZvciBhc3NlcnRpbmcgdGhhdCBzd2VlcCBkaWRuJ3QKKyAgICAg
ICAgY2FsbCBhcmJpdHJhcnkgSlMuIEZ1bGxDb2xsZWN0aW9uIHZlcnN1cyBFZGVuQ29sbGVjdGlv
biB3YXMgYWJvdXQgZGVzY3JpYmluZyBnZW5lcmF0aW9ucy4gV2UKKyAgICAgICAgd291bGQgZXZl
biB1c2UgSGVhcE9wZXJhdGlvbiBpbiBwbGFjZXMgd2hlcmUgd2Uga25ldyB0aGF0IGl0IGNvdWxk
IG9ubHkgYmUgZWl0aGVyIEZ1bGwgb3IKKyAgICAgICAgRWRlbiwgYmVjYXVzZSB3ZSBqdXN0IG5l
ZWRlZCBhIHZhcmlhYmxlIHRvIHRlbGwgdXMgd2hpY2ggZ2VuZXJhdGlvbiB3ZSB3ZXJlIHRhbGtp
bmcgYWJvdXQuCisgICAgICAgIEl0IHdhcyBhbGwgdmVyeSBjb25mdXNpbmcuCisgICAgICAgIAor
ICAgICAgICBXaGVyZSBpdCBjb21wbGV0ZWx5IGJyZWFrcyBkb3duIGlzIHRoZSBmYWN0IHRoYXQg
YSBjb25jdXJyZW50IEdDIGhhcyB0d28gbG9naWNhbCB0aHJlYWRzLCB0aGUKKyAgICAgICAgbXV0
YXRvciBhbmQgdGhlIGNvbGxlY3Rvciwgd2hpY2ggY2FuIGNoYW5nZSBzdGF0ZSBpbmRlcGVuZGVu
dGx5LiBUaGUgbXV0YXRvciBjYW4gYmUKKyAgICAgICAgYWxsb2NhdGluZy4gSXQgY2FuIGFsc28g
YmUgZG9pbmcgc29tZSB3b3JrIHRvIGhlbHAgdGhlIEdDLiBUaGF0J3MgdGhyZWUgc3RhdGVzOiBy
dW5uaW5nLAorICAgICAgICBhbGxvY2F0aW5nLCBvciBoZWxwaW5nIEdDLiBBdCB0aGUgc2FtZSB0
aW1lLCB0aGUgR0MgdGhyZWFkIGNvdWxkIGVpdGhlciBiZSBydW5uaW5nIG9yIG5vdCwKKyAgICAg
ICAgYW5kIGlmIGl0J3MgcnVubmluZywgaXQgY291bGQgYmUgYSBmdWxsIGNvbGxlY3Rpb24gb3Ig
YW4gZWRlbiBjb2xsZWN0aW9uLiBCZWNhdXNlIHRoZSBtdXRhdG9yCisgICAgICAgIGFuZCBjb2xs
ZWN0b3IgY2FuIHJ1biBhdCB0aGUgc2FtZSB0aW1lLCBpdCBtZWFucyB0aGF0IGlmIHdlIHVzZWQg
b25lIGVudW0sIHdlIHdvdWxkIG5lZWQgbmluZQorICAgICAgICBzdGF0ZXM6IGV2ZXJ5IGNvbWJp
bmF0aW9uIG9mIG11dGF0b3IgcnVubmluZywgYWxsb2NhdGluZywgb3IgaGVscGluZyBHQywgY3Jv
c3NlZCB3aXRoCisgICAgICAgIGNvbGxlY3RvciBub3QgcnVubmluZywgcnVubmluZyBlZGVuLCBv
ciBydW5uaW5nIGZ1bGwuIFNvLCB0aGlzIGNoYW5nZSBkZWNvdXBsZXMgbXV0YXRvciBzdGF0ZQor
ICAgICAgICBmcm9tIGNvbGxlY3RvciBzdGF0ZSBhbmQgdXNlcyB0d28gc2VwYXJhdGUgZmllbGRz
IHdpdGggdHdvIGRpZmZlcmVudCB0eXBlcy4KKyAgICAgICAgCisgICAgICAgIE11dGF0b3Igc3Rh
dGUgaXMgZGVzY3JpYmVkIHVzaW5nIE11dGF0b3JTdGF0ZSwgd2hpY2ggY2FuIGJlIGVpdGhlciBN
dXRhdG9yU3RhdGU6OlJ1bm5pbmcsCisgICAgICAgIE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZywg
b3IgTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MuCisgICAgICAgIAorICAgICAgICBDb2xsZWN0b3Ig
c3RhdGUgaXMgZGVzY3JpYmVkIHVzaW5nIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4uIENvbGxl
Y3Rpb25TY29wZSBkZXNjcmliZXMgaG93CisgICAgICAgIGJpZyB0aGUgc2NvcGUgb2YgdGhlIGNv
bGxlY3Rpb24gaXMsIGFuZCBpdCBjYW4gYmUgZWl0aGVyIENvbGxlY3Rpb25TY29wZTo6RWRlbiBv
cgorICAgICAgICBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwuIElmIHRoZSBPcHRpb25hbCBpcyBOdWxs
b3B0LCBpdCBtZWFucyB0aGF0IHdlIGFyZSBub3QgY29sbGVjdGluZy4gVGhpcworICAgICAgICB3
YXksIHlvdSBjYW4gdHJlYXQgY29sbGVjdGlvblNjb3BlIGFzIGEgYm9vbGVhbiAoYW4gT3B0aW9u
YWwgaXMgdHJ1ZSBpZmYgaXQncyBlbmdhZ2VkKS4gWW91CisgICAgICAgIGNhbiBwYXNzIGFyb3Vu
ZCBqdXN0IGEgQ29sbGVjdGlvblNjb3BlIGlmIHlvdSBrbm93IHRoYXQgeW91IG11c3QgYmUgY29s
bGVjdGluZyBhbmQgeW91IGp1c3QKKyAgICAgICAgd2FudCB0byBrbm93IGFib3V0IHRoZSBnZW5l
cmF0aW9uLiBBbHNvLCB3ZSBjYW4gdXNlIE51bGxvcHQgaW4gbWV0aG9kcyB0aGF0IHJlcXVlc3QK
KyAgICAgICAgY29sbGVjdGlvbiwgd2hpY2ggdGhvc2UgbWV0aG9kcyB0YWtlIHRvIG1lYW4gdGhh
dCB0aGV5IGNhbiBydW4gYW55IGtpbmQgb2YgY29sbGVjdGlvbiAodGhlCisgICAgICAgIG9sZCBB
bnlDb2xsZWN0aW9uKS4KKyAgICAgICAgCisgICAgICAgIEFub3RoZXIgdXNlIG9mIEhlYXBPcGVy
YXRpb24gd2FzIHRvIGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgd2hldGhlciB0aGUgY2FsbGVyIGlz
IHJ1bm5pbmcgYXMKKyAgICAgICAgcGFydCBvZiB0aGUgR0Mgb3IgYXMgcGFydCBvZiB0aGUgbXV0
YXRvci4gT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBkb2VzIG5vdCBhbnN3ZXIgdGhpcywKKyAg
ICAgICAgc2luY2UgY29kZSB0aGF0IHJ1bnMgaW4gdGhlIG11dGF0b3Igd2hpbGUgdGhlIG11dGF0
b3IgaXMgbm90IEhlbHBpbmdHQyBhdCB0aGUgc2FtZSB0aW1lIGFzCisgICAgICAgIHRoZSBjb2xs
ZWN0b3IgaXMgcnVubmluZyBzaG91bGQgcnVuIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBtdXRh
dG9yIG5vdCBhcyBpZiBpdCB3YXMgcGFydCBvZgorICAgICAgICB0aGUgR0MuIE11dGF0b3JTdGF0
ZSBpcyBuZWVkZWQgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24sIGJ1dCBpdCBkb2Vzbid0IHRlbGwg
dGhlIHdob2xlIHN0b3J5CisgICAgICAgIHNpbmNlIGNvZGUgdGhhdCBydW5zIGluIHRoZSBjb2xs
ZWN0b3IgdGhyZWFkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIG11dGF0b3IgaXMgcnVubmluZwor
ICAgICAgICBzaG91bGQgcnVuIGFzIGlmIGl0IHdhcyBwYXJ0IG9mIHRoZSBHQyBub3QgYXMgaWYg
aXQgd2FzIHBhcnQgb2YgdGhlIG11dGF0b3IuIFNvLCB3ZSBuZWVkIHRvCisgICAgICAgIGtub3cg
aWYgd2UncmUgb24gdGhlIGNvbGxlY3RvciB0aHJlYWQgb3IgdGhlIG11dGF0b3IgdGhyZWFkLiBX
ZSBhbHJlYWR5IGhhdmUgYSBXVEYgZmFjaWxpdHkKKyAgICAgICAgZm9yIHRoaXMsIHdoaWNoIGFu
c3dlcnMgaWYgYSB0aHJlYWQgaXMgYSBHQyB0aHJlYWQuIEJ1dCB3ZSBhbHJlYWR5IHVzZSB0aGlz
IHRvIGFuc3dlciBhCisgICAgICAgIHN0cm9uZ2VyIHF1ZXN0aW9uOiBhcmUgd2UgcGFydCBvZiB0
aGUgcGFyYWxsZWwgR0MgaGVscGVycz8gU29tZSBmdW5jdGlvbnMgaW4gdGhlIEdDLCBsaWtlCisg
ICAgICAgIG1hcmsgYml0IHF1ZXJpZXMsIHdpbGwgd29yayBmaW5lIGluIGEgY29uY3VycmVudCBj
b2xsZWN0b3IgdGhyZWFkIHNvIGxvbmcgYXMgdGhlcmUgaXMgbm8KKyAgICAgICAgcGFyYWxsZWwg
bWFya2luZy4gU28sIHRoaXMgY2hhbmdlIGFsc28gY2hhbmdlcyBXVEYncyBtYXlCZUdDVGhyZWFk
IHRvIHRlbGwgd2hhdCBraW5kIG9mIEdDCisgICAgICAgIHRocmVhZCB3ZSBtYXkgYmU6IGVpdGhl
ciBHQ1RocmVhZFR5cGU6Ok1haW4gb3IgR0NUaHJlYWRUeXBlOjpIZWxwZXIuIFRoZSBwYXJhbGxl
bCBHQyBzYWZldHkKKyAgICAgICAgY2hlY2tzIGxvb2sgZm9yIEdDVGhyZWFkVHlwZTo6SGVscGVy
LiBUaGUgInNob3VsZCBJIHJ1biBhcyBtdXRhdG9yIiBxdWVyeSBjYW4gbm93IGJlIGFuc3dlcmVk
CisgICAgICAgIGJ5IGNoZWNraW5nIHdpdGggbWF5QmVHQ1RocmVhZCwgd2hpY2ggcmV0dXJucyBP
cHRpb25hbDxHQ1RocmVhZFR5cGU+OyBpZiBlbmdhZ2VkLCB0aGVuIHJ1biBhcworICAgICAgICBH
QywgZWxzZSBydW4gYXMgR0MgaWYgTXV0YXRvclN0YXRlIGlzIEhlbHBpbmdHQywgZWxzZSBydW4g
YXMgbXV0YXRvci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIHdh
eSB0aGF0IHRoZSBHQyBiZWhhdmVzLCBidXQgaXQgZG9lcyBjaGFuZ2UgaG93IHRoZSBHQyByZXBy
ZXNlbnRzIGEKKyAgICAgICAgZnVuZGFtZW50YWwgcGllY2Ugb2Ygc3RhdGUuIFNvLCBpdCdzIGEg
YmlnIGNoYW5nZS4gSXQgc2hvdWxkIGJlIHBlcmYtbmV1dHJhbCAoc3RpbGwgdGVzdGluZykuCisK
KyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTU3luY2hyb25vdXNFZGVuQ29s
bGVjdEZvckRlYnVnZ2luZyk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAgICAqIGZ0bC9GVExDb21waWxl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBoZWFwL0FsbG9j
YXRpbmdTY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWxsb2NhdGluZ1Njb3BlOjpBbGxv
Y2F0aW5nU2NvcGUpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW5nU2NvcGU6On5BbGxvY2F0aW5n
U2NvcGUpOgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNjb3BlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogaGVhcC9Db2RlQmxvY2tTZXQuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6
OmRlbGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKToKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9j
a1NldC5oOgorICAgICAgICAqIGhlYXAvQ29sbGVjdGlvblNjb3BlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUpOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBoZWFwL0NvbGxlY3Rpb25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBoZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpFZGVuR0NB
Y3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24pOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmRvQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9HQ1R5cGVNYXAuaDoKKyAgICAgICAgKEpT
Qzo6R0NUeXBlTWFwOjpvcGVyYXRvcltdKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRv
RmluYWxpemUpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9vdHMpOgorICAgICAgICAoSlND
OjpIZWFwOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFNtYWxsU3Ry
aW5ncyk6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyk6CisgICAgICAg
IChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpk
ZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RB
bGxHYXJiYWdlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6
OkhlYXA6OmNvbGxlY3RXaXRob3V0QW55U3dlZXApOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0SW1wbCk6CisgICAgICAgIChKU0M6OkhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24pOgorICAg
ICAgICAoSlNDOjpIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcik6CisgICAgICAgIChKU0M6
OkhlYXA6OnBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRh
dGVBbGxvY2F0aW9uTGltaXRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkRmluaXNoQ29sbGVj
dGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OmlzVmFsaWRBbGxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgIChKU0M6OkhlYXA6Om11dGF0b3JTdGF0ZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OmNvbGxlY3Rpb25TY29wZSk6CisgICAgICAgIChKU0M6OkhlYXA6Om9wZXJhdGlvbkluUHJv
Z3Jlc3MpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SGVhcDo6c2hvdWxkQ29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmlzQ3VycmVu
dFRocmVhZEJ1c3kpOgorICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6
OnJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxl
Y3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OkhlYXA6Omlz
QnVzeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OmlzQ29sbGVjdGluZyk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9IZWFwT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBoZWFwL0hlYXBP
cGVyYXRpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvSGVhcE9wZXJhdGlvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcFZlcmlmaWVyOjppbml0aWFsaXplR0NDeWNsZSk6CisgICAgICAgIChKU0M6OkhlYXBWZXJp
Zmllcjo6cmVwb3J0T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcFZlcmlmaWVyOjpjb2xsZWN0
aW9uVHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmg6Cisg
ICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6R0NDeWNsZTo6Y29sbGVjdGlvblR5cGVOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlbHBpbmdHQ1Njb3BlLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpIZWxwaW5nR0NTY29wZTo6SGVscGluZ0dDU2NvcGUpOgorICAgICAgICAoSlNDOjpI
ZWxwaW5nR0NTY29wZTo6fkhlbHBpbmdHQ1Njb3BlKToKKyAgICAgICAgKiBoZWFwL0xhcmdlQWxs
b2NhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkxhcmdlQWxsb2NhdGlvbjo6ZmxpcCk6CisgICAg
ICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxv
Y2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2VJbXBsKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjp2aXNpdFdlYWtTZXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnJlYXBXZWFr
U2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yTWFya2luZyk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KToKKyAgICAgICAgKiBoZWFwL011dGF0b3JTdGF0
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBo
ZWFwL011dGF0b3JTdGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2luZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9ySGVhcEFnZW50OjpkaWRHYXJiYWdlQ29sbGVjdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChm
dW5jdGlvbkZ1bGxHQyk6CisgICAgICAgIChmdW5jdGlvbkVkZW5HQyk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAgICAgICAo
SlNDOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpsb2FkTW9kdWxlKToK
KyAgICAgICAgKEpTQzo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxs
TG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgIChKU0M6
OlNtYWxsU3RyaW5nczo6bmVlZHNUb0JlVmlzaXRlZCk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAoSlNDOjpWTTo6aXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKToKKyAg
ICAgICAgKEpTQzo6Vk06OmlzQ29sbGVjdG9yQnVzeSk6IERlbGV0ZWQuCisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk1Qcm90
b3R5cGU6OmVkZW5HQyk6CisKIDIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBkaXNhbGxvdyByZWZlcmVuY2VzIHRvIGBhd2FpdGAg
aW4gQXN5bmNGdW5jdGlvbiBmb3JtYWwgcGFyYW1ldGVycwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNiArNDUxLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIGhlYXAvQWxsb2NhdG9yQXR0cmlidXRlcy5j
cHAKICAgICBoZWFwL0NvZGVCbG9ja1NldC5jcHAKKyAgICBoZWFwL0NvbGxlY3Rpb25TY29wZS5j
cHAKICAgICBoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAogICAgIGhlYXAvRGVmZXJHQy5jcHAK
ICAgICBoZWFwL0Rlc3RydWN0aW9uTW9kZS5jcHAKQEAgLTQ2NCw3ICs0NjUsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvSGVhcC5jcHAKICAgICBoZWFwL0hlYXBDZWxs
LmNwcAogICAgIGhlYXAvSGVhcEhlbHBlclBvb2wuY3BwCi0gICAgaGVhcC9IZWFwT3BlcmF0aW9u
LmNwcAogICAgIGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNw
cAogICAgIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTQ4MCw2ICs0ODAsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAog
ICAgIGhlYXAvTWFya2VkQmxvY2suY3BwCiAgICAgaGVhcC9NYXJrZWRTcGFjZS5jcHAKKyAgICBo
ZWFwL011dGF0b3JTdGF0ZS5jcHAKICAgICBoZWFwL1Nsb3RWaXNpdG9yLmNwcAogICAgIGhlYXAv
V2Vhay5jcHAKICAgICBoZWFwL1dlYWtCbG9jay5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY3NywxNCArMTY3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RnVsbEdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
LSAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhl
YXAoKS0+Y29sbGVjdChDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rp
b24oKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBl
eGVjLT5oZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOworICAgIGV4ZWMtPmhlYXAoKS0+
Y29sbGVjdChDb2xsZWN0aW9uU2NvcGU6OkVkZW4pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAy
MDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEpTU3lu
Y2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luCiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBleGVjLT52bSgp
LmhlYXAuY29sbGVjdChFZGVuQ29sbGVjdGlvbik7CisgICAgZXhlYy0+dm0oKS5oZWFwLmNvbGxl
Y3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogdm9pZCBKU0Rpc2FibGVHQ1RpbWVyKHZv
aWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA3NjQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw3ICs1MTAsNiBAQAogCQkwRjgzMzVCNzE2
MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMx
RUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hE
aXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsgfTsK
LQkJMEY4NkEyNkQxRDZGNzk2NTAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkMxRDZGNzk2MjAw
Q0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwICovOyB9OwogCQkwRjg2QTI2RjFENkY3QjMzMDBD
QjBDOTIgLyogR0NUeXBlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjg2QTI2RTFENkY3QjMxMDBDQjBDOTIgLyogR0NUeXBlTWFwLmggKi87IH07
CiAJCTBGODZBRTIwMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg2QUUxRjFD
NTMxMUM1MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oICovOyB9OwogCQkwRjg4
NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAv
KiBCeXRlY29kZVVzZURlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01OTIsNiArNTkxLDEyIEBACiAJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJE
OSAvKiBERkdOb2RlRmxhZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZBNTgxQjcxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAg
Ki87IH07CiAJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI4MTUwRTk1
MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLzsgfTsKIAkJMEZBNTgxQkMxNTBFOTUzMDAw
QjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAq
LzsgfTsKKwkJMEZBNzYyMDQxREI5MjQyNjAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMDFE
QjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLzsgfTsKKwkJMEZBNzYyMDUx
REI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDExREI5MjQyMzAwQjdBMkZEIC8qIENv
bGxlY3Rpb25TY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDIxREI5
MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5jcHAgKi87IH07CisJCTBGQTc2MjA3MURCOTI0
MzMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3Rh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkE3NjIwOTFEQjkyODNFMDBCN0EyRkQgLyogSGVscGluZ0dDU2NvcGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTc2MjA4MURCOTI4M0MwMEI3QTJG
RCAvKiBIZWxwaW5nR0NTY29wZS5oICovOyB9OworCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0EyRkQg
LyogQWxsb2NhdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmgg
Ki87IH07CiAJCTBGQTdBOEVCMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RTkxOEI0MTNDODAwNTIz
NzFEIC8qIFJlZy5jcHAgKi87IH07CiAJCTBGQTdBOEVDMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTdBOEVB
MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkE3QThFRTE4Q0U0RkQ4MDA1MjM3MUQgLyogU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuY3BwICovOyB9OwpAQCAtNjIzLDcgKzYyOCw2IEBACiAJCTBGQjRGQjczMUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEZCNzAxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlT
bG93UGF0aC5jcHAgKi87IH07CiAJCTBGQjRGQjc0MUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5
U2xvd1BhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQjRGQjcxMUJDODQzMTQwMDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGguaCAqLzsgfTsKIAkJ
MEZCNEZCNzUxQkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjRGQjcyMUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhDYWxsLmggKi87IH07Ci0JCTBGQjUzMDM5MUQ5MDQw
NEMwMEYyOEFFMyAvKiBBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjUzMDM4MUQ5MDQwNDYwMEYyOEFFMyAvKiBBbGxvY2F0
aW9uU2NvcGUuaCAqLzsgfTsKIAkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI1NDY3NjE0RjU5QUQxMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RkI1NDY3OTE0RjVDNDZCMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNTQ2NzgxNEY1
QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKIAkJMEZC
NTQ2N0IxNEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjU0NjdBMTRG
NUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTYsNyArMTE2MCw2
IEBACiAJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRCQjdG
MjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oICovOyB9OwogCQky
QTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNEVDOTA5MTg2MEQ2QzIw
MDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwICovOyB9OwogCQkyQTRFQzkwQzE4NjBE
NkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNkY0NjI1MTdF
OTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkE3QTU4RUYxODA4QTRDNDAwMjBCREY3IC8qIERl
ZmVyR0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovOyB9OwogCQkyQTgzNjM4
NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4MzE4RDdEMEVFMDAw
MEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CiAJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0Mg
LyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yODM0LDcgKzI4MzcsNiBAQAogCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgz
NjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RG
R0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjg2QTI2
QzFENkY3OTYyMDBDQjBDOTIgLyogSGVhcE9wZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY4NkEyNkUxRDZGN0IzMTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1R5cGVNYXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY4NkFFMUYxQzUzMTFDNTAwNkJFOEVDIC8qIEIzQ29tcHV0ZURpdmlz
aW9uTWFnaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb21wdXRlRGl2
aXNpb25NYWdpYy5oOyBwYXRoID0gYjMvQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg4NUUxMDE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNv
ZGVVc2VEZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVVc2VE
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MTUsNiArMjkxNywxMiBAQAog
CQkwRkE1ODFCNzE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVGbGFncy5jcHA7IHBhdGggPSBkZmcv
REZHTm9kZUZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjgx
NTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdOb2RlRmxhZ3MuaDsgcGF0aCA9IGRmZy9ERkdOb2RlRmxhZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBNTgxQjkxNTBFOTUyQTAwQjlBMkQ5IC8qIERG
R05vZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVUeXBl
Lmg7IHBhdGggPSBkZmcvREZHTm9kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZBNzYyMDAxREI5MjQyMzAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xsZWN0aW9uU2NvcGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29s
bGVjdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rp
b25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwMjFEQjkyNDIz
MDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE11dGF0b3JTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQTc2MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRvclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQTc2MjA4MURCOTI4M0MwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWxwaW5nR0NTY29wZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2Nh
dGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpbmdT
Y29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE3QThFOTE4QjQxM0M4MDA1
MjM3MUQgLyogUmVnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVBMThCNDEzQzgwMDUy
MzcxRCAvKiBSZWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5NTYsNyArMjk2NCw2IEBACiAJCTBGQjRGQjcwMUJDODQzMTQwMDI1Q0E1
QSAvKiBGVExMYXp5U2xvd1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRlRMTGF6eVNsb3dQYXRoLmNwcDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1BhdGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEg
LyogRlRMTGF6eVNsb3dQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TExhenlTbG93UGF0aC5oOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNs
b3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xv
d1BhdGhDYWxsLmg7IHBhdGggPSBmdGwvRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRkI1MzAzODFEOTA0MDQ2MDBGMjhBRTMgLyogQWxsb2NhdGlv
blNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI1NDY3NjE0RjU5QUQxMDAyQzI5
ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZCNTQ2NzgxNEY1QzQ2ODAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNTQ2N0Ex
NEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ1MCw3ICszNDU3LDYgQEAKIAkJMkE0
QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdyaXRlQmFycmllckJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJB
NEVDOTBBMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8q
IERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJH
Qy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBODM2MzgzMThEN0QwRUUwMDAw
RUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDQ3LDcgKzU0
NTMsNyBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEZCNTMwMzgxRDkwNDA0NjAwRjI4
QUUzIC8qIEFsbG9jYXRpb25TY29wZS5oICovLAorCQkJCTBGQTc2MjBBMURCOTU5RjYwMEI3QTJG
RCAvKiBBbGxvY2F0aW5nU2NvcGUuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkg
LyogQWxsb2NhdG9yQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYw
OUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuaCAqLywKIAkJCQkwRjA3MEE0MjFENTQzQTg5MDA2
RTcyMzIgLyogQ2VsbENvbnRhaW5lci5oICovLApAQCAtNTQ1Niw2ICs1NDYyLDggQEAKIAkJCQkw
RkQ4QTMxMTE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4
QTMxMjE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggKi8sCiAJCQkJMEY2NjRDRTcx
REEzMDRFRDAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLywKKwkJCQkwRkE3NjIw
MDFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLywKKwkJCQkwRkE3NjIw
MTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggKi8sCiAJCQkJMTQ2QjE0REIx
MkVCNUIxMjAwMUJFQzFCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFG
MjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2VydmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThF
RTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8sCkBAIC01NTAwLDggKzU1MDgsNiBA
QAogCQkJCUMyREE3NzgyMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oICovLAogCQkJ
CTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLywKIAkJ
CQlBNTMzOUVDODFCQjRCNDUxMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggKi8sCi0JCQkJMEY4
NkEyNkMxRDZGNzk2MjAwQ0IwQzkyIC8qIEhlYXBPcGVyYXRpb24uY3BwICovLAotCQkJCTJBNkY0
NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi8sCiAJCQkJQTUzOThGQTkx
Qzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8sCiAJCQkJQTUzOThGQUExQzc1
MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5oICovLAogCQkJCTE0Rjk3NDQ2MTM4Qzg1M0Uw
MERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLywKQEAgLTU1MTYsNiArNTUyMiw3IEBACiAJ
CQkJMEZBREU2NzIxRDREMjNCQzAwNzY4NDU3IC8qIEhlYXBVdGlsLmggKi8sCiAJCQkJRkU3QkE2
MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi8sCiAJCQkJRkU3QkE2MEUx
QTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oICovLAorCQkJCTBGQTc2MjA4MURCOTI4
M0MwMEI3QTJGRCAvKiBIZWxwaW5nR0NTY29wZS5oICovLAogCQkJCUMyNUY4QkNCMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJCUMyNUY4QkNDMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJCQkwRjc2NkQyOTE1QThD
QzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLApAQCAtNTU0MSw2ICs1NTQ4
LDggQEAKIAkJCQkwRjdDNUZCOTFEODg5NTA1MDA0NEY1RTIgLyogTWFya2VkU3BhY2VJbmxpbmVz
LmggKi8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8s
CiAJCQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAorCQkJCTBG
QTc2MjAyMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwICovLAorCQkJCTBGQTc2
MjAzMURCOTI0MjMwMEI3QTJGRCAvKiBNdXRhdG9yU3RhdGUuaCAqLywKIAkJCQlBRERCMUY2MjE4
RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RC
QUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAw
NUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCkBAIC03NTAwLDYgKzc1MDksNyBAQAogCQkJCTBG
RUM4NTAzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tVdGlscy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1MDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxvY2tXb3JrbGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tTcGVj
aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNzFEQjkyNDMzMDBCN0EyRkQgLyogTXV0
YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwODFCREFDREFDMDA4MEZGNzQg
LyogQjNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwQTFCREFDREFDMDA4
MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCURDNDU0QjhEMUQwMEU4MjQw
MDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjAwLDcgKzc2MTAs
NiBAQAogCQkJCTYyRDc1NUQ3MUI4NEZCNEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyOUUxNENBN0RDNTAwODVGM0M2IC8qIENh
bGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkI1MzAzOTFEOTA0MDRDMDBGMjhB
RTMgLyogQWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Mjc2NzMyNDFCNjgw
QzFFMDBGRDlGMkUgLyogQ2FsbE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRC
Q0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTc5MDUsNiArNzkxNCw4IEBACiAJCQkJMkFEMkVERkIxOTc5OUUz
ODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDQ2
MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkw
RDBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZBNzYyMDkxREI5MjgzRTAwQjdBMkZEIC8qIEhlbHBpbmdHQ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTk4RDBFMTgzRTM4MDAwRjkyOTcg
LyogRXJyb3JJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MEYwRTE4MzlEQjAw
MEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTQsNyArODA2
NSw2IEBACiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMzlFQzkxQkI0QjQ2MDAwNTRGMDA1IC8qIEhlYXBP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRUIxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkE2RjQ2MjYxN0U5NTlD
RTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Rjk3NDQ3
MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRl
cnMgKi8sCkBAIC04MTE3LDYgKzgxMjcsNyBAQAogCQkJCUExODE5M0UzMUI0RTBDREIwMEZDMTAy
OSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
QjlFMjNFMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExODE5M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNTFEQjkyNDI5MDBCN0EyRkQg
LyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q2RTFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTE4
N0EwRjFDMDMwRDZDMDAzOEJCQ0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDgxLDcgKzk0OTIsNiBAQAogCQkJCUE3OEE5NzdB
MTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUw
Rjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGODZBMjZEMUQ2Rjc5
NjUwMENCMEM5MiAvKiBIZWFwT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0Uw
MUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyog
REZHUHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTYyOCw2ICs5NjM4LDcgQEAKIAkJ
CQlBNThFMzU5MTE4NjBERUNGMDAxRjI0RkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1MTNFNUNBMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU4NDBFMjAxODdCN0I4NjAwODQzQjEw
IC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA0
MURCOTI0MjYwMEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ4QTdCRUYxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjI0RTU1NTE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1l
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1Q0VFRTE0MTg3RjNCQUQwMEU1NUM5OSAvKiBJ
bnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3ODIsNiArOTc5Myw3IEBACiAJ
CQkJREMxN0U4MTcxQzlDOTFENjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTc2MjA2MURCOTI0MzEwMEI3QTJGRCAvKiBNdXRhdG9y
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNFN0IyIC8q
IENMb29wU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3
QTQ4IC8qIEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUMwRUMyMUFBMEQ3REEw
MEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIw
NzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDc0LDcgKzM0NzQsNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlz
b24oUHJvZmlsZXI6OkpldHRpCiAgICAgICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgxKSwgYW5k
IGRvZXMgaXRzIG93biBib29rLWtlZXBpbmcgYWJvdXQgd2hldGhlciBpdCBoYXMgYWxyZWFkeSBo
YXBwZW5lZC4KICAgICAgICAgaWYgKCFqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbnZhbGlkYXRl
KCkpIHsKICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZC4KLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXMgIT0gcmVwbGFjZW1lbnQoKSB8fCAobV92bS0+
aGVhcC5pc0NvbGxlY3RpbmcoKSAmJiAhSGVhcDo6aXNNYXJrZWQob3duZXJTY3JpcHRFeGVjdXRh
YmxlKCkpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzICE9IHJlcGxhY2VtZW50
KCkgfHwgKG1fdm0tPmhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgpICYmICFIZWFwOjppc01hcmtl
ZChvd25lclNjcmlwdEV4ZWN1dGFibGUoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTM1MDYsNyArMzUwNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNv
bihQcm9maWxlcjo6SmV0dGkKIAogICAgIC8vIEpldHRpc29uIGNhbiBoYXBwZW4gZHVyaW5nIEdD
LiBXZSBkb24ndCB3YW50IHRvIGluc3RhbGwgY29kZSB0byBhIGRlYWQgZXhlY3V0YWJsZQogICAg
IC8vIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgYSBkZWFkIG9iamVjdCB0byB0aGUgcmVtZW1iZXJl
ZCBzZXQuCi0gICAgaWYgKG1fdm0tPmhlYXAuaXNDb2xsZWN0aW5nKCkgJiYgIUhlYXA6OmlzTWFy
a2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpKSkKKyAgICBpZiAobV92bS0+aGVhcC5pc0N1cnJl
bnRUaHJlYWRCdXN5KCkgJiYgIUhlYXA6OmlzTWFya2VkKG93bmVyU2NyaXB0RXhlY3V0YWJsZSgp
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMgKDIpLgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIw
NzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsOSArMTAzLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpCiAgICAgICAgICAgICBkYXRhTG9nKG1f
d29ya2xpc3QsICI6IENvbXBpbGluZyAiLCBtX3BsYW4tPmtleSgpLCAiIGFzeW5jaHJvbm91c2x5
XG4iKTsKICAgICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW4tPnZtLT5oZWFw
LmlzQ29sbGVjdGluZygpKTsKKyAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgZm9yIHRoZSBHQyB0
byBiZSBzYWZlcG9pbnRpbmcgc2luY2Ugd2Ugb3duIHJpZ2h0VG9SdW4uCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhlYXAubXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRl
OjpIZWxwaW5nR0MpOwogICAgICAgICBtX3BsYW4tPmNvbXBpbGVJblRocmVhZCgqbV9sb25nTGl2
ZWRTdGF0ZSwgJm1fZGF0YSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+c3RhZ2Ug
PT0gUGxhbjo6Q2FuY2VsbGVkIHx8ICFtX3BsYW4tPnZtLT5oZWFwLmlzQ29sbGVjdGluZygpKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wbGFuLT5zdGFnZSA9PSBQbGFuOjpDYW5jZWxsZWQg
fHwgbV9wbGFuLT52bS0+aGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OkhlbHBp
bmdHQyk7CiAgICAgICAgIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV93b3JrbGlzdC5tX2xvY2spOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV93b3JrbGlzdC5tX3BsYW5Db21waWxlZC5ub3RpZnlB
bGwoKTsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wbGFuLT52bS0+aGVh
cC5pc0NvbGxlY3RpbmcoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcGxhbi0+dm0tPmhl
YXAubXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpOwogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
CiAKICAgICBpZiAoc2FmZXBvaW50UmVzdWx0LmRpZEdldENhbmNlbGxlZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXN0YXRlLmdyYXBoLm1fdm0uaGVhcC5pc0NvbGxl
Y3RpbmcoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGUuZ3JhcGgubV92bS5oZWFwLm11dGF0
b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKTsKICAgICAKICAgICBpZiAoc3Rh
dGUuYWxsb2NhdGlvbkZhaWxlZCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGluZ1Njb3BlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SGVhcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQWxsb2NhdGluZ1Njb3BlIHsKK3B1
YmxpYzoKKyAgICBBbGxvY2F0aW5nU2NvcGUoSGVhcCYgaGVhcCkKKyAgICAgICAgOiBtX2hlYXAo
aGVhcCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5tX211dGF0b3JTdGF0
ZSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcpOworICAgICAgICBtX2hlYXAubV9tdXRhdG9yU3Rh
dGUgPSBNdXRhdG9yU3RhdGU6OkFsbG9jYXRpbmc7CisgICAgfQorICAgIAorICAgIH5BbGxvY2F0
aW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLm1fbXV0YXRv
clN0YXRlID09IE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZyk7CisgICAgICAgIG1faGVhcC5tX211
dGF0b3JTdGF0ZSA9IE11dGF0b3JTdGF0ZTo6UnVubmluZzsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSGVhcCYgbV9oZWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TY29wZS5oCShyZXZpc2lvbiAyMDc2
NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU2NvcGUuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJIZWFwLmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBBbGxvY2F0aW9uU2NvcGUgewotcHVibGljOgotICAgIEFs
bG9jYXRpb25TY29wZShIZWFwJiBoZWFwKQotICAgICAgICA6IG1faGVhcChoZWFwKQotICAgICAg
ICAsIG1fbGFzdE9wZXJhdGlvbihtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbGFzdE9wZXJhdGlvbiA9PSBOb09wZXJhdGlvbiB8fCBtX2xhc3RP
cGVyYXRpb24gPT0gQWxsb2NhdGlvbik7Ci0gICAgICAgIG1faGVhcC5tX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPSBBbGxvY2F0aW9uOwotICAgIH0KLSAgICAKLSAgICB+QWxsb2NhdGlvblNjb3BlKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID09IEFs
bG9jYXRpb24pOwotICAgICAgICBtX2hlYXAubV9vcGVyYXRpb25JblByb2dyZXNzID0gbV9sYXN0
T3BlcmF0aW9uOwotICAgIH0KLXByaXZhdGU6Ci0gICAgSGVhcCYgbV9oZWFwOwotICAgIEhlYXBP
cGVyYXRpb24gbV9sYXN0T3BlcmF0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAkocmV2aXNp
b24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENvZGVCbG9ja1NldDo6
bGFzdENoYW5jZVRvRmluYWxpemUoCiAgICAgICAgIGNvZGVCbG9jay0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLmRlc3Ryb3koY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tTZXQ6OmRl
bGV0ZVVubWFya2VkQW5kVW5yZWZlcmVuY2VkKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUp
Cit2b2lkIENvZGVCbG9ja1NldDo6ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2spOwotICAg
IEhhc2hTZXQ8Q29kZUJsb2NrKj4mIHNldCA9IGNvbGxlY3Rpb25UeXBlID09IEVkZW5Db2xsZWN0
aW9uID8gbV9uZXdDb2RlQmxvY2tzIDogbV9vbGRDb2RlQmxvY2tzOworICAgIEhhc2hTZXQ8Q29k
ZUJsb2NrKj4mIHNldCA9IHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiA/IG1fbmV3Q29k
ZUJsb2NrcyA6IG1fb2xkQ29kZUJsb2NrczsKICAgICBWZWN0b3I8Q29kZUJsb2NrKj4gdW5tYXJr
ZWQ7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IHNldCkgewogICAgICAgICBpZiAo
SGVhcDo6aXNNYXJrZWQoY29kZUJsb2NrKSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDb2RlQmxv
Y2tTZXQ6OmRlbGV0ZVVubWFya2VkQW5kVW5yZQogICAgIH0KIAogICAgIC8vIEFueSByZW1haW5p
bmcgeW91bmcgQ29kZUJsb2NrcyBhcmUgbGl2ZSBhbmQgbmVlZCB0byBiZSBwcm9tb3RlZCB0byB0
aGUgc2V0IG9mIG9sZCBDb2RlQmxvY2tzLgotICAgIGlmIChjb2xsZWN0aW9uVHlwZSA9PSBFZGVu
Q29sbGVjdGlvbikKKyAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAg
ICAgICBwcm9tb3RlWW91bmdDb2RlQmxvY2tzKGxvY2tlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDc2NDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29s
bGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NTZWdtZW50ZWRBcnJheS5oIgotI2luY2x1ZGUg
IkhlYXBPcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICAKICAgICAvLyBEZWxldGUgYWxsIGNvZGUgYmxvY2tzIHRoYXQgYXJlIG9u
bHkgcmVmZXJlbmNlZCBieSB0aGlzIHNldCAoaS5lLiBvd25lZAogICAgIC8vIGJ5IHRoaXMgc2V0
KSwgYW5kIHRoYXQgaGF2ZSBub3QgYmVlbiBtYXJrZWQuCi0gICAgdm9pZCBkZWxldGVVbm1hcmtl
ZEFuZFVucmVmZXJlbmNlZChIZWFwT3BlcmF0aW9uKTsKKyAgICB2b2lkIGRlbGV0ZVVubWFya2Vk
QW5kVW5yZWZlcmVuY2VkKENvbGxlY3Rpb25TY29wZSk7CiAgICAgCiAgICAgLy8gQWRkIGFsbCBj
dXJyZW50bHkgZXhlY3V0aW5nIENvZGVCbG9ja3MgdG8gdGhlIHJlbWVtYmVyZWQgc2V0IHRvIGJl
IAogICAgIC8vIHJlLXNjYW5uZWQgZHVyaW5nIHRoZSBuZXh0IGNvbGxlY3Rpb24uCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2xsZWN0aW9uU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29sbGVjdGlvblNjb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgorCisjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBjaGFyKiBjb2xsZWN0
aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSBzY29wZSkKK3sKKyAgICBzd2l0Y2ggKHNjb3Bl
KSB7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkVkZW46CisgICAgICAgIHJldHVybiAiRWRl
biI7CisgICAgY2FzZSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGw6CisgICAgICAgIHJldHVybiAiRnVs
bCI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwor
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29sbGVjdGlvblNjb3Bl
IHNjb3BlKQoreworICAgIG91dC5wcmludChKU0M6OmNvbGxlY3Rpb25TY29wZU5hbWUoc2NvcGUp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbGxlY3Rpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisK
K2VudW0gY2xhc3MgQ29sbGVjdGlvblNjb3BlIHsgRWRlbiwgRnVsbCB9OworCitjb25zdCBjaGFy
KiBjb2xsZWN0aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSk7CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvbGxlY3Rpb25TY29wZSk7CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVu
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDcgKzM5LDcgQEAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6RWRlbkdD
QWN0aXZpdHlDYQogCiB2b2lkIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigp
CiB7Ci0gICAgbV92bS0+aGVhcC5jb2xsZWN0KEVkZW5Db2xsZWN0aW9uKTsKKyAgICBtX3ZtLT5o
ZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKIH0KIAogZG91YmxlIEVkZW5HQ0Fj
dGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24g
MjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrOjpkb0NvbGxlY3RpbwogICAgIH0KICNlbmRpZgogCi0gICAgaGVhcC5jb2xsZWN0
KEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBoZWFwLmNvbGxlY3QoQ29sbGVjdGlvblNjb3BlOjpGdWxs
KTsKIH0KIAogZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1R5cGVNYXAuaAkocmV2aXNpb24gMjA3NjQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUeXBlTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJIZWFwT3Bl
cmF0aW9uLmgiCisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSwyMCArMzUsMjggQEAgc3RydWN0
IEdDVHlwZU1hcCB7CiAgICAgVCBlZGVuOwogICAgIFQgZnVsbDsKICAgICAKLSAgICBUJiBvcGVy
YXRvcltdKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQorICAgIFQmIG9wZXJhdG9yW10oQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogICAgIHsKLSAgICAgICAgaWYgKG9wZXJhdGlvbiA9PSBGdWxsQ29s
bGVjdGlvbikKKyAgICAgICAgc3dpdGNoIChzY29wZSkgeworICAgICAgICBjYXNlIENvbGxlY3Rp
b25TY29wZTo6RnVsbDoKICAgICAgICAgICAgIHJldHVybiBmdWxsOwotICAgICAgICBBU1NFUlQo
b3BlcmF0aW9uID09IEVkZW5Db2xsZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGVkZW47CisgICAg
ICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgorICAgICAgICAgICAgcmV0dXJuIGVkZW47
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBmdWxsOwogICAgIH0KICAgICAKLSAgICBjb25zdCBUJiBvcGVyYXRvcltdKEhlYXBPcGVyYXRp
b24gb3BlcmF0aW9uKSBjb25zdAorICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oQ29sbGVjdGlvblNj
b3BlIHNjb3BlKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG9wZXJhdGlvbiA9PSBGdWxsQ29s
bGVjdGlvbikKKyAgICAgICAgc3dpdGNoIChzY29wZSkgeworICAgICAgICBjYXNlIENvbGxlY3Rp
b25TY29wZTo6RnVsbDoKICAgICAgICAgICAgIHJldHVybiBmdWxsOwotICAgICAgICBBU1NFUlQo
b3BlcmF0aW9uID09IEVkZW5Db2xsZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGVkZW47CisgICAg
ICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpFZGVuOgorICAgICAgICAgICAgcmV0dXJuIGVkZW47
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biBmdWxsOwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkhlYXBTbmFwc2hv
dC5oIgogI2luY2x1ZGUgIkhlYXBTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiSGVhcFZlcmlmaWVy
LmgiCisjaW5jbHVkZSAiSGVscGluZ0dDU2NvcGUuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3
ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVFN0dWJSb3V0
aW5lU2V0LmgiCkBAIC0xNDAsMTUgKzE0MSwxNSBAQCBIYXNoTWFwPGNvbnN0IGNoYXIqLCBHQ1R5
cGVNYXA8U2ltcGxlU3RhCiAgICAgcmV0dXJuICpyZXN1bHQ7CiB9CiAKLVNpbXBsZVN0YXRzJiB0
aW1pbmdTdGF0cyhjb25zdCBjaGFyKiBuYW1lLCBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbikKK1Np
bXBsZVN0YXRzJiB0aW1pbmdTdGF0cyhjb25zdCBjaGFyKiBuYW1lLCBDb2xsZWN0aW9uU2NvcGUg
c2NvcGUpCiB7Ci0gICAgcmV0dXJuIHRpbWluZ1N0YXRzKCkuYWRkKG5hbWUsIEdDVHlwZU1hcDxT
aW1wbGVTdGF0cz4oKSkuaXRlcmF0b3ItPnZhbHVlW29wZXJhdGlvbl07CisgICAgcmV0dXJuIHRp
bWluZ1N0YXRzKCkuYWRkKG5hbWUsIEdDVHlwZU1hcDxTaW1wbGVTdGF0cz4oKSkuaXRlcmF0b3It
PnZhbHVlW3Njb3BlXTsKIH0KIAogY2xhc3MgVGltaW5nU2NvcGUgewogcHVibGljOgotICAgIFRp
bWluZ1Njb3BlKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBjaGFyKiBuYW1lKQotICAg
ICAgICA6IG1fb3BlcmF0aW9uKG9wZXJhdGlvbikKKyAgICBUaW1pbmdTY29wZShPcHRpb25hbDxD
b2xsZWN0aW9uU2NvcGU+IHNjb3BlLCBjb25zdCBjaGFyKiBuYW1lKQorICAgICAgICA6IG1fc2Nv
cGUoc2NvcGUpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgewogICAgICAgICBpZiAobWVh
c3VyZVBoYXNlVGltaW5nKCkpCkBAIC0xNTYsMTggKzE1NywxOCBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIAogICAgIFRpbWluZ1Njb3BlKEhlYXAmIGhlYXAsIGNvbnN0IGNoYXIqIG5hbWUpCi0gICAg
ICAgIDogVGltaW5nU2NvcGUoaGVhcC5vcGVyYXRpb25JblByb2dyZXNzKCksIG5hbWUpCisgICAg
ICAgIDogVGltaW5nU2NvcGUoaGVhcC5jb2xsZWN0aW9uU2NvcGUoKSwgbmFtZSkKICAgICB7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgc2V0T3BlcmF0aW9uKEhlYXBPcGVyYXRpb24gb3BlcmF0aW9u
KQorICAgIHZvaWQgc2V0U2NvcGUoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKICAg
ICB7Ci0gICAgICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9uOworICAgICAgICBtX3Njb3BlID0g
c2NvcGU7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0T3BlcmF0aW9uKEhlYXAmIGhlYXApCisg
ICAgdm9pZCBzZXRTY29wZShIZWFwJiBoZWFwKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW9u
KGhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcygpKTsKKyAgICAgICAgc2V0U2NvcGUoaGVhcC5jb2xs
ZWN0aW9uU2NvcGUoKSk7CiAgICAgfQogICAgIAogICAgIH5UaW1pbmdTY29wZSgpCkBAIC0xNzUs
MTMgKzE3NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtZWFzdXJlUGhhc2VUaW1pbmcoKSkg
ewogICAgICAgICAgICAgZG91YmxlIGFmdGVyID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
TVMoKTsKICAgICAgICAgICAgIGRvdWJsZSB0aW1pbmcgPSBhZnRlciAtIG1fYmVmb3JlOwotICAg
ICAgICAgICAgU2ltcGxlU3RhdHMmIHN0YXRzID0gdGltaW5nU3RhdHMobV9uYW1lLCBtX29wZXJh
dGlvbik7CisgICAgICAgICAgICBTaW1wbGVTdGF0cyYgc3RhdHMgPSB0aW1pbmdTdGF0cyhtX25h
bWUsICptX3Njb3BlKTsKICAgICAgICAgICAgIHN0YXRzLmFkZCh0aW1pbmcpOwotICAgICAgICAg
ICAgZGF0YUxvZygiW0dDOiIsIG1fb3BlcmF0aW9uLCAiXSAiLCBtX25hbWUsICIgdG9vazogIiwg
dGltaW5nLCAiIG1zIChhdmVyYWdlICIsIHN0YXRzLm1lYW4oKSwgIiBtcykuXG4iKTsKKyAgICAg
ICAgICAgIGRhdGFMb2coIltHQzoiLCAqbV9zY29wZSwgIl0gIiwgbV9uYW1lLCAiIHRvb2s6ICIs
IHRpbWluZywgIiBtcyAoYXZlcmFnZSAiLCBzdGF0cy5tZWFuKCksICIgbXMpLlxuIik7CiAgICAg
ICAgIH0KICAgICB9CiBwcml2YXRlOgotICAgIEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb247Cisg
ICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX3Njb3BlOwogICAgIGRvdWJsZSBtX2JlZm9y
ZTsKICAgICBjb25zdCBjaGFyKiBtX25hbWU7CiB9OwpAQCAtMjAzLDcgKzIwNCw2IEBAIEhlYXA6
OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4SGVhcFNpemUobV9t
aW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uKGZhbHNlKQog
ICAgICwgbV90b3RhbEJ5dGVzVmlzaXRlZCgwKQotICAgICwgbV9vcGVyYXRpb25JblByb2dyZXNz
KE5vT3BlcmF0aW9uKQogICAgICwgbV9vYmplY3RTcGFjZSh0aGlzKQogICAgICwgbV9leHRyYU1l
bW9yeVNpemUoMCkKICAgICAsIG1fZGVwcmVjYXRlZEV4dHJhTWVtb3J5U2l6ZSgwKQpAQCAtMjUy
LDcgKzI1Miw4IEBAIGJvb2wgSGVhcDo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiB2b2lk
IEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV92
bS0+ZW50cnlTY29wZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNz
ID09IE5vT3BlcmF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUp
OworICAgIFJFTEVBU0VfQVNTRVJUKG1fbXV0YXRvclN0YXRlID09IE11dGF0b3JTdGF0ZTo6UnVu
bmluZyk7CiAKICAgICBtX2FycmF5QnVmZmVycy5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogICAg
IG1fY29kZUJsb2Nrcy0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTQwOCw3ICs0MDksNyBA
QCB2b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAgICAgICAgIH0KICNl
bmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKLSAgICAgICAgaWYgKG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBpZiAobV9jb2xsZWN0
aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgICAgICBtX29wYXF1
ZVJvb3RzLmNsZWFyKCk7CiAgICAgICAgICAgICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFya1N0YWNr
KCk7CiAgICAgICAgIH0KQEAgLTQzMSw3ICs0MzIsNyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhk
b3VibGUgZ2NTdGFydFRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG90VmlzaXRvciA9
IG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRvcnMudGFrZUxhc3QoKTsKICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBXVEY6OnJlZ2lzdGVyR0NUaHJlYWQoKTsKKyAgICAg
ICAgICAgICAgICBXVEY6OnJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJlYWRUeXBlOjpIZWxwZXIpOwog
CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBQYXJhbGxlbE1vZGVFbmFi
bGVyIHBhcmFsbGVsTW9kZUVuYWJsZXIoKnNsb3RWaXNpdG9yKTsKQEAgLTUyNiw3ICs1MjcsNyBA
QCB2b2lkIEhlYXA6OmdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhDb25zCiB2b2lkIEhlYXA6OmJl
Z2luTWFya2luZygpCiB7CiAgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoKnRoaXMsICJIZWFw
OjpiZWdpbk1hcmtpbmciKTsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxD
b2xsZWN0aW9uKQorICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGwpCiAgICAgICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJNYXJrc0ZvckZ1bGxDb2xsZWN0aW9u
KCk7CiAgICAgCiAgICAgewpAQCAtNTQ0LDcgKzU0NSw3IEBAIHZvaWQgSGVhcDo6dmlzaXRFeHRl
cm5hbFJlbWVtYmVyZWRTZXQoKQogCiB2b2lkIEhlYXA6OnZpc2l0U21hbGxTdHJpbmdzKCkKIHsK
LSAgICBpZiAoIW1fdm0tPnNtYWxsU3RyaW5ncy5uZWVkc1RvQmVWaXNpdGVkKG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcykpCisgICAgaWYgKCFtX3ZtLT5zbWFsbFN0cmluZ3MubmVlZHNUb0JlVmlzaXRl
ZCgqbV9jb2xsZWN0aW9uU2NvcGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZtLT5zbWFs
bFN0cmluZ3MudmlzaXRTdHJvbmdSZWZlcmVuY2VzKG1fc2xvdFZpc2l0b3IpOwpAQCAtNzYzLDcg
Kzc2NCw3IEBAIHZvaWQgSGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKGRvdWJsZSBnY1MKICAgICAg
ICAgZGF0YUxvZ0YoIlxuTnVtYmVyIG9mIGxpdmUgT2JqZWN0cyBhZnRlciBHQyAlbHUsIHRvb2sg
JS42ZiBzZWNzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2aXNpdENvdW50KSwgV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIGdjU3RhcnRUaW1lKTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAg
ICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAg
ICBtX3RvdGFsQnl0ZXNWaXNpdGVkID0gMDsKIAogICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlz
Q3ljbGUgPSBtX3Nsb3RWaXNpdG9yLmJ5dGVzVmlzaXRlZCgpICsgdGhyZWFkQnl0ZXNWaXNpdGVk
KCk7CkBAIC04NzEsNyArODcyLDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxvY2tzKCkK
ICAgICAvLyBJZiBKYXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90IHNhZmUgdG8gZGVsZXRl
IGFsbCBKYXZhU2NyaXB0IGNvZGUsIHNpbmNlCiAgICAgLy8gd2UnbGwgZW5kIHVwIHJldHVybmlu
ZyB0byBkZWxldGVkIGNvZGUuCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0tPmVudHJ5U2NvcGUp
OwotICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworICAg
IEFTU0VSVCghbV9jb2xsZWN0aW9uU2NvcGUpOwogCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygp
OwogCkBAIC05MDgsNyArOTA5LDcgQEAgdm9pZCBIZWFwOjpjbGVhclVubWFya2VkRXhlY3V0YWJs
ZXMoKQogdm9pZCBIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpCiB7CiAgICAgY2xl
YXJVbm1hcmtlZEV4ZWN1dGFibGVzKCk7Ci0gICAgbV9jb2RlQmxvY2tzLT5kZWxldGVVbm1hcmtl
ZEFuZFVucmVmZXJlbmNlZChtX29wZXJhdGlvbkluUHJvZ3Jlc3MpOworICAgIG1fY29kZUJsb2Nr
cy0+ZGVsZXRlVW5tYXJrZWRBbmRVbnJlZmVyZW5jZWQoKm1fY29sbGVjdGlvblNjb3BlKTsKICAg
ICBtX2ppdFN0dWJSb3V0aW5lcy0+ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVz
KCk7CiB9CiAKQEAgLTkzMiw3ICs5MzMsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdl
KCkKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBj
b2xsZWN0V2l0aG91dEFueVN3ZWVwKEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBjb2xsZWN0V2l0aG91
dEFueVN3ZWVwKENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CiAKICAgICBEZWZlckdDRm9yQVdoaWxl
IGRlZmVyR0MoKnRoaXMpOwogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VJbW1vcnRhbE9i
amVjdHMoKSkpCkBAIC05NTUsMjkgKzk1NiwyOSBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJi
YWdlKCkKICAgICBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrcygpOwogfQogCi12b2lk
IEhlYXA6OmNvbGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKK3ZvaWQgSGVhcDo6
Y29sbGVjdChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewogICAgIFN1cGVyU2Ft
cGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBpZiAoIW1faXNTYWZlVG9D
b2xsZWN0KQogICAgICAgICByZXR1cm47Ci0KLSAgICBjb2xsZWN0V2l0aG91dEFueVN3ZWVwKGNv
bGxlY3Rpb25UeXBlKTsKKyAgICAKKyAgICBjb2xsZWN0V2l0aG91dEFueVN3ZWVwKHNjb3BlKTsK
IH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdFdpdGhvdXRBbnlTd2VlcChIZWFw
T3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQorTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVj
dFdpdGhvdXRBbnlTd2VlcChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewogICAg
IHZvaWQqIHN0YWNrVG9wOwogICAgIEFMTE9DQVRFX0FORF9HRVRfUkVHSVNURVJfU1RBVEUocmVn
aXN0ZXJzKTsKIAotICAgIGNvbGxlY3RJbXBsKGNvbGxlY3Rpb25UeXBlLCB3dGZUaHJlYWREYXRh
KCkuc3RhY2soKS5vcmlnaW4oKSwgJnN0YWNrVG9wLCByZWdpc3RlcnMpOworICAgIGNvbGxlY3RJ
bXBsKHNjb3BlLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSwgJnN0YWNrVG9wLCBy
ZWdpc3RlcnMpOwogCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKG1fdm0pOwogfQogCi1ORVZFUl9J
TkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBl
LCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpSZWdp
c3RlclN0YXRlJiBjYWxsZWVTYXZlZFJlZ2lzdGVycykKK05FVkVSX0lOTElORSB2b2lkIEhlYXA6
OmNvbGxlY3RJbXBsKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUsIHZvaWQqIHN0YWNr
T3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmIGNh
bGxlZVNhdmVkUmVnaXN0ZXJzKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKLSAgICBUaW1pbmdTY29wZSBjb2xsZWN0SW1wbFRpbWluZ1Njb3BlKGNv
bGxlY3Rpb25UeXBlLCAiSGVhcDo6Y29sbGVjdEltcGwiKTsKKyAgICBUaW1pbmdTY29wZSBjb2xs
ZWN0SW1wbFRpbWluZ1Njb3BlKHNjb3BlLCAiSGVhcDo6Y29sbGVjdEltcGwiKTsKICAgICAKICNp
ZiBFTkFCTEUoQUxMT0NBVElPTl9MT0dHSU5HKQogICAgIGRhdGFMb2dGKCJKU0MgR0Mgc3RhcnRp
bmcgY29sbGVjdGlvbi5cbiIpOwpAQCAtOTkwLDgxICs5OTEsNzggQEAgTkVWRVJfSU5MSU5FIHZv
aWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogICAgIH0KICAgICAKICAgICBkb3VibGUgZ2NTdGFy
dFRpbWU7Ci0gICAgewotICAgICAgICBUaW1pbmdTY29wZSBlYXJseVRpbWluZ1Njb3BlKGNvbGxl
Y3Rpb25UeXBlLCAiSGVhcDo6Y29sbGVjdEltcGwgYmVmb3JlIG1hcmtSb290cyIpOwotCi0gICAg
ICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkgewotICAgICAgICAgICAgRGVmZXJHQ0ZvckFX
aGlsZSBhd2hpbGUoKnRoaXMpOwotICAgICAgICAgICAgdm0oKS0+dHlwZVByb2ZpbGVyTG9nKCkt
PnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJTGl0ZXJhbCgiR0MiKSk7Ci0gICAgICAgIH0KLQorICAg
IAorICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICBEZWZlckdDRm9yQVdo
aWxlIGF3aGlsZSgqdGhpcyk7CisgICAgICAgIHZtKCktPnR5cGVQcm9maWxlckxvZygpLT5wcm9j
ZXNzTG9nRW50cmllcyhBU0NJSUxpdGVyYWwoIkdDIikpOworICAgIH0KKyAgICAKICNpZiBFTkFC
TEUoSklUKQotICAgICAgICB7Ci0gICAgICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGF3aGlsZSgq
dGhpcyk7Ci0gICAgICAgICAgICBKSVRXb3JrbGlzdDo6aW5zdGFuY2UoKS0+Y29tcGxldGVBbGxG
b3JWTSgqbV92bSk7Ci0gICAgICAgIH0KKyAgICB7CisgICAgICAgIERlZmVyR0NGb3JBV2hpbGUg
YXdoaWxlKCp0aGlzKTsKKyAgICAgICAgSklUV29ya2xpc3Q6Omluc3RhbmNlKCktPmNvbXBsZXRl
QWxsRm9yVk0oKm1fdm0pOworICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0gICAgICAg
IHZtKCktPnNoYWRvd0NoaWNrZW4oKS51cGRhdGUoKnZtKCksIHZtKCktPnRvcENhbGxGcmFtZSk7
Ci0KLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fZGVmZXJyYWxEZXB0aCk7Ci0gICAgICAgIEFT
U0VSVCh2bSgpLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQodm0oKS0+YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCku
YXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgICAgIEFTU0VSVChtX2lzU2FmZVRvQ29sbGVjdCk7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJh
dGlvbik7Ci0KLSAgICAgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgICAgICB3aWxs
U3RhcnRDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKTsKKyAgICAKKyAgICB2bSgpLT5zaGFkb3dD
aGlja2VuKCkudXBkYXRlKCp2bSgpLCB2bSgpLT50b3BDYWxsRnJhbWUpOworICAgIAorICAgIFJF
TEVBU0VfQVNTRVJUKCFtX2RlZmVycmFsRGVwdGgpOworICAgIEFTU0VSVCh2bSgpLT5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5hdG9t
aWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsK
KyAgICBBU1NFUlQobV9pc1NhZmVUb0NvbGxlY3QpOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Nv
bGxlY3Rpb25TY29wZSk7CisgICAgCisgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOworICAg
IHdpbGxTdGFydENvbGxlY3Rpb24oc2NvcGUpOworICAgIHsKKyAgICAgICAgSGVscGluZ0dDU2Nv
cGUgaGVscGluZ0hlYXBTY29wZSgqdGhpcyk7CisgICAgICAgIAorICAgICAgICBjb2xsZWN0SW1w
bFRpbWluZ1Njb3BlLnNldFNjb3BlKCp0aGlzKTsKICAgICAgICAgCi0gICAgICAgIGNvbGxlY3RJ
bXBsVGltaW5nU2NvcGUuc2V0T3BlcmF0aW9uKCp0aGlzKTsKLSAgICAgICAgZWFybHlUaW1pbmdT
Y29wZS5zZXRPcGVyYXRpb24oKnRoaXMpOwotCiAgICAgICAgIGdjU3RhcnRUaW1lID0gV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICAgICAgaWYgKG1fdmVyaWZpZXIpIHsK
ICAgICAgICAgICAgIC8vIFZlcmlmeSB0aGF0IGxpdmUgb2JqZWN0cyBmcm9tIHRoZSBsYXN0IEdD
IGN5Y2xlIGhhdmVuJ3QgYmVlbiBjb3JydXB0ZWQgYnkKICAgICAgICAgICAgIC8vIG11dGF0b3Jz
IGJlZm9yZSB3ZSBiZWdpbiB0aGlzIG5ldyBHQyBjeWNsZS4KICAgICAgICAgICAgIG1fdmVyaWZp
ZXItPnZlcmlmeShIZWFwVmVyaWZpZXI6OlBoYXNlOjpCZWZvcmVHQyk7Ci0KKyAgICAgICAgICAg
IAogICAgICAgICAgICAgbV92ZXJpZmllci0+aW5pdGlhbGl6ZUdDQ3ljbGUoKTsKICAgICAgICAg
ICAgIG1fdmVyaWZpZXItPmdhdGhlckxpdmVPYmplY3RzKEhlYXBWZXJpZmllcjo6UGhhc2U6OkJl
Zm9yZU1hcmtpbmcpOwogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAgIGZsdXNoT2xkU3Ry
dWN0dXJlSURUYWJsZXMoKTsKICAgICAgICAgc3RvcEFsbG9jYXRpb24oKTsKICAgICAgICAgcHJl
cGFyZUZvck1hcmtpbmcoKTsKICAgICAgICAgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKLQor
ICAgICAgICAKICAgICAgICAgaWYgKEhhc093blByb3BlcnR5Q2FjaGUqIGNhY2hlID0gdm0oKS0+
aGFzT3duUHJvcGVydHlDYWNoZSgpKQogICAgICAgICAgICAgY2FjaGUtPmNsZWFyKCk7CisgICAg
ICAgIAorICAgICAgICBtYXJrUm9vdHMoZ2NTdGFydFRpbWUsIHN0YWNrT3JpZ2luLCBzdGFja1Rv
cCwgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fdmVyaWZp
ZXIpIHsKKyAgICAgICAgICAgIG1fdmVyaWZpZXItPmdhdGhlckxpdmVPYmplY3RzKEhlYXBWZXJp
Zmllcjo6UGhhc2U6OkFmdGVyTWFya2luZyk7CisgICAgICAgICAgICBtX3ZlcmlmaWVyLT52ZXJp
ZnkoSGVhcFZlcmlmaWVyOjpQaGFzZTo6QWZ0ZXJNYXJraW5nKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKHZtKCktPnR5cGVQcm9maWxlcigpKQorICAgICAgICAgICAgdm0oKS0+
dHlwZVByb2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKKyAgICAgICAgCisgICAg
ICAgIHJlYXBXZWFrSGFuZGxlcygpOworICAgICAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFr
R0NNYXBzKCk7CisgICAgICAgIHN3ZWVwQXJyYXlCdWZmZXJzKCk7CisgICAgICAgIHNuYXBzaG90
VW5zd2VwdCgpOworICAgICAgICBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7Cisg
ICAgICAgIHJlbW92ZURlYWRDb21waWxlcldvcmtsaXN0RW50cmllcygpOworICAgICAgICBkZWxl
dGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpOworICAgICAgICBkZWxldGVTb3VyY2VQcm92aWRlckNh
Y2hlcygpOworICAgICAgICAKKyAgICAgICAgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7Cisg
ICAgICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKHRoaXMp
OworICAgICAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7CisgICAg
ICAgIAorICAgICAgICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOworICAgICAgICB1cGRhdGVBbGxv
Y2F0aW9uTGltaXRzKCk7CiAgICAgfQotCi0gICAgbWFya1Jvb3RzKGdjU3RhcnRUaW1lLCBzdGFj
a09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKLSAgICAKLSAgICBUaW1p
bmdTY29wZSBsYXRlVGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjpjb2xsZWN0SW1wbCBhZnRlciBt
YXJrUm9vdHMiKTsKLQotICAgIGlmIChtX3ZlcmlmaWVyKSB7Ci0gICAgICAgIG1fdmVyaWZpZXIt
PmdhdGhlckxpdmVPYmplY3RzKEhlYXBWZXJpZmllcjo6UGhhc2U6OkFmdGVyTWFya2luZyk7Ci0g
ICAgICAgIG1fdmVyaWZpZXItPnZlcmlmeShIZWFwVmVyaWZpZXI6OlBoYXNlOjpBZnRlck1hcmtp
bmcpOwotICAgIH0KLQotICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKLSAgICAgICAgdm0o
KS0+dHlwZVByb2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKLQotICAgIHJlYXBX
ZWFrSGFuZGxlcygpOwotICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKLSAg
ICBzd2VlcEFycmF5QnVmZmVycygpOwotICAgIHNuYXBzaG90VW5zd2VwdCgpOwotICAgIGZpbmFs
aXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKLSAgICByZW1vdmVEZWFkQ29tcGlsZXJXb3Jr
bGlzdEVudHJpZXMoKTsKLSAgICBkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpOwotICAgIGRl
bGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7Ci0KLSAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVw
ZXIoKTsKLSAgICBtX2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZyh0
aGlzKTsKLSAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7Ci0KLSAg
ICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwotICAgIHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsK
ICAgICBkaWRGaW5pc2hDb2xsZWN0aW9uKGdjU3RhcnRUaW1lKTsKICAgICByZXN1bWVDb21waWxl
clRocmVhZHMoKTsKICAgICBzd2VlcExhcmdlQWxsb2NhdGlvbnMoKTsKQEAgLTExMDMsMjIgKzEx
MDEsMjIgQEAgdm9pZCBIZWFwOjpzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCkKICNlbmRpZgogfQog
Ci12b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9u
VHlwZSkKK3ZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9u
U2NvcGU+IHNjb3BlKQogewogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICBkYXRh
TG9nKCI9PiAiKTsKICAgICAKLSAgICBpZiAoc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihjb2xsZWN0
aW9uVHlwZSkpIHsKLSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gRnVsbENvbGxlY3Rp
b247CisgICAgaWYgKHNob3VsZERvRnVsbENvbGxlY3Rpb24oc2NvcGUpKSB7CisgICAgICAgIG1f
Y29sbGVjdGlvblNjb3BlID0gQ29sbGVjdGlvblNjb3BlOjpGdWxsOwogICAgICAgICBtX3Nob3Vs
ZERvRnVsbENvbGxlY3Rpb24gPSBmYWxzZTsKICAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkp
CiAgICAgICAgICAgICBkYXRhTG9nKCJGdWxsQ29sbGVjdGlvbiwgIik7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gRWRlbkNvbGxlY3Rpb247CisgICAgICAg
IG1fY29sbGVjdGlvblNjb3BlID0gQ29sbGVjdGlvblNjb3BlOjpFZGVuOwogICAgICAgICBpZiAo
T3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkVkZW5Db2xsZWN0aW9uLCAi
KTsKICAgICB9Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlv
bikgeworICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
IHsKICAgICAgICAgbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0
Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgICAgIG1fZXh0cmFNZW1v
cnlTaXplID0gMDsKICAgICAgICAgbV9kZXByZWNhdGVkRXh0cmFNZW1vcnlTaXplID0gMDsKQEAg
LTExMjksNyArMTEyNyw3IEBAIHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3Bl
cmEKICAgICAgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCiAgICAgICAgICAgICBtX2Z1
bGxBY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVjdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pOworICAgICAg
ICBBU1NFUlQobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKTsKICAg
ICAgICAgbV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVj
dCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgfQogCkBAIC0xMTQ3LDcgKzExNDUs
NyBAQCB2b2lkIEhlYXA6OmZsdXNoT2xkU3RydWN0dXJlSURUYWJsZXMoKQogCiB2b2lkIEhlYXA6
OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKCkKIHsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dy
ZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7CisgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlID09IENv
bGxlY3Rpb25TY29wZTo6RWRlbikgewogICAgICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5mbHVz
aCgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTcxLDcgKzExNjksNyBAQCB2
b2lkIEhlYXA6OnJlYXBXZWFrSGFuZGxlcygpCiAKIHZvaWQgSGVhcDo6cHJ1bmVTdGFsZUVudHJp
ZXNGcm9tV2Vha0dDTWFwcygpCiB7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBG
dWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgIT0gQ29sbGVjdGlvblNj
b3BlOjpGdWxsKQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChhdXRvJiBwcnVuZUNhbGxiYWNr
IDogbV93ZWFrR0NNYXBzLnZhbHVlcygpKQogICAgICAgICBwcnVuZUNhbGxiYWNrKCk7CkBAIC0x
MTk1LDcgKzExOTMsNyBAQCB2b2lkIEhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkK
IAogdm9pZCBIZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKQogewotICAgIGlmIChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9jb2xsZWN0
aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGlmICghbV9sb2dp
Y2FsbHlFbXB0eVdlYWtCbG9ja3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9pbmRleE9mTmV4
dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrVG9Td2VlcCA9IDA7CiAgICAgfQpAQCAtMTI0Myw3ICsx
MjQxLDcgQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKICAgICBpZiAoT3B0
aW9uczo6Z2NNYXhIZWFwU2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4
SGVhcFNpemUoKSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwog
Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAg
IGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAg
ICAgLy8gVG8gYXZvaWQgcGF0aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkgc21hbGwgYW5kIHZl
cnkgbGFyZ2UgaGVhcHMsIHdlIHNldAogICAgICAgICAvLyB0aGUgbmV3IGFsbG9jYXRpb24gbGlt
aXQgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgaGVhcCwgd2l0aCBhCiAgICAgICAg
IC8vIGZpeGVkIG1pbmltdW0uCkBAIC0xMjk4LDggKzEyOTYsOCBAQCB2b2lkIEhlYXA6OnVwZGF0
ZUFsbG9jYXRpb25MaW1pdHMoKQogdm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJs
ZSBnY1N0YXJ0VGltZSkKIHsKICAgICBkb3VibGUgZ2NFbmRUaW1lID0gV1RGOjptb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBIZWFwT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzczsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxD
b2xsZWN0aW9uKQorICAgIENvbGxlY3Rpb25TY29wZSBzY29wZSA9ICptX2NvbGxlY3Rpb25TY29w
ZTsKKyAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2xh
c3RGdWxsR0NMZW5ndGggPSBnY0VuZFRpbWUgLSBnY1N0YXJ0VGltZTsKICAgICBlbHNlCiAgICAg
ICAgIG1fbGFzdEVkZW5HQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1lOwpAQCAtMTMy
MiwxMSArMTMyMCwxMSBAQCB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdj
CiAgICAgICAgIHJlbW92ZURlYWRIZWFwU25hcHNob3ROb2RlcygqaGVhcFByb2ZpbGVyKTsKICAg
ICB9CiAKLSAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNv
bGxlY3Rpb24gfHwgbV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKTsKLSAg
ICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKKyAgICBSRUxFQVNFX0FTU0VS
VChtX2NvbGxlY3Rpb25TY29wZSk7CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBOdWxsb3B0Owog
CiAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZl
ci0+ZGlkR2FyYmFnZUNvbGxlY3Qob3BlcmF0aW9uKTsKKyAgICAgICAgb2JzZXJ2ZXItPmRpZEdh
cmJhZ2VDb2xsZWN0KHNjb3BlKTsKIH0KIAogdm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVh
ZHMoKQpAQCAtMTM4OCw3ICsxMzg2LDcgQEAgYm9vbCBIZWFwOjppc1ZhbGlkQWxsb2NhdGlvbihz
aXplX3QpCiAgICAgaWYgKCFpc1ZhbGlkVGhyZWFkU3RhdGUobV92bSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24p
CisgICAgaWYgKGlzQ3VycmVudFRocmVhZEJ1c3koKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTQ2NSwyNCArMTQ2MywxNCBAQCB2b2lkIEhlYXA6
OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsCiAgICAgbV93cml0ZUJhcnJpZXJCdWZmZXIu
YWRkKGNlbGwpOwogfQogCi1ib29sIEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9w
ZXJhdGlvbiByZXF1ZXN0ZWRDb2xsZWN0aW9uVHlwZSkgY29uc3QKK2Jvb2wgSGVhcDo6c2hvdWxk
RG9GdWxsQ29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKSBjb25zdAog
ewogICAgIGlmICghT3B0aW9uczo6dXNlR2VuZXJhdGlvbmFsR0MoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBzd2l0Y2ggKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7Ci0gICAgY2Fz
ZSBFZGVuQ29sbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgRnVsbENv
bGxlY3Rpb246Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQW55Q29sbGVjdGlvbjoK
KyAgICBpZiAoIXNjb3BlKQogICAgICAgICByZXR1cm4gbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9u
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICpzY29wZSA9PSBDb2xsZWN0aW9u
U2NvcGU6OkZ1bGw7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTG9naWNhbGx5RW1wdHlXZWFrQmxvY2so
V2Vha0Jsb2NrKiBibG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlz
aW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsMTcgKzIyLDE4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFy
cmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiR0NJ
bmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKICNpbmNsdWRlICJIYW5kbGVTZXQuaCIKICNpbmNsdWRl
ICJIYW5kbGVTdGFjay5oIgogI2luY2x1ZGUgIkhlYXBPYnNlcnZlci5oIgotI2luY2x1ZGUgIkhl
YXBPcGVyYXRpb24uaCIKICNpbmNsdWRlICJMaXN0YWJsZUhhbmRsZXIuaCIKICNpbmNsdWRlICJN
YWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVk
ZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJNdXRhdG9yU3RhdGUuaCIKICNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJ
RFRhYmxlLmgiCkBAIC00OCw3ICs0OSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBB
bGxvY2F0aW9uU2NvcGU7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBj
bGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgSGVhcDsKIGNs
YXNzIEhlYXBQcm9maWxlcjsKIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIEhlYXBWZXJp
ZmllcjsKK2NsYXNzIEhlbHBpbmdHQ1Njb3BlOwogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyOwog
Y2xhc3MgSklUU3R1YlJvdXRpbmU7CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKQEAgLTEzOSwx
MSArMTQwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE9ic2VydmVyKEhlYXBPYnNlcnZlciog
b2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVyKTsgfQogICAgIHZvaWQgcmVt
b3ZlT2JzZXJ2ZXIoSGVhcE9ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVycy5yZW1vdmVG
aXJzdChvYnNlcnZlcik7IH0KIAotICAgIC8vIHRydWUgaWYgY29sbGVjdGlvbiBpcyBpbiBwcm9n
cmVzcwotICAgIGJvb2wgaXNDb2xsZWN0aW5nKCk7Ci0gICAgSGVhcE9wZXJhdGlvbiBvcGVyYXRp
b25JblByb2dyZXNzKCkgeyByZXR1cm4gbV9vcGVyYXRpb25JblByb2dyZXNzOyB9Ci0gICAgLy8g
dHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKLSAgICBi
b29sIGlzQnVzeSgpOworICAgIE11dGF0b3JTdGF0ZSBtdXRhdG9yU3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX211dGF0b3JTdGF0ZTsgfQorICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gY29s
bGVjdGlvblNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsZWN0aW9uU2NvcGU7IH0KKworICAg
IC8vIFdlJ3JlIGFsd2F5cyBidXN5IG9uIHRoZSBjb2xsZWN0aW9uIHRocmVhZHMuIE9uIHRoZSBt
YWluIHRocmVhZCwgdGhpcyByZXR1cm5zIHRydWUgaWYgd2UncmUKKyAgICAvLyBoZWxwaW5nIGhl
YXAuCisgICAgYm9vbCBpc0N1cnJlbnRUaHJlYWRCdXN5KCk7CisgICAgCiAgICAgTWFya2VkU3Bh
Y2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKCkgeyByZXR1
cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRob3V0RGVzdHJ1Y3RvcigpOyB9
CiAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNlJiBzdWJzcGFjZUZvck9iamVjdERlc3RydWN0b3Io
KSB7IHJldHVybiBtX29iamVjdFNwYWNlLnN1YnNwYWNlRm9yT2JqZWN0c1dpdGhEZXN0cnVjdG9y
KCk7IH0KICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2UmIHN1YnNwYWNlRm9yQXV4aWxpYXJ5RGF0
YSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JBdXhpbGlhcnlEYXRhKCk7IH0K
QEAgLTE3MSw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
b2xsZWN0QWxsR2FyYmFnZSgpOwogCiAgICAgYm9vbCBzaG91bGRDb2xsZWN0KCk7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUg
PSBBbnlDb2xsZWN0aW9uKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoT3B0
aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9IE51bGxvcHQpOwogICAgIGJvb2wgY29sbGVjdElmTmVj
ZXNzYXJ5T3JEZWZlcihHQ0RlZmVycmFsQ29udGV4dCogPSBudWxscHRyKTsgLy8gUmV0dXJucyB0
cnVlIGlmIGl0IGRpZCBjb2xsZWN0LgogICAgIHZvaWQgY29sbGVjdEFjY29yZGluZ1RvRGVmZXJH
Q1Byb2JhYmlsaXR5KCk7CiAKQEAgLTI2OCw3ICsyNzEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
dW5zaWduZWQqIGFkZHJlc3NPZkJhcnJpZXJUaHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiAmbV9i
YXJyaWVyVGhyZXNob2xkOyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRp
b25TY29wZTsKKyAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGluZ1Njb3BlOwogICAgIGZyaWVuZCBj
bGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIGNsYXNzIERlZmVyR0M7CiAgICAgZnJpZW5kIGNs
YXNzIERlZmVyR0NGb3JBV2hpbGU7CkBAIC0yNzgsNiArMjgxLDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgSGFuZGxlU2V0OwogICAgIGZyaWVuZCBjbGFzcyBIZWFwVXRpbDsKICAgICBm
cmllbmQgY2xhc3MgSGVhcFZlcmlmaWVyOworICAgIGZyaWVuZCBjbGFzcyBIZWxwaW5nR0NTY29w
ZTsKICAgICBmcmllbmQgY2xhc3MgSklUU3R1YlJvdXRpbmU7CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CkBAIC0y
OTMsNyArMjk3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQg
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJy
YWxDb250ZXh0Kiwgc2l6ZV90KTsKIAotICAgIHZvaWQgY29sbGVjdFdpdGhvdXRBbnlTd2VlcChI
ZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlID0gQW55Q29sbGVjdGlvbik7CisgICAgdm9pZCBj
b2xsZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gPSBOdWxsb3B0
KTsKIAogICAgIHZvaWQqIGFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVz
ZSB3aXRoIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycy4KICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhv
dXREZXN0cnVjdG9yKHNpemVfdCk7IC8vIEZvciB1c2Ugd2l0aCBvYmplY3RzIHdpdGhvdXQgZGVz
dHJ1Y3RvcnMuCkBAIC0zMTIsMTAgKzMxNiwxMCBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWRTbG93Q2FzZShzaXplX3QpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2xv
d0Nhc2Uoc2l6ZV90KTsKIAotICAgIHZvaWQgY29sbGVjdEltcGwoSGVhcE9wZXJhdGlvbiwgdm9p
ZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJT
dGF0ZSYpOworICAgIHZvaWQgY29sbGVjdEltcGwoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiwg
dm9pZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0
ZXJTdGF0ZSYpOwogCiAgICAgdm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAgdm9p
ZCB3aWxsU3RhcnRDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpOworICAg
IHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+KTsKICAg
ICB2b2lkIGZsdXNoT2xkU3RydWN0dXJlSURUYWJsZXMoKTsKICAgICB2b2lkIGZsdXNoV3JpdGVC
YXJyaWVyQnVmZmVyKCk7CiAgICAgdm9pZCBzdG9wQWxsb2NhdGlvbigpOwpAQCAtMzY2LDcgKzM3
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Jsb2Nr
cygpOwogICAgIGJvb2wgc3dlZXBOZXh0TG9naWNhbGx5RW1wdHlXZWFrQmxvY2soKTsKIAotICAg
IGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxl
Y3Rpb25UeXBlKSBjb25zdDsKKyAgICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oT3B0aW9u
YWw8Q29sbGVjdGlvblNjb3BlPiByZXF1ZXN0ZWRDb2xsZWN0aW9uU2NvcGUpIGNvbnN0OwogCiAg
ICAgdm9pZCBpbmNyZW1lbnREZWZlcnJhbERlcHRoKCk7CiAgICAgdm9pZCBkZWNyZW1lbnREZWZl
cnJhbERlcHRoKCk7CkBAIC0zOTQsNyArMzk4LDggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV90
b3RhbEJ5dGVzVmlzaXRlZDsKICAgICBzaXplX3QgbV90b3RhbEJ5dGVzVmlzaXRlZFRoaXNDeWNs
ZTsKICAgICAKLSAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsKKyAgICBP
cHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fY29sbGVjdGlvblNjb3BlOworICAgIE11dGF0b3JT
dGF0ZSBtX211dGF0b3JTdGF0ZSB7IE11dGF0b3JTdGF0ZTo6UnVubmluZyB9OwogICAgIFN0cnVj
dHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRhYmxlOwogICAgIE1hcmtlZFNwYWNlIG1fb2JqZWN0
U3BhY2U7CiAgICAgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8QXJyYXlCdWZmZXI+IG1fYXJyYXlC
dWZmZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShy
ZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwyMSArNDUsMTYgQEAgaW5saW5lIGJvb2wgSGVhcDo6
c2hvdWxkQ29sbGVjdCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIW1faXNTYWZl
VG9Db2xsZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyAhPSBOb09wZXJhdGlvbikKKyAgICBpZiAoY29sbGVjdGlvblNjb3BlKCkgfHwgbXV0
YXRvclN0YXRlKCkgPT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICByZXR1cm4g
bV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKTsKICAg
ICByZXR1cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IG1fbWF4RWRlblNpemU7CiB9CiAK
LWlubGluZSBib29sIEhlYXA6OmlzQnVzeSgpCitpbmxpbmUgYm9vbCBIZWFwOjppc0N1cnJlbnRU
aHJlYWRCdXN5KCkKIHsKLSAgICByZXR1cm4gbV9vcGVyYXRpb25JblByb2dyZXNzICE9IE5vT3Bl
cmF0aW9uOwotfQotCi1pbmxpbmUgYm9vbCBIZWFwOjppc0NvbGxlY3RpbmcoKQotewotICAgIHJl
dHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24gfHwgbV9vcGVyYXRp
b25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uOworICAgIHJldHVybiBtYXlCZUdDVGhyZWFk
KCkgfHwgbXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpSdW5uaW5nOwogfQogCiBBTFdB
WVNfSU5MSU5FIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSGVhcENlbGwqIGNlbGwpCkBAIC03Niw3
ICs3MSw3IEBAIGlubGluZSBIZWFwKiBIZWFwOjpoZWFwKGNvbnN0IEpTVmFsdWUgdikKIAogQUxX
QVlTX0lOTElORSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7Ci0g
ICAgQVNTRVJUKCFtYXlCZUdDVGhyZWFkKCkpOworICAgIEFTU0VSVChtYXlCZUdDVGhyZWFkKCkg
IT0gR0NUaHJlYWRUeXBlOjpIZWxwZXIpOwogICAgIEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9j
YXN0PEhlYXBDZWxsKj4ocmF3Q2VsbCk7CiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9u
KCkpCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwpA
QCAtMTYxLDcgKzE1Niw3IEBAIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5QWxs
b2MKIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUg
b2xkU3RhdGUsIHNpemVfdCBzaXplKQogewogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG91Ymxl
LWNvdW50IHRoZSBleHRyYSBtZW1vcnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29s
bGVjdGlvbnMuCi0gICAgaWYgKG9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlv
biAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCisgICAgaWYgKGNvbGxlY3Rpb25T
Y29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6
Ok9sZEdyZXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4
dHJhTWVtb3J5U2l6ZTsKQEAgLTE3Nyw3ICsxNzIsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpyZXBv
cnRFeHRyYU1lbW9yeVZpc2l0CiBpbmxpbmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRlcm5hbE1lbW9y
eVZpc2l0ZWQoQ2VsbFN0YXRlIG9sZFN0YXRlLCBzaXplX3Qgc2l6ZSkKIHsKICAgICAvLyBXZSBk
b24ndCB3YW50IHRvIGRvdWJsZS1jb3VudCB0aGUgZXh0ZXJuYWwgbWVtb3J5IHRoYXQgd2FzIHJl
cG9ydGVkIGluIHByZXZpb3VzIGNvbGxlY3Rpb25zLgotICAgIGlmIChvcGVyYXRpb25JblByb2dy
ZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5
KQorICAgIGlmIChjb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4gJiYg
b2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5KQogICAgICAgICByZXR1cm47CiAKICAgICBz
aXplX3QqIGNvdW50ZXIgPSAmbV9leHRlcm5hbE1lbW9yeVNpemU7CkBAIC0zNzIsNyArMzY3LDcg
QEAgaW5saW5lIGJvb2wgSGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZQogCiBpbmxpbmUgdm9p
ZCBIZWFwOjpjb2xsZWN0QWNjb3JkaW5nVG9EZWZlckdDUHJvYmFiaWxpdHkoKQogewotICAgIGlm
IChpc0RlZmVycmVkKCkgfHwgIW1faXNTYWZlVG9Db2xsZWN0IHx8IG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyAhPSBOb09wZXJhdGlvbikKKyAgICBpZiAoaXNEZWZlcnJlZCgpIHx8ICFtX2lzU2FmZVRv
Q29sbGVjdCB8fCBjb2xsZWN0aW9uU2NvcGUoKSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9y
U3RhdGU6OkhlbHBpbmdHQykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJhbmRvbU51bWJl
cigpIDwgT3B0aW9uczo6ZGVmZXJHQ1Byb2JhYmlsaXR5KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBPYnNlcnZlci5oCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24u
aCIKKyNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTMzLDcgKzMzLDcgQEAgY2xhc3MgSGVhcE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5IZWFwT2JzZXJ2ZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbEdhcmJhZ2VDb2xsZWN0
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRHYXJiYWdlQ29sbGVjdChIZWFwT3BlcmF0aW9u
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KENvbGxlY3Rpb25TY29w
ZSkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkhlYXBPcGVyYXRpb24uaCIKLQotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1u
YW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIEhlYXBPcGVyYXRpb24gb3BlcmF0aW9uKQotewotICAgIHN3
aXRjaCAob3BlcmF0aW9uKSB7Ci0gICAgY2FzZSBOb09wZXJhdGlvbjoKLSAgICAgICAgb3V0LnBy
aW50KCJOb25lIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEFsbG9jYXRpb246Ci0gICAg
ICAgIG91dC5wcmludCgiQWxsb2MiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRnVsbENv
bGxlY3Rpb246Ci0gICAgICAgIG91dC5wcmludCgiRnVsbCIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBFZGVuQ29sbGVjdGlvbjoKLSAgICAgICAgb3V0LnByaW50KCJFZGVuIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEFueUNvbGxlY3Rpb246Ci0gICAgICAgIG91dC5wcmludCgi
QW55Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLQotCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5oCShyZXZpc2lvbiAyMDc2NDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBK
U0MgewotCi1lbnVtIEhlYXBPcGVyYXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgRnVs
bENvbGxlY3Rpb24sIEVkZW5Db2xsZWN0aW9uLCBBbnlDb2xsZWN0aW9uIH07Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgUHJpbnRTdHJlYW07Ci0KLXZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkhlYXBPcGVyYXRpb24pOwot
Ci19IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBWZXJpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjQgKzQzLDYg
QEAgSGVhcFZlcmlmaWVyOjpIZWFwVmVyaWZpZXIoSGVhcCogaGVhcCwgdQogICAgIG1fY3ljbGVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxHQ0N5Y2xlW10+KG1fbnVtYmVyT2ZDeWNsZXMpOwogfQogCi1j
b25zdCBjaGFyKiBIZWFwVmVyaWZpZXI6OmNvbGxlY3Rpb25UeXBlTmFtZShIZWFwT3BlcmF0aW9u
IHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBOb09wZXJhdGlvbjoKLSAg
ICAgICAgcmV0dXJuICJOb09wZXJhdGlvbiI7Ci0gICAgY2FzZSBBbnlDb2xsZWN0aW9uOgotICAg
ICAgICByZXR1cm4gIkFueUNvbGxlY3Rpb24iOwotICAgIGNhc2UgQWxsb2NhdGlvbjoKLSAgICAg
ICAgcmV0dXJuICJBbGxvY2F0aW9uIjsKLSAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgotICAgICAg
ICByZXR1cm4gIkVkZW5Db2xsZWN0aW9uIjsKLSAgICBjYXNlIEZ1bGxDb2xsZWN0aW9uOgotICAg
ICAgICByZXR1cm4gIkZ1bGxDb2xsZWN0aW9uIjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsgLy8gU2lsZW5jaW5nIGEgY29tcGls
ZXIgd2FybmluZy4KLX0KLQogY29uc3QgY2hhciogSGVhcFZlcmlmaWVyOjpwaGFzZU5hbWUoSGVh
cFZlcmlmaWVyOjpQaGFzZSBwaGFzZSkKIHsKICAgICBzd2l0Y2ggKHBoYXNlKSB7CkBAIC04MSw3
ICs2Myw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjppbml0aWFsaXplR0NDeWNsZSgpCiB7CiAgICAg
SGVhcCogaGVhcCA9IG1faGVhcDsKICAgICBpbmNyZW1lbnRDeWNsZSgpOwotICAgIGN1cnJlbnRD
eWNsZSgpLmNvbGxlY3Rpb25UeXBlID0gaGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpOworICAg
IGN1cnJlbnRDeWNsZSgpLnNjb3BlID0gKmhlYXAtPmNvbGxlY3Rpb25TY29wZSgpOwogfQogCiBz
dHJ1Y3QgR2F0aGVyTGl2ZU9iakZ1bmN0b3IgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsK
QEAgLTE5NSw3ICsxNzcsNyBAQCB2b2lkIEhlYXBWZXJpZmllcjo6cmVwb3J0T2JqZWN0KExpdmVP
YmplCiAKICAgICBpZiAob2JqRGF0YS5pc0NvbmZpcm1lZERlYWQpIHsKICAgICAgICAgZGF0YUxv
Z0YoIkZPVU5EIGRlYWQgb2JqICVwIGluIEdDWyVkXSAlcyBsaXN0ICclcydcbiIsCi0gICAgICAg
ICAgICBvYmosIGN5Y2xlSW5kZXgsIGN5Y2xlLmNvbGxlY3Rpb25UeXBlTmFtZSgpLCBsaXN0Lm5h
bWUpOworICAgICAgICAgICAgb2JqLCBjeWNsZUluZGV4LCBjb2xsZWN0aW9uU2NvcGVOYW1lKGN5
Y2xlLnNjb3BlKSwgbGlzdC5uYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2
LDcgKzE4OCw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpyZXBvcnRPYmplY3QoTGl2ZU9iamUKICAg
ICBkYXRhTG9nRigiRk9VTkQgb2JqICVwIHR5cGUgJyVzJyBidXR0ZXJmbHkgJXAgKGJhc2UgJXAp
IGluIEdDWyVkXSAlcyBsaXN0ICclcydcbiIsCiAgICAgICAgIG9iaiwgc3RydWN0dXJlLT5jbGFz
c0luZm8oKS0+Y2xhc3NOYW1lLAogICAgICAgICBidXR0ZXJmbHksIGJ1dHRlcmZseUJhc2UsCi0g
ICAgICAgIGN5Y2xlSW5kZXgsIGN5Y2xlLmNvbGxlY3Rpb25UeXBlTmFtZSgpLCBsaXN0Lm5hbWUp
OworICAgICAgICBjeWNsZUluZGV4LCBjb2xsZWN0aW9uU2NvcGVOYW1lKGN5Y2xlLnNjb3BlKSwg
bGlzdC5uYW1lKTsKIH0KIAogdm9pZCBIZWFwVmVyaWZpZXI6OmNoZWNrSWZSZWNvcmRlZChKU09i
amVjdCogb2JqKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVy
LmgJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBW
ZXJpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAgICAv
LyBvYmplY3Qgd2FzIGluIGFueSBvZiB0aG9zZSBsaXN0cy4KICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGNoZWNrSWZSZWNvcmRlZChKU09iamVjdCopOwogCi0gICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbGxlY3Rpb25UeXBlTmFtZShIZWFwT3BlcmF0aW9uKTsKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogcGhhc2VOYW1lKFBoYXNlKTsKIAogcHJpdmF0ZToKQEAgLTY1LDE0ICs2NCw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIEhlYXBPcGVyYXRpb24gY29s
bGVjdGlvblR5cGU7CisgICAgICAgIENvbGxlY3Rpb25TY29wZSBzY29wZTsKICAgICAgICAgTGl2
ZU9iamVjdExpc3QgYmVmb3JlOwogICAgICAgICBMaXZlT2JqZWN0TGlzdCBhZnRlcjsKLQotICAg
ICAgICBjb25zdCBjaGFyKiBjb2xsZWN0aW9uVHlwZU5hbWUoKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gSGVhcFZlcmlmaWVyOjpjb2xsZWN0aW9uVHlwZU5hbWUoY29sbGVj
dGlvblR5cGUpOwotICAgICAgICB9CiAgICAgfTsKIAogICAgIHZvaWQgaW5jcmVtZW50Q3ljbGUo
KSB7IG1fY3VycmVudEN5Y2xlID0gKG1fY3VycmVudEN5Y2xlICsgMSkgJSBtX251bWJlck9mQ3lj
bGVzOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWxwaW5nR0NTY29wZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlbHBpbmdHQ1Njb3Bl
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVscGluZ0dD
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJIZWFwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBIZWxwaW5nR0NTY29wZSB7CitwdWJsaWM6CisgICAgSGVscGluZ0dDU2NvcGUoSGVhcCYgaGVh
cCkKKyAgICAgICAgOiBtX2hlYXAoaGVhcCkKKyAgICAgICAgLCBtX29sZFN0YXRlKG1faGVhcC5t
X211dGF0b3JTdGF0ZSkKKyAgICB7CisgICAgICAgIG1faGVhcC5tX211dGF0b3JTdGF0ZSA9IE11
dGF0b3JTdGF0ZTo6SGVscGluZ0dDOworICAgIH0KKyAgICAKKyAgICB+SGVscGluZ0dDU2NvcGUo
KQorICAgIHsKKyAgICAgICAgbV9oZWFwLm1fbXV0YXRvclN0YXRlID0gbV9vbGRTdGF0ZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSGVhcCYgbV9oZWFwOworICAgIE11dGF0b3JTdGF0ZSBtX29s
ZFN0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjA3NjQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIExhcmdlQWxsb2NhdGlvbjo6cmVhcFdlYWtT
ZXQoKQogCiB2b2lkIExhcmdlQWxsb2NhdGlvbjo6ZmxpcCgpCiB7Ci0gICAgQVNTRVJUKGhlYXAo
KS0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKTsKKyAgICBBU1NFUlQo
aGVhcCgpLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAg
IGNsZWFyTWFya2VkKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRv
ci5oIgogCi0jaW5jbHVkZSAiQWxsb2NhdGlvblNjb3BlLmgiCisjaW5jbHVkZSAiQWxsb2NhdGlu
Z1Njb3BlLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVh
cC5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgpAQCAtMTg1LDcgKzE4NSw2IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmRvVGUKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBtX2hlYXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgICAg
IH0KLSAgICAgICAgQVNTRVJUKG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3Bl
cmF0aW9uKTsKICAgICB9CiAgICAgaWYgKCsrYWxsb2NhdGlvbkNvdW50ID49IE9wdGlvbnM6OnNs
b3dQYXRoQWxsb2NzQmV0d2VlbkdDcygpKQogICAgICAgICBhbGxvY2F0aW9uQ291bnQgPSAwOwpA
QCAtMjE0LDEwICsyMTMsMTAgQEAgdm9pZCogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dD
YXNlSQogICAgIAogICAgIGRpZENvbnN1bWVGcmVlTGlzdCgpOwogICAgIAorICAgIEFsbG9jYXRp
bmdTY29wZSBoZWFscGluZ0hlYXAoKm1faGVhcCk7CisKICAgICBtX2hlYXAtPmNvbGxlY3RJZk5l
Y2Vzc2FyeU9yRGVmZXIoZGVmZXJyYWxDb250ZXh0KTsKICAgICAKLSAgICBBbGxvY2F0aW9uU2Nv
cGUgYWxsb2NhdGlvblNjb3BlKCptX2hlYXApOwotCiAgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxs
b2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIAogICAgIGlmIChMSUtFTFkocmVzdWx0ICE9
IDApKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZp
c2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRGVzdHJ1Y3Rpb25N
b2RlLmgiCiAjaW5jbHVkZSAiRnJlZUxpc3QuaCIKICNpbmNsdWRlICJIZWFwQ2VsbC5oIgotI2lu
Y2x1ZGUgIkhlYXBPcGVyYXRpb24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25TdGF0dXMuaCIKICNp
bmNsdWRlICJXZWFrU2V0LmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNzY0MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxv
Y2F0aW9uKCkKIAogICAgIG1fYWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFr
U2V0cyk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVk
ZW5Db2xsZWN0aW9uKQorICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxl
Y3Rpb25TY29wZTo6RWRlbikKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNl
dEZvclN3ZWVwID0gbV9sYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAg
ICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IDA7CkBAIC0z
NTUsNyArMzU1LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhIZWFwUm9vdAog
ICAgIAogICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAg
aWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKQorICAg
IGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkK
ICAgICAgICAgbV9hY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKIH0KIApAQCAtMzY3LDcg
KzM2Nyw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlYXBXZWFrU2V0cygpCiAgICAgCiAgICAgbV9u
ZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5v
cGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1faGVhcC0+
Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2Fj
dGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogfQogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9p
ZCBNYXJrZWRTcGFjZTo6c3RvcEFsbG9jYXRpbmcoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpwcmVw
YXJlRm9yTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygp
ID09IEVkZW5Db2xsZWN0aW9uKQorICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09
IENvbGxlY3Rpb25TY29wZTo6RWRlbikKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0
Rm9yVGhpc0NvbGxlY3Rpb24gPSBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAg
IGVsc2UKICAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24g
PSAwOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiAKIHZv
aWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0
aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKSB7CisgICAgaWYgKG1faGVhcC0+Y29s
bGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGZvckVh
Y2hBbGxvY2F0b3IoCiAgICAgICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgICAgIGFsbG9jYXRvci5iZWdpbk1h
cmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIE1hcmtlZFNwYWNlOjpmaW5kRW0KIAogdm9pZCBNYXJrZWRTcGFjZTo6c25hcHNo
b3RVbnN3ZXB0KCkKIHsKLSAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0g
RWRlbkNvbGxlY3Rpb24pIHsKKyAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBD
b2xsZWN0aW9uU2NvcGU6OkVkZW4pIHsKICAgICAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAg
ICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1
cyB7CiAgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xs
ZWN0aW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9yU3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL011dGF0b3JTdGF0
ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTXV0YXRv
clN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0b3JTdGF0ZS5oIgorCisjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTXV0YXRvclN0
YXRlIHN0YXRlKQoreworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIE11dGF0b3JTdGF0
ZTo6UnVubmluZzoKKyAgICAgICAgb3V0LnByaW50KCJSdW5uaW5nIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIE11dGF0b3JTdGF0ZTo6QWxsb2NhdGluZzoKKyAgICAgICAgb3V0LnByaW50
KCJBbGxvY2F0aW5nIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE11dGF0b3JTdGF0ZTo6
SGVscGluZ0dDOgorICAgICAgICBvdXQucHJpbnQoIkhlbHBpbmdHQyIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9y
U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRhdG9y
U3RhdGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NdXRh
dG9yU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIE11dGF0b3JTdGF0
ZSB7CisgICAgLy8gVGhlIG11dGF0b3IgaXMgcnVubmluZyB3aGVuIGl0J3Mgbm90IGluc2lkZSBh
IEhlYXAgc2xvdyBwYXRoLgorICAgIFJ1bm5pbmcsCisgICAgCisgICAgLy8gVGhlIG11dGF0b3Ig
aXMgaW4gYW4gYWxsb2NhdGlvbiBzbG93IHBhdGguCisgICAgQWxsb2NhdGluZywKKyAgICAKKyAg
ICAvLyBUaGUgbXV0YXRvciB3YXMgYXNrZWQgYnkgdGhlIEdDIHRvIGRvIHNvbWUgd29yay4KKyAg
ICBIZWxwaW5nR0MKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsK
KworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6TXV0YXRvclN0YXRlKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNzY0MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTYsNyArOTYsNyBAQCBTbG90VmlzaXRvcjo6flNsb3RWaXNpdG9yKCkKIAogdm9p
ZCBTbG90VmlzaXRvcjo6ZGlkU3RhcnRNYXJraW5nKCkKIHsKLSAgICBpZiAoaGVhcCgpLT5vcGVy
YXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKGhlYXAoKS0+Y29s
bGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBBU1NFUlQo
bV9vcGFxdWVSb290cy5pc0VtcHR5KCkpOyAvLyBTaG91bGQgaGF2ZSBtZXJnZWQgYnkgbm93Lgog
ICAgIGVsc2UKICAgICAgICAgcmVzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNw
cAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDE3ICsz
MjAsMTYgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9iamVjdAogICAgIHJl
c3VsdCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoY2VsbCwgb2JqZWN0R3JvdXAsIHRydWUp
OwogfQogCi1zdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rp
b246OlR5cGUgcHJvdG9jb2xUeXBlRm9ySGVhcE9wZXJhdGlvbihIZWFwT3BlcmF0aW9uIG9wZXJh
dGlvbikKK3N0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFwOjpHYXJiYWdlQ29sbGVjdGlv
bjo6VHlwZSBwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKENvbGxlY3Rpb25TY29wZSBzY29w
ZSkKIHsKLSAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewotICAgIGNhc2UgRnVsbENvbGxlY3Rpb246
CisgICAgc3dpdGNoIChzY29wZSkgeworICAgIGNhc2UgQ29sbGVjdGlvblNjb3BlOjpGdWxsOgog
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rp
b246OlR5cGU6OkZ1bGw7Ci0gICAgY2FzZSBFZGVuQ29sbGVjdGlvbjoKKyAgICBjYXNlIENvbGxl
Y3Rpb25TY29wZTo6RWRlbjoKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Okhl
YXA6OkdhcmJhZ2VDb2xsZWN0aW9uOjpUeXBlOjpQYXJ0aWFsOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6SGVhcDo6R2FyYmFnZUNvbGxlY3Rpb246OlR5cGU6OkZ1bGw7CiAgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpIZWFw
OjpHYXJiYWdlQ29sbGVjdGlvbjo6VHlwZTo6RnVsbDsKIH0KIAogdm9pZCBJbnNwZWN0b3JIZWFw
QWdlbnQ6OndpbGxHYXJiYWdlQ29sbGVjdCgpCkBAIC0zNDEsNyArMzQwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JIZWFwQWdlbnQ6OndpbGxHYXJiYWdlQ29sbAogICAgIG1fZ2NTdGFydFRpbWUgPSBtX2Vu
dmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpOwogfQogCi12b2lk
IEluc3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QoSGVhcE9wZXJhdGlvbiBvcGVy
YXRpb24pCit2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QoQ29sbGVj
dGlvblNjb3BlIHNjb3BlKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwogICAgIEFTU0VSVCgh
c3RkOjppc25hbihtX2djU3RhcnRUaW1lKSk7CkBAIC0zNTYsNyArMzU1LDcgQEAgdm9pZCBJbnNw
ZWN0b3JIZWFwQWdlbnQ6OmRpZEdhcmJhZ2VDb2xsZQogICAgIC8vIFZNIGFzIHRoZSBpbnNwZWN0
ZWQgcGFnZS4KIAogICAgIEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSBkYXRhOwotICAgIGRhdGEudHlw
ZSA9IHByb3RvY29sVHlwZUZvckhlYXBPcGVyYXRpb24ob3BlcmF0aW9uKTsKKyAgICBkYXRhLnR5
cGUgPSBwcm90b2NvbFR5cGVGb3JIZWFwT3BlcmF0aW9uKHNjb3BlKTsKICAgICBkYXRhLnN0YXJ0
VGltZSA9IG1fZ2NTdGFydFRpbWU7CiAgICAgZGF0YS5lbmRUaW1lID0gbV9lbnZpcm9ubWVudC5l
eGVjdXRpb25TdG9wd2F0Y2goKS0+ZWxhcHNlZFRpbWUoKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVh
cEFnZW50LmgJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEhlYXBPYnNlcnZlcgogICAgIHZvaWQgd2lsbEdh
cmJhZ2VDb2xsZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRHYXJiYWdlQ29sbGVjdChKU0M6
OkhlYXBPcGVyYXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoSlND
OjpDb2xsZWN0aW9uU2NvcGUpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVh
ckhlYXBTbmFwc2hvdHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzU1LDkgKzc1NSw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4
ZWMKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IEFTU0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2bS5pc0NvbGxl
Y3RvckJ1c3koKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJl
YWQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxl
Y3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAg
ICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQpAQCAtOTAwLDggKzkw
MCw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEFTU0VSVCghdGhy
b3dTY29wZS5leGNlcHRpb24oKSk7Ci0gICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7
Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0
b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOworICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgYm9vbCBpc0pT
Q2FsbCA9IChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SlMpOwpAQCAtOTYyLDEwICs5NjIsMTAgQEAg
SlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQVNTRVJUKCF0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKICAgICAvLyBXZSB0
aHJvdyBpbiB0aGlzIGNhc2UgYmVjYXVzZSB3ZSBoYXZlIHRvIHJldHVybiBzb21ldGhpbmcgInZh
bGlkIiBidXQgd2UncmUKICAgICAvLyBhbHJlYWR5IGluIGFuIGludmFsaWQgc3RhdGUuCi0gICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3lPbkN1
cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092
ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKICAgICBib29sIGlzSlNDb25z
dHJ1Y3QgPSAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpKUyk7CkBAIC0xMDI4LDcg
KzEwMjgsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yCiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKCF0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKICAgICAKLSAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5
KCkpCisgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQogICAgICAg
ICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwogCiAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVl
OgpAQCAtMTA1Myw5ICsxMDUzLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxs
RnJhbWVDbAogICAgIFZNJiB2bSA9ICpjbG9zdXJlLnZtOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1
c3koKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7
Ci0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1
c3lPbkN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgU3Rh
Y2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CkBAIC0xMDc2LDkgKzEwNzYsOSBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICBBU1NFUlQo
c2NvcGUtPnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKTsKLSAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKICAgICBSRUxFQVNF
X0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBpZiAodm0u
aXNDb2xsZWN0b3JCdXN5KCkpCisgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRo
cmVhZCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBWTUVudHJ5U2NvcGUgZW50
cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKQEAgLTExODIsOSArMTE4Miw5IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3IKIAogICAgIEFTU0VSVChz
Y29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NFUlQoIXRocm93U2NvcGUu
ZXhjZXB0aW9uKCkpOwotICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIEFT
U0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGlmICh2bS5p
c0NvbGxlY3RvckJ1c3koKSkKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhy
ZWFkKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIFZNRW50cnlTY29wZSBlbnRy
eVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDIwNzY0MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw3ICs5MSw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwotICAgIFJFTEVBU0Vf
QVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIENvZGVQcm9maWxpbmcgcHJv
ZmlsZShzb3VyY2UpOwogCkBAIC0xNzQsNyArMTc0LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJl
YWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMt
PnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgp
LmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIHJldHVybiBsb2FkQW5k
RXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBpbml0aWF0b3IpOwogfQpA
QCAtMTg1LDcgKzE4NSw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1
bGUKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwotICAgIFJFTEVBU0Vf
QVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlz
Q29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCoga2V5ID0gY3Jl
YXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CiAKQEAgLTIxMiw3ICsyMTIsNyBAQCBK
U0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUqCiB7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJp
bmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICBS
RUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwog
CiAgICAgcmV0dXJuIGxvYWRNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9i
amVjdCgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpLCBpbml0aWF0
b3IpOwogfQpAQCAtMjIzLDcgKzIyMyw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxl
KEV4ZWNTdGF0ZSoKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwotICAg
IFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAogICAgIFN5bWJvbCog
a2V5ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSh2bSk7CiAKQEAgLTI0MSw3ICsy
NDEsNyBAQCBKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqCiB7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5h
dG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgp
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhy
ZWFkKCkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50
cnlHbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIo
KS0+bGlua0FuZEV2YWx1YXRlTW9kdWxlKGV4ZWMsIGlkZW50aWZpZXJUb0pTVmFsdWUoZXhlYy0+
dm0oKSwgbW9kdWxlS2V5KSwgaW5pdGlhdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3
IEBAIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoVk0qIHYKIHsKICAgICBpZiAo
IW1fdm0pCiAgICAgICAgIHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+YXBpTG9j
aygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkgfHwgIW1fdm0tPmlzQ29sbGVjdG9yQnVz
eSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+YXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJ
c0hvbGRpbmdMb2NrKCkgfHwgIW1fdm0tPmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKICAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExvY2tz
KHRoaXMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFs
bFN0cmluZ3MuaAkocmV2aXNpb24gMjA3NjQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU21hbGxTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMTMsOSArMTEzLDkgQEAgcHVibGljOgogICAgIEpTU3RyaW5nKiBudWxsT2JqZWN0U3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9udWxsT2JqZWN0U3RyaW5nOyB9CiAgICAgSlNTdHJpbmcqIHVu
ZGVmaW5lZE9iamVjdFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZWZpbmVkT2JqZWN0U3Ry
aW5nOyB9CiAKLSAgICBib29sIG5lZWRzVG9CZVZpc2l0ZWQoSGVhcE9wZXJhdGlvbiBjb2xsZWN0
aW9uVHlwZSkgY29uc3QKKyAgICBib29sIG5lZWRzVG9CZVZpc2l0ZWQoQ29sbGVjdGlvblNjb3Bl
IHNjb3BlKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb25UeXBlID09IEZ1bGxD
b2xsZWN0aW9uKQorICAgICAgICBpZiAoc2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBtX25lZWRzVG9CZVZpc2l0
ZWQ7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAy
MDc2NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NzYsNyArNTc2LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkdW1wUmVnRXhwVHJhY2UoKTsKIAotICAgIGJvb2wgaXNDb2xsZWN0b3JCdXN5
KCkgeyByZXR1cm4gaGVhcC5pc0J1c3koKTsgfQorICAgIGJvb2wgaXNDb2xsZWN0b3JCdXN5T25D
dXJyZW50VGhyZWFkKCkgeyByZXR1cm4gaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCk7IH0KIAog
I2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgIGJvb2wgaXNJbml0aWFsaXppbmdPYmplY3Qo
KSBjb25zdDsgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk1Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw3ICsxMzAsNyBAQCB2b2lkIEpTRG9sbGFyVk1Qcm90b3R5cGU6OmVkZW5HQyhFeGVjU3Rh
CiB7CiAgICAgaWYgKCFlbnN1cmVDdXJyZW50VGhyZWFkT3duc0pTTG9jayhleGVjKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGV4ZWMtPmhlYXAoKS0+Y29sbGVjdChFZGVuQ29sbGVjdGlvbik7Cisg
ICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KENvbGxlY3Rpb25TY29wZTo6RWRlbik7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdDKEV4ZWNTdGF0
ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEwLTIwICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgVGhlIHRyYWNraW5nIG9mIHRoZSBjb2Fy
c2UtZ3JhaW4gSGVhcCBzdGF0ZSAoYWxsb2NhdGluZyBvciBub3QsIGNvbGxlY3RvciBvciBub3Qs
IGVkZW4gdnMgZnVsbCkgc2hvdWxkIHJlc3BlY3QgdGhlIG9ydGhvZ29uYWxpdHkgYmV0d2VlbiBh
bGxvY2F0aW5nIGFuZCBjb2xsZWN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjM3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4KKyAgICAgICAgCisgICAgICAgIFRoZXJlIHdpbGwgc29vbiBiZSBkaWZmZXJlbnQga2lu
ZHMgb2YgR0MgdGhyZWFkcywgYW5kIFdURidzICJhcmUgeW91IGEgR0MgdGhyZWFkIiB0aGluZwor
ICAgICAgICBzaG91bGQga25vdyBhYm91dCB0aGlzLgorCisgICAgICAgICogd3RmL01haW5UaHJl
YWQuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplR0NUaHJlYWRzKToKKyAgICAgICAgKFdU
Rjo6cmVnaXN0ZXJHQ1RocmVhZCk6CisgICAgICAgIChXVEY6Om1heUJlR0NUaHJlYWQpOgorICAg
ICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6CisKIDIwMTYtMTAtMTkgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjb21i
aW5lcyBXVEY6OnZpc2l0KC4uLikgd2l0aCBXVEY6Om1ha2VWaXNpdG9yKC4uLikKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L01haW5UaHJlYWQuY3BwCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvV1RGL3d0Zi9NYWlu
VGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDE0ICsxOTAsMTQgQEAgYm9vbCBjYW5B
Y2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVAogfQogI2VuZGlmCiAKLXN0YXRpYyBUaHJl
YWRTcGVjaWZpYzxib29sPiogaXNHQ1RocmVhZDsKK3N0YXRpYyBUaHJlYWRTcGVjaWZpYzxPcHRp
b25hbDxHQ1RocmVhZFR5cGU+PiogaXNHQ1RocmVhZDsKIAogdm9pZCBpbml0aWFsaXplR0NUaHJl
YWRzKCkKIHsKLSAgICBpc0dDVGhyZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPGJvb2w+KCk7Cisg
ICAgaXNHQ1RocmVhZCA9IG5ldyBUaHJlYWRTcGVjaWZpYzxPcHRpb25hbDxHQ1RocmVhZFR5cGU+
PigpOwogfQogCi12b2lkIHJlZ2lzdGVyR0NUaHJlYWQoKQordm9pZCByZWdpc3RlckdDVGhyZWFk
KEdDVGhyZWFkVHlwZSB0eXBlKQogewogICAgIGlmICghaXNHQ1RocmVhZCkgewogICAgICAgICAv
LyBUaGlzIGhhcHBlbnMgaWYgd2UncmUgcnVubmluZyBpbiBhIHByb2Nlc3MgdGhhdCBkb2Vzbid0
IGNhcmUgYWJvdXQKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIHJlZ2lzdGVyR0NUaHJlYWQoKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKippc0dDVGhyZWFkID0gdHJ1ZTsKKyAgICAq
KmlzR0NUaHJlYWQgPSB0eXBlOwogfQogCiBib29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKQpA
QCAtMjE2LDkgKzIxNiwxMyBAQCBib29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKQogICAgIHJl
dHVybiBpc01haW5UaHJlYWQoKTsKIH0KIAotYm9vbCBtYXlCZUdDVGhyZWFkKCkKK09wdGlvbmFs
PEdDVGhyZWFkVHlwZT4gbWF5QmVHQ1RocmVhZCgpCiB7Ci0gICAgcmV0dXJuIGlzR0NUaHJlYWQg
JiYgaXNHQ1RocmVhZC0+aXNTZXQoKSAmJiAqKmlzR0NUaHJlYWQ7CisgICAgaWYgKCFpc0dDVGhy
ZWFkKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBpZiAoIWlzR0NUaHJlYWQtPmlzU2V0
KCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiAqKmlzR0NUaHJlYWQ7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvTWFpblRocmVhZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAkocmV2aXNpb24gMjA3
NjQwKQorKysgU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw5ICszMywxMiBAQAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogCitjbGFzcyBQcmludFN0cmVhbTsKKwogdHlwZWRlZiB1aW50MzJf
dCBUaHJlYWRJZGVudGlmaWVyOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KQEAgLTY3LDggKzcwLDE1IEBAIGlubGluZSBib29sIGlzVUlUaHJlYWQoKSB7IHJldHVy
biBpc01haW4KIAogdm9pZCBpbml0aWFsaXplR0NUaHJlYWRzKCk7CiAKLVdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHJlZ2lzdGVyR0NUaHJlYWQoKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIG1h
eUJlR0NUaHJlYWQoKTsKK2VudW0gY2xhc3MgR0NUaHJlYWRUeXBlIHsKKyAgICBNYWluLAorICAg
IEhlbHBlcgorfTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgR0NUaHJlYWRU
eXBlKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJHQ1RocmVhZChHQ1RocmVh
ZFR5cGUpOworV1RGX0VYUE9SVF9QUklWQVRFIE9wdGlvbmFsPEdDVGhyZWFkVHlwZT4gbWF5QmVH
Q1RocmVhZCgpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVh
ZCgpOwogCiAvLyBOT1RFOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGludGVybmFsIHRvIHRoZSBjYWxs
T25NYWluVGhyZWFkIGltcGxlbWVudGF0aW9uLgpAQCAtODgsNiArOTgsNyBAQCB2b2lkIGluaXRp
YWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRoCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCit1
c2luZyBXVEY6OkdDVGhyZWFkVHlwZTsKIHVzaW5nIFdURjo6Y2FsbE9uTWFpblRocmVhZDsKIHVz
aW5nIFdURjo6Y2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkOwogdXNpbmcgV1RGOjpp
c01haW5UaHJlYWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0x
MC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFRoZSB0cmFj
a2luZyBvZiB0aGUgY29hcnNlLWdyYWluIEhlYXAgc3RhdGUgKGFsbG9jYXRpbmcgb3Igbm90LCBj
b2xsZWN0b3Igb3Igbm90LCBlZGVuIHZzIGZ1bGwpIHNob3VsZCByZXNwZWN0IHRoZSBvcnRob2dv
bmFsaXR5IGJldHdlZW4gYWxsb2NhdGluZyBhbmQgY29sbGVjdGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzM4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8g
Y2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3cp
OgorCiAyMDE2LTEwLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSB0YWJsZS5kZWxldGVSb3coLTEpIGEgbm8tb3Agd2hlbiB0aGVyZSBhcmUgbm8gcm93
cwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyMDc2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgR0NDb250cm9sbGVy
OjpnY1RpbWVyRmlyZWQoKQogdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KCkK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSk7Ci0gICAg
aWYgKCFKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5oZWFwLmlzQnVzeSgpKSB7CisgICAgaWYgKCFK
U0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5oZWFwLmlzQ3VycmVudFRocmVhZEJ1c3koKSkgewogICAg
ICAgICBKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAg
ICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAgfQpAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3dJZk5vCiB7CiAj
aWYgVVNFKENGKSB8fCBVU0UoR0xJQikKICAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRv
dzo6Y29tbW9uVk0oKSk7Ci0gICAgaWYgKCFKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5oZWFwLmlz
QnVzeSgpKQorICAgIGlmICghSlNET01XaW5kb3c6OmNvbW1vblZNKCkuaGVhcC5pc0N1cnJlbnRU
aHJlYWRCdXN5KCkpCiAgICAgICAgIEpTRE9NV2luZG93Ojpjb21tb25WTSgpLmhlYXAuY29sbGVj
dEFsbEdhcmJhZ2VJZk5vdERvbmVSZWNlbnRseSgpOwogI2Vsc2UKICAgICBnYXJiYWdlQ29sbGVj
dFNvb24oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>