<?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>153084</bug_id>
          
          <creation_ts>2016-01-13 16:43:08 -0800</creation_ts>
          <short_desc>Modern IDB: Support opening and deleting SQLite databases on disk</short_desc>
          <delta_ts>2016-01-21 13:21:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>153021</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1155288</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-13 16:43:08 -0800</bug_when>
    <thetext>Modern IDB: Support opening and deleting SQLite databases on disk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155315</commentid>
    <comment_count>1</comment_count>
      <attachid>268923</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-13 17:05:48 -0800</bug_when>
    <thetext>Created attachment 268923
Patch v1

Touches filesystem - Let&apos;s get 3 reviewers up in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155316</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 17:07:46 -0800</bug_when>
    <thetext>Attachment 268923 did not pass style-queue:


ERROR: Source/WebKit/mac/Storage/WebDatabaseProvider.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155331</commentid>
    <comment_count>3</comment_count>
      <attachid>268923</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-13 18:14:34 -0800</bug_when>
    <thetext>Comment on attachment 268923
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h:74
&gt; +    bool ensureValidRecordsTable();
&gt; +    std::unique_ptr&lt;IDBDatabaseInfo&gt; extractExistingDatabaseInfo();
&gt; +    std::unique_ptr&lt;IDBDatabaseInfo&gt; createAndPopulateInitialDatabaseInfo();

These are unimplemented in this patch, but it doesn&apos;t hurt to add them to a header.

&gt; Source/WebKit/mac/Storage/WebDatabaseProvider.mm:36
&gt; +        databasesDirectory = @&quot;~/Library/WebKit/Databases/___IndexedDB&quot;;

This is equivalent to the old way we get a directory for the databases, but doesn&apos;t this allow an application to have access to the IDB databases of another application that uses WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155350</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-13 20:37:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 268923 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268923&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h:74
&gt; &gt; +    bool ensureValidRecordsTable();
&gt; &gt; +    std::unique_ptr&lt;IDBDatabaseInfo&gt; extractExistingDatabaseInfo();
&gt; &gt; +    std::unique_ptr&lt;IDBDatabaseInfo&gt; createAndPopulateInitialDatabaseInfo();
&gt; 
&gt; These are unimplemented in this patch, but it doesn&apos;t hurt to add them to a
&gt; header.

Yah, whoops - I&apos;ll remove them.

This patch was originally much bigger but I decided the review on &quot;create&quot; and &quot;delete&quot; by themselves would be much nicer.

&gt; &gt; Source/WebKit/mac/Storage/WebDatabaseProvider.mm:36
&gt; &gt; +        databasesDirectory = @&quot;~/Library/WebKit/Databases/___IndexedDB&quot;;
&gt; 
&gt; This is equivalent to the old way we get a directory for the databases, but
&gt; doesn&apos;t this allow an application to have access to the IDB databases of
&gt; another application that uses WebKit?

Yes. Which - for WebSQL databases - was kind of okay, but is definitely not for IDB.

Good catch. I&apos;ll throw in the app&apos;s bundle id.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155351</commentid>
    <comment_count>5</comment_count>
      <attachid>268934</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-13 20:58:06 -0800</bug_when>
    <thetext>Created attachment 268934
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155352</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 21:00:07 -0800</bug_when>
    <thetext>Attachment 268934 did not pass style-queue:


ERROR: Source/WebKit/mac/Storage/WebDatabaseProvider.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155363</commentid>
    <comment_count>7</comment_count>
      <attachid>268934</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-13 21:46:57 -0800</bug_when>
    <thetext>Comment on attachment 268934
Patch v2

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

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:65
&gt; +    if (!m_sqliteDB-&gt;open(dbFilename)) {

This calls SQLiteFileSystem::openDatabase which calls sqlite3_open which creates the file if it doesn&apos;t exist.  I think there should be a corresponding if (m_sqliteDB) { m_sqliteDB-&gt;close(); m_sqliteDB = nullptr; } in ~SQLiteIDBBackingStore that closes it without deleting it.

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:75
&gt; +    if (!m_sqliteDB)
&gt; +        return *m_databaseInfo;
&gt; +
&gt;      return *m_databaseInfo;

This is strange.  It doesn&apos;t matter if m_sqliteDB is null.  And right now m_sqliteDB is never null here.  Will this be a meaningful check once the fixme is fixed?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:180
&gt; +    if (m_sqliteDB)
&gt; +        m_sqliteDB-&gt;close();

Shouldn&apos;t m_sqliteDB be set to nullptr after this?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:183
&gt; +    deleteFile(dbFilename);
&gt; +    deleteEmptyDirectory(m_absoluteDatabaseDirectory);

Since this corresponds the SQLiteFileSystem::openDatabase, I think these should be SQLiteFileSystem::deleteDatabaseFile and SQLiteFileSystem::deleteEmptyDatabaseDirectory to match stylistically, even though those functions do nothing but call these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155370</commentid>
    <comment_count>8</comment_count>
      <attachid>268934</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-13 22:12:38 -0800</bug_when>
    <thetext>Comment on attachment 268934
Patch v2

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

&gt; Source/WebKit/mac/Storage/WebDatabaseProvider.mm:38
&gt; +        databasesDirectory = WebCore::pathByAppendingComponent(databasesDirectory, ASCIILiteral(&quot;___IndexedDB&quot;));

No bundle identifier if WebDatabaseDirectoryDefaultsKey is in the standardUserDefaults?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155401</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-14 01:32:28 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 268934 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268934&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/Storage/WebDatabaseProvider.mm:38
&gt; &gt; +        databasesDirectory = WebCore::pathByAppendingComponent(databasesDirectory, ASCIILiteral(&quot;___IndexedDB&quot;));
&gt; 
&gt; No bundle identifier if WebDatabaseDirectoryDefaultsKey is in the
&gt; standardUserDefaults?

Correct.

The bundle id is only used to segregate folks using the default.

If authors are savvy enough to specify the path, they&apos;re also savvy enough to specify their bundle id, leading to the problem we&apos;re trying to avoid.

If they&apos;re that savvy, we can&apos;t stop them from getting into this type of trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155402</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-14 01:33:36 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 268934 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268934&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:65
&gt; &gt; +    if (!m_sqliteDB-&gt;open(dbFilename)) {
&gt; 
&gt; This calls SQLiteFileSystem::openDatabase which calls sqlite3_open which
&gt; creates the file if it doesn&apos;t exist.  I think there should be a
&gt; corresponding if (m_sqliteDB) { m_sqliteDB-&gt;close(); m_sqliteDB = nullptr; }
&gt; in ~SQLiteIDBBackingStore that closes it without deleting it.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:75
&gt; &gt; +    if (!m_sqliteDB)
&gt; &gt; +        return *m_databaseInfo;
&gt; &gt; +
&gt; &gt;      return *m_databaseInfo;
&gt; 
&gt; This is strange.  It doesn&apos;t matter if m_sqliteDB is null.  And right now
&gt; m_sqliteDB is never null here.  Will this be a meaningful check once the
&gt; fixme is fixed?
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:180
&gt; &gt; +    if (m_sqliteDB)
&gt; &gt; +        m_sqliteDB-&gt;close();
&gt; 
&gt; Shouldn&apos;t m_sqliteDB be set to nullptr after this?
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:183
&gt; &gt; +    deleteFile(dbFilename);
&gt; &gt; +    deleteEmptyDirectory(m_absoluteDatabaseDirectory);
&gt; 
&gt; Since this corresponds the SQLiteFileSystem::openDatabase, I think these
&gt; should be SQLiteFileSystem::deleteDatabaseFile and
&gt; SQLiteFileSystem::deleteEmptyDatabaseDirectory to match stylistically, even
&gt; though those functions do nothing but call these functions.

Will make these changes in v3 of the patch when I get a chance to work on v3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155465</commentid>
    <comment_count>11</comment_count>
      <attachid>268975</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-14 09:06:57 -0800</bug_when>
    <thetext>Created attachment 268975
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155467</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-14 09:09:07 -0800</bug_when>
    <thetext>Attachment 268975 did not pass style-queue:


ERROR: Source/WebKit/mac/Storage/WebDatabaseProvider.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155483</commentid>
    <comment_count>13</comment_count>
      <attachid>268975</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-14 10:10:32 -0800</bug_when>
    <thetext>Comment on attachment 268975
Patch v3

r=me
Get two more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155538</commentid>
    <comment_count>14</comment_count>
      <attachid>268975</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-01-14 13:01:44 -0800</bug_when>
    <thetext>Comment on attachment 268975
Patch v3

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

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:128
&gt; +/*
&gt; +    if (m_databaseDirectoryPath.isEmpty())
&gt; +        return MemoryIDBBackingStore::create(identifier);
&gt; +
&gt; +    return std::make_unique&lt;SQLiteIDBBackingStore&gt;(identifier, m_databaseDirectoryPath);
&gt; +*/

Please don&apos;t check-in commented out code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155672</commentid>
    <comment_count>15</comment_count>
      <attachid>268975</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-14 20:49:29 -0800</bug_when>
    <thetext>Comment on attachment 268975
Patch v3

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155674</commentid>
    <comment_count>16</comment_count>
      <attachid>269030</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-14 20:53:20 -0800</bug_when>
    <thetext>Created attachment 269030
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155675</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-14 20:54:52 -0800</bug_when>
    <thetext>Attachment 269030 did not pass style-queue:


ERROR: Source/WebKit/mac/Storage/WebDatabaseProvider.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155683</commentid>
    <comment_count>18</comment_count>
      <attachid>269030</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-14 21:40:52 -0800</bug_when>
    <thetext>Comment on attachment 269030
Patch for landing

Clearing flags on attachment: 269030

Committed r195090: &lt;http://trac.webkit.org/changeset/195090&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268923</attachid>
            <date>2016-01-13 17:05:48 -0800</date>
            <delta_ts>2016-01-13 20:58:06 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22159</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiM2RkMDAwLi40ZjAwOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTYtMDEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IFN1cHBvcnQgb3BlbmluZyBhbmQgZGVsZXRpbmcgU1FMaXRlIGRhdGFi
YXNlcyBvbiBkaXNrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIChJbmZyYXN0cnVjdHVyZSwgbm8gdGVzdGFibGUgY2hhbmdlIGlu
IGJlaGF2aW9yKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRh
dGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNy
ZWF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNl
SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNl
cnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmg6CisKIDIwMTYtMDEtMTMgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzaW5nIHBvc3QtcmV2
aWV3IGNvbW1lbnRzIGFmdGVyIHIxOTQ1NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4IGRkOTRl
MWYuLmM5NGQ5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTU1LDYgKzU3LDE3IEBAIElEQkRhdGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZp
ZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKK1N0
cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jv
b3QoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5KSBjb25zdAoreworICAgIFN0cmluZyBtYWlu
RnJhbWVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwg
bV9tYWluRnJhbWVPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworCisgICAgLy8gSWYgdGhlIG9wZW5pbmcgb3JpZ2luIGFuZCBtYWluIGZyYW1lIG9yaWdpbnMg
YXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBwYXJ0aXRpb25pbmcuCisgICAgaWYgKG1fb3Blbmlu
Z09yaWdpbiA9PSBtX21haW5GcmFtZU9yaWdpbikKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZURp
cmVjdG9yeTsKKworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1l
RGlyZWN0b3J5LCBtX29wZW5pbmdPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOworfQorCiAjaWZuZGVmIE5ERUJVRwogU3RyaW5nIElEQkRhdGFiYXNlSWRlbnRp
Zmllcjo6ZGVidWdTdHJpbmcoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBkNzY4N2Jl
Li44Y2ZmMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtOTIsNiArOTIsOCBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJh
c2VOYW1lOyB9CiAKKyAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChj
b25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpIGNvbnN0OworCiAjaWZuZGVmIE5ERUJVRwogICAg
IFN0cmluZyBkZWJ1Z1N0cmluZygpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGQ2YmZh
NTUuLmIzNzlmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSURC
UmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlJREJC
YWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJTUUxpdGVJREJCYWNraW5nU3RvcmUuaCIKICNpbmNs
dWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDMs
MTIgKzQ0LDI2IEBAIFJlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6Y3JlYXRlKCkKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJREJTZXJ2ZXIoKSk7CiB9CiAKK1JlZjxJREJTZXJ2ZXI+IElEQlNl
cnZlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IElEQlNlcnZlcihkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsK
K30KKwogSURCU2VydmVyOjpJREJTZXJ2ZXIoKQogewogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
bV9kYXRhYmFzZVRocmVhZENyZWF0aW9uTG9jayk7CiAgICAgbV90aHJlYWRJRCA9IGNyZWF0ZVRo
cmVhZChJREJTZXJ2ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnksIHRoaXMsICJJbmRleGVkRGF0YWJh
c2UgU2VydmVyIik7CiB9CiAKK0lEQlNlcnZlcjo6SURCU2VydmVyKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VEaXJlY3RvcnlQYXRoKQorICAgIDogbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXIgY3JlYXRl
ZCBhdCBwYXRoICVzIiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFiYXNlVGhyZWFkQ3JlYXRpb25Mb2NrKTsKKyAg
ICBtX3RocmVhZElEID0gY3JlYXRlVGhyZWFkKElEQlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRy
eSwgdGhpcywgIkluZGV4ZWREYXRhYmFzZSBTZXJ2ZXIiKTsKK30KKwogdm9pZCBJREJTZXJ2ZXI6
OnJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb24pCiB7
CiAgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25NYXAuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlm
aWVyKCkpKTsKQEAgLTEwMiwxMSArMTE3LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5n
U3RvcmU+IElEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICAvLyBGSVhNRTogRm9yIG5vdyB3
ZSBvbmx5IGhhdmUgdGhlIGluLW1lbW9yeSBiYWNraW5nIHN0b3JlLCB3aGljaCB3ZSdsbCBjb250
aW51ZSB0byB1c2UgZm9yIHByaXZhdGUgYnJvd3NpbmcuCi0gICAgLy8gT25jZSBpdCdzIHRpbWUg
Zm9yIHBlcnNpc3RlbnQgYmFja2luZyBzdG9yZXMgdGhpcyBpcyB3aGVyZSB3ZSdsbCBjYWxjdWxh
dGUgdGhlIGNvcnJlY3QgcGF0aCBvbiBkaXNrCi0gICAgLy8gYW5kIGNyZWF0ZSBpdC4KLQogICAg
IHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsKKworICAg
IC8vIEZJWE1FOiBPbmNlIHRoZSBTUUxpdGUgYmFja2luZyBzdG9yZSBpcyBmdW5jdGlvbmFsLCB0
aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBtYWtlIHRoZSBhcHByb3ByaWF0ZSBvYmplY3QuCisvKgor
ICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsKKworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllciwgbV9k
YXRhYmFzZURpcmVjdG9yeVBhdGgpOworKi8KIH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRh
YmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggOTlmNDg2
Yi4uNGMzMjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgSURCU2VydmVy
IHsKIGNsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlcj4gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVm
PElEQlNlcnZlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsK
IAogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYpOwog
ICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CkBA
IC05Miw2ICs5Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJREJTZXJ2ZXIoKTsKKyAg
ICBJREJTZXJ2ZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwogCiAgICAg
VW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJik7CiAKQEAgLTExMiw2ICsxMTQsOCBAQCBwcml2YXRlOgogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKj4gbV9kYXRh
YmFzZUNvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKj4gbV90cmFuc2FjdGlvbnM7CisKKyAgICBTdHJpbmcg
bV9kYXRhYmFzZURpcmVjdG9yeVBhdGg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMThhNDk3MC4uZGE2YWFmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTI4LDE1ICsyOCwyMiBAQAog
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIklEQktleURhdGEuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIK
KyNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAot
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0
YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorU1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxp
dGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlUm9vdERpcmVjdG9yeSkKICAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQogeworICAgIG1fYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSA9IGlkZW50
aWZpZXIuZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChkYXRhYmFzZVJvb3REaXJlY3Rv
cnkpOwogfQogCiBTUUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxpdGVJREJCYWNraW5nU3RvcmUo
KQpAQCAtNDUsOSArNTIsMjYgQEAgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFj
a2luZ1N0b3JlKCkKIAogY29uc3QgSURCRGF0YWJhc2VJbmZvJiBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKCkKIHsKKyAgICBMT0coSW5kZXhlZERCLCAi
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyAtIGRhdGFi
YXNlICVzIiwgbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworCiAg
ICAgaWYgKCFtX2RhdGFiYXNlSW5mbykKICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAw
KTsKIAorICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnkp
OworCisgICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9h
YnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKKworICAgIG1f
c3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIGlmICgh
bV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBtX3NxbGl0ZURCID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogU3VwcG9ydCBwb3B1bGF0aW5nIG5ldyBTUUxpdGUgZmlsZXMgYW5kIHB1bGxpbmcg
RGF0YWJhc2VJbmZvIGZyb20gZXhpc3RpbmcgU1FMaXRlIGZpbGVzLgorCisgICAgaWYgKCFtX3Nx
bGl0ZURCKQorICAgICAgICByZXR1cm4gKm1fZGF0YWJhc2VJbmZvOworCiAgICAgcmV0dXJuICpt
X2RhdGFiYXNlSW5mbzsKIH0KIApAQCAtMTQ4LDcgKzE3MiwxNSBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiwgY29ucwogCiB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3Jl
KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFN0cmluZyBkYkZpbGVuYW1lID0gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4
ZWREQi5zcWxpdGUzIik7CisKKyAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkZWxldGVCYWNraW5nU3RvcmUgZGVsZXRpbmcgZmlsZSAnJXMnIG9uIGRpc2siLCBkYkZp
bGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKG1fc3FsaXRlREIpCisgICAgICAgIG1f
c3FsaXRlREItPmNsb3NlKCk7CisKKyAgICBkZWxldGVGaWxlKGRiRmlsZW5hbWUpOworICAgIGRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG1fYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4
IGJmM2Y3YzcuLmI2MGJlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTMz
LDExICszMywxNCBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlSW5mby5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlOworCiBuYW1lc3BhY2UgSURCU2VydmVy
IHsKIAogY2xhc3MgU1FMaXRlSURCQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9y
ZSB7CiBwdWJsaWM6Ci0gICAgU1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYpOworICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFz
ZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlUm9vdERpcmVjdG9yeSk7CiAgICAg
CiAgICAgdmlydHVhbCB+U1FMaXRlSURCQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGUgZmluYWw7CiAK
QEAgLTY2LDggKzY5LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQmFja2lu
Z1N0b3JlKCkgb3ZlcnJpZGUgZmluYWw7CiAKIHByaXZhdGU6CisgICAgYm9vbCBlbnN1cmVWYWxp
ZFJlY29yZHNUYWJsZSgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IGV4
dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5mbygpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IGNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFiYXNlSW5mbygpOworCiAgICAg
SURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
UUxpdGVEYXRhYmFzZT4gbV9zcWxpdGVEQjsKKworICAgIFN0cmluZyBtX2Fic29sdXRlRGF0YWJh
c2VEaXJlY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAKaW5kZXggZmI1N2UzZi4uNjFjMDdhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKQEAgLTQ3LDYgKzQ3LDEzIEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IElu
UHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKCkKICAgICByZXR1cm4gc2VydmVyOwogfQogCitSZWY8
SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkKK3sKKyAgICBSZWY8SW5Qcm9jZXNzSURCU2VydmVy
PiBzZXJ2ZXIgPSBhZG9wdFJlZigqbmV3IEluUHJvY2Vzc0lEQlNlcnZlcihkYXRhYmFzZURpcmVj
dG9yeVBhdGgpKTsKKyAgICBzZXJ2ZXItPm1fc2VydmVyLT5yZWdpc3RlckNvbm5lY3Rpb24oc2Vy
dmVyLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7CisgICAgcmV0dXJuIHNlcnZlcjsKK30KKwogSW5Q
cm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoKQogICAgIDogbV9zZXJ2ZXIoSURC
U2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZSgpKQogewpAQCAtNTUsNiArNjIsMTQgQEAgSW5Qcm9j
ZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoKQogICAgIG1fY29ubmVjdGlvblRvQ2xp
ZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7CiB9
CiAKK0luUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQorICAgIDogbV9zZXJ2ZXIoSURCU2VydmVyOjpJREJTZXJ2
ZXI6OmNyZWF0ZShkYXRhYmFzZURpcmVjdG9yeVBhdGgpKQoreworICAgIHJlbGF4QWRvcHRpb25S
ZXF1aXJlbWVudCgpOworICAgIG1fY29ubmVjdGlvblRvU2VydmVyID0gSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jb25uZWN0aW9uVG9DbGll
bnQgPSBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0aGlzKTsKK30K
KwogdWludDY0X3QgSW5Qcm9jZXNzSURCU2VydmVyOjppZGVudGlmaWVyKCkgY29uc3QKIHsKICAg
ICAvLyBBbiBpbnN0YW5jZSBvZiBJblByb2Nlc3NJREJTZXJ2ZXIgYWx3YXlzIGhhcyBhIDE6MSBy
ZWxhdGlvbnNoaXAgd2l0aCBpdHMgaW5zdGFuY2Ugb2YgSURCU2VydmVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5oCmluZGV4IDEwM2I3Y2EuLmUwNjA4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgSURCU2VydmVyOwogY2xhc3MgSW5Qcm9jZXNzSURC
U2VydmVyIGZpbmFsIDogcHVibGljIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyRGVs
ZWdhdGUsIHB1YmxpYyBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLCBw
dWJsaWMgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+IHsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gY3JlYXRlKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvblRvU2VydmVyKCkgY29u
c3Q7CiAgICAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb25Ub0Ns
aWVudCgpIGNvbnN0OwpAQCAtMTAxLDYgKzEwMiw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBJblByb2Nlc3NJREJTZXJ2ZXIoKTsKKyAgICBJblByb2Nlc3NJREJTZXJ2ZXIoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwogCiAgICAgUmVmPElEQlNlcnZlcjo6SURCU2Vy
dmVyPiBtX3NlcnZlcjsKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2
ZXI+IG1fY29ubmVjdGlvblRvU2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzY2JhY2M2Li5mOTVkYWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAxLTEzICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBTdXBwb3J0IG9wZW5pbmcgYW5k
IGRlbGV0aW5nIFNRTGl0ZSBkYXRhYmFzZXMgb24gZGlzay4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzA4NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25Ub1NlcnZl
ckZvclNlc3Npb24pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oOgor
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTYtMDEt
MTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTk0OTAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
L1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1dlYkRhdGFi
YXNlUHJvdmlkZXIuY3BwCmluZGV4IDM5NjBlNjMuLmQ5MDIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKQEAgLTUzLDggKzUzLDEyIEBAIFJl
ZlB0cjxXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gV2ViRGF0YWJhc2VQcm92
aWRlcjo6Y3JlYXRlSURCRmFjdG9yCiBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25U
b1NlcnZlciYgV2ViRGF0YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vz
c2lvbihjb25zdCBXZWJDb3JlOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IG1faWRiU2VydmVyTWFwLmFkZChzZXNzaW9uSUQuc2Vzc2lvbklEKCksIG51bGxwdHIp
OwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkK
KyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXZWJDb3JlOjpJblByb2Nlc3NJ
REJTZXJ2ZXI6OmNyZWF0ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvU2VydmVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaAppbmRleCAwOWZlZWUyLi5iNzA5MmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKQEAgLTQ5LDYgKzQ5
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJEYXRhYmFzZVByb3ZpZGVy
KCk7CiAKKyAgICBzdGF0aWMgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsK
KwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJREJGYWN0b3J5QmFja2VuZCgp
IG92ZXJyaWRlOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpJblByb2Nl
c3NJREJTZXJ2ZXI+PiBtX2lkYlNlcnZlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI2OTc4Y2EuLmU1OGI3NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3LDYg
KzEyNyw3IEBACiAJCTUxMUYzRkQ2MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUYz
RkQ3MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQzMENFQ0M4OEYw
MDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCAqLzsgfTsKIAkJNTExRjNGRDgw
Q0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQ0MENFQ0M4OEYwMDg1
MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gKi87IH07CisJCTUxMkJEQjUzMUM0
NzE1OTEwMDY0OTRERiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQkRCNTIxQzQ3MTU5MTAwNjQ5NERGIC8q
IFdlYkRhdGFiYXNlUHJvdmlkZXIubW0gKi87IH07CiAJCTUxNDk0Q0Q2MEM3RUJERTAwMDQxNzhD
NSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDk0Q0Q0MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0
YWJhc2VDbGllbnQuaCAqLzsgfTsKIAkJNTE0OTRDRDcwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYklj
b25EYXRhYmFzZUNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNDk0Q0Q1MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VDbGll
bnQubW0gKi87IH07CiAJCTUxNThGNkVGMTA2RDg2MkEwMEFGNDU3QyAvKiBXZWJIaXN0b3J5RGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NThGNkVFMTA2RDg2MkEwMEFGNDU3QyAvKiBXZWJIaXN0b3J5RGVsZWdhdGUuaCAqLzsgfTsKQEAg
LTYwNiw2ICs2MDcsNyBAQAogCQk1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJh
c2VNYW5hZ2VyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJE
YXRhYmFzZU1hbmFnZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYzRkQ0MENFQ0M4OEYwMDg1MjU2NSAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMkJEQjUyMUM0NzE1OTEwMDY0OTRERiAvKiBXZWJEYXRhYmFzZVBy
b3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGF0
YWJhc2VQcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzRDQyMkUw
MzRDRjU1QTAwQ0EyQUNEIC8qIFdlYlJlc291cmNlTG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZERl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQk1MTQ0M0Y5QTA0MjkzOTJCMDBDQTJEM0EgLyogV2ViUG9saWN5RGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UG9saWN5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTUxNDQzRjlCMDQyOTM5MkIwMENBMkQzQSAvKiBXZWJQb2xpY3lE
ZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlBvbGljeURlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTEyMjMsNiArMTIyNSw3IEBACiAJ
CQkJNTExRjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUu
aCAqLywKIAkJCQkxQUE4M0Y4MTFBNUM0QUU0MDAwMjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRl
ci5jcHAgKi8sCiAJCQkJMUFBODNGODIxQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTJCREI1MjFDNDcxNTkxMDA2NDk0REYgLyogV2ViRGF0YWJhc2VQ
cm92aWRlci5tbSAqLywKIAkJCQlBNURFRkMwRDExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJh
c2VRdW90YU1hbmFnZXIuaCAqLywKIAkJCQlBNURFRkMwRTExRDUzNDNFMDA4ODUyNzMgLyogV2Vi
RGF0YWJhc2VRdW90YU1hbmFnZXIubW0gKi8sCiAJCQkJM0FCMDJBRjUxMkMxMzE5QjAwRkJCNjk0
IC8qIFdlYlN0b3JhZ2VNYW5hZ2VyLm1tICovLApAQCAtMjI5NSw2ICsyMjk4LDcgQEAKIAkJCQk5
Mzk4MTBDNzA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNJbWFnZUV4dHJhcy5tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM0QzRBOTEwRjAxNDA2QzAwOTM3MkMwIC8qIFdlYk5TT2JqZWN0RXh0cmFzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQzgwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5TUGFz
dGVib2FyZEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxMkJEQjUzMUM0NzE1OTEwMDY0
OTRERiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEx
MTkwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5TUHJpbnRPcGVyYXRpb25FeHRyYXMubSBpbiBTb3Vy
Y2VzICovLAogCQkJCUExMEMxRDNCMTgyMDJGQzUwMDM2ODgzQSAvKiBXZWJOU1N0cmluZ0V4dHJh
c0lPUy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMTIwODI0QkYwMTAwOERGMDM4IC8qIFdl
Yk5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDllMzc2
Mi4uYjRlN2FiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTAxLTEz
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURC
OiBTdXBwb3J0IG9wZW5pbmcgYW5kIGRlbGV0aW5nIFNRTGl0ZSBkYXRhYmFzZXMgb24gZGlzay4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzA4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFn
ZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1N0b3Jh
Z2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAuCisgICAgICAgIChXZWJEYXRhYmFzZVByb3ZpZGVy
OjppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKwogMjAxNi0wMS0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxOTQ5MDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJv
dmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I0ZTY5NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92
aWRlci5tbQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGF0YWJh
c2VQcm92aWRlci5oIgorI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIgorCisj
aW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKworU3RyaW5nIFdlYkRhdGFiYXNlUHJvdmlk
ZXI6OmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKQoreworICAgIE5TVXNlckRlZmF1bHRz
ICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CisgICAg
TlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6V2Vi
RGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CisgICAgaWYgKCFkYXRhYmFzZXNEaXJlY3Rv
cnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFi
YXNlcy9fX19JbmRleGVkREIiOworICAgIGVsc2UKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5
ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlc0RpcmVjdG9yeSwg
QVNDSUlMaXRlcmFsKCJfX19JbmRleGVkREIiKSk7CisgICAgCisgICAgcmV0dXJuIFtkYXRhYmFz
ZXNEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268934</attachid>
            <date>2016-01-13 20:58:06 -0800</date>
            <delta_ts>2016-01-14 09:06:57 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22016</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMGM5MTQzLi40YWIyZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTYtMDEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IFN1cHBvcnQgb3BlbmluZyBhbmQgZGVsZXRpbmcgU1FMaXRlIGRhdGFi
YXNlcyBvbiBkaXNrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIChJbmZyYXN0cnVjdHVyZSwgbm8gdGVzdGFibGUgY2hhbmdlIGlu
IGJlaGF2aW9yKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRh
dGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNy
ZWF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNl
SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNl
cnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmg6CisKIDIwMTYtMDEtMTMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgY3VzdG9t
IHByb3RvY29scyB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApp
bmRleCBkZDk0ZTFmLi5jOTRkOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTI4LDYgKzI4
LDggQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC01NSw2ICs1NywxNyBAQCBJREJEYXRhYmFzZUlkZW50aWZpZXIgSURCRGF0YWJh
c2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBpZGVudGlmaWVy
OwogfQogCitTdHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJl
bGF0aXZlVG9Sb290KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSkgY29uc3QKK3sKKyAgICBT
dHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RE
aXJlY3RvcnksIG1fbWFpbkZyYW1lT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKworICAgIC8vIElmIHRoZSBvcGVuaW5nIG9yaWdpbiBhbmQgbWFpbiBmcmFt
ZSBvcmlnaW5zIGFyZSB0aGUgc2FtZSwgdGhlcmUgaXMgbm8gcGFydGl0aW9uaW5nLgorICAgIGlm
IChtX29wZW5pbmdPcmlnaW4gPT0gbV9tYWluRnJhbWVPcmlnaW4pCisgICAgICAgIHJldHVybiBt
YWluRnJhbWVEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1haW5GcmFtZURpcmVjdG9yeSwgbV9vcGVuaW5nT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKK30KKwogI2lmbmRlZiBOREVCVUcKIFN0cmluZyBJREJEYXRh
YmFzZUlkZW50aWZpZXI6OmRlYnVnU3RyaW5nKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5k
ZXggZDc2ODdiZS4uOGNmZjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTkyLDYgKzkyLDggQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFiYXNlTmFtZTsgfQogCisgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRp
dmVUb1Jvb3QoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5KSBjb25zdDsKKwogI2lmbmRlZiBO
REVCVUcKICAgICBTdHJpbmcgZGVidWdTdHJpbmcoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApp
bmRleCBkNmJmYTU1Li5iMzc5ZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWVtb3J5SURCQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmgiCiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKQEAgLTQzLDEyICs0NCwyNiBAQCBSZWY8SURCU2VydmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZSgp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCU2VydmVyKCkpOwogfQogCitSZWY8SURCU2Vy
dmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJTZXJ2ZXIoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKSk7Cit9CisKIElEQlNlcnZlcjo6SURCU2VydmVyKCkKIHsKICAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKG1fZGF0YWJhc2VUaHJlYWRDcmVhdGlvbkxvY2spOwogICAgIG1fdGhyZWFkSUQg
PSBjcmVhdGVUaHJlYWQoSURCU2VydmVyOjpkYXRhYmFzZVRocmVhZEVudHJ5LCB0aGlzLCAiSW5k
ZXhlZERhdGFiYXNlIFNlcnZlciIpOwogfQogCitJREJTZXJ2ZXI6OklEQlNlcnZlcihjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkKKyAgICA6IG1fZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCU2Vy
dmVyIGNyZWF0ZWQgYXQgcGF0aCAlcyIsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0
YSgpKTsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZVRocmVhZENyZWF0aW9u
TG9jayk7CisgICAgbV90aHJlYWRJRCA9IGNyZWF0ZVRocmVhZChJREJTZXJ2ZXI6OmRhdGFiYXNl
VGhyZWFkRW50cnksIHRoaXMsICJJbmRleGVkRGF0YWJhc2UgU2VydmVyIik7Cit9CisKIHZvaWQg
SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25u
ZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9jb25uZWN0aW9uTWFwLmNvbnRhaW5zKGNvbm5lY3Rp
b24uaWRlbnRpZmllcigpKSk7CkBAIC0xMDIsMTEgKzExNywxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gRklYTUU6
IEZvciBub3cgd2Ugb25seSBoYXZlIHRoZSBpbi1tZW1vcnkgYmFja2luZyBzdG9yZSwgd2hpY2gg
d2UnbGwgY29udGludWUgdG8gdXNlIGZvciBwcml2YXRlIGJyb3dzaW5nLgotICAgIC8vIE9uY2Ug
aXQncyB0aW1lIGZvciBwZXJzaXN0ZW50IGJhY2tpbmcgc3RvcmVzIHRoaXMgaXMgd2hlcmUgd2Un
bGwgY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHBhdGggb24gZGlzawotICAgIC8vIGFuZCBjcmVhdGUg
aXQuCi0KICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmll
cik7CisKKyAgICAvLyBGSVhNRTogT25jZSB0aGUgU1FMaXRlIGJhY2tpbmcgc3RvcmUgaXMgZnVu
Y3Rpb25hbCwgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgbWFrZSB0aGUgYXBwcm9wcmlhdGUgb2Jq
ZWN0LgorLyoKKyAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7CisK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KGlkZW50
aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKKyovCiB9CiAKIHZvaWQgSURCU2VydmVy
OjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmlu
ZGV4IDk5ZjQ4NmIuLjRjMzI4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNl
IElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJ2
ZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPElEQlNlcnZlcj4gY3JlYXRlKCk7CisgICAg
c3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9D
bGllbnQmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYpOwpAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSURCU2Vy
dmVyKCk7CisgICAgSURCU2VydmVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KTsKIAogICAgIFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCkBAIC0xMTIsNiArMTE0LDggQEAgcHJp
dmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bio+IG1fZGF0YWJhc2VDb25uZWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRp
ZmllciwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbio+IG1fdHJhbnNhY3Rpb25zOworCisg
ICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDE4YTQ5NzAu
LmRhNmFhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yOCwxNSAr
MjgsMjIgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJJREJLZXlEYXRhLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlU3Rh
dGVtZW50LmgiCisjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNl
cnZlciB7CiAKLVNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpCiAgICAgOiBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rv
cnkgPSBpZGVudGlmaWVyLmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoZGF0YWJhc2VS
b290RGlyZWN0b3J5KTsKIH0KIAogU1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFj
a2luZ1N0b3JlKCkKQEAgLTQ1LDkgKzUyLDI2IEBAIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6flNR
TGl0ZUlEQkJhY2tpbmdTdG9yZSgpCiAKIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbygpCiB7CisgICAgTE9HKElu
ZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUlu
Zm8gLSBkYXRhYmFzZSAlcyIsIG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS51dGY4KCkuZGF0
YSgpKTsKKwogICAgIGlmICghbV9kYXRhYmFzZUluZm8pCiAgICAgICAgIG1fZGF0YWJhc2VJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFz
ZU5hbWUoKSwgMCk7CiAKKyAgICBtYWtlQWxsRGlyZWN0b3JpZXMobV9hYnNvbHV0ZURhdGFiYXNl
RGlyZWN0b3J5KTsKKworICAgIFN0cmluZyBkYkZpbGVuYW1lID0gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7
CisKKyAgICBtX3NxbGl0ZURCID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsK
KyAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGJGaWxlbmFtZSkpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxl
bmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7CisgICAg
fQorCisgICAgLy8gRklYTUU6IFN1cHBvcnQgcG9wdWxhdGluZyBuZXcgU1FMaXRlIGZpbGVzIGFu
ZCBwdWxsaW5nIERhdGFiYXNlSW5mbyBmcm9tIGV4aXN0aW5nIFNRTGl0ZSBmaWxlcy4KKworICAg
IGlmICghbV9zcWxpdGVEQikKKyAgICAgICAgcmV0dXJuICptX2RhdGFiYXNlSW5mbzsKKwogICAg
IHJldHVybiAqbV9kYXRhYmFzZUluZm87CiB9CiAKQEAgLTE0OCw3ICsxNzIsMTUgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYsIGNvbnMKIAogdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJh
Y2tpbmdTdG9yZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBTdHJpbmcgZGJGaWxl
bmFtZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rv
cnksICJJbmRleGVkREIuc3FsaXRlMyIpOworCisgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlIGRlbGV0aW5nIGZpbGUgJyVzJyBvbiBk
aXNrIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmIChtX3NxbGl0ZURCKQor
ICAgICAgICBtX3NxbGl0ZURCLT5jbG9zZSgpOworCisgICAgZGVsZXRlRmlsZShkYkZpbGVuYW1l
KTsKKyAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuaAppbmRleCBiZjNmN2M3Li4wOWJkZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oCkBAIC0zMywxMSArMzMsMTQgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUluZm8uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZTsKKwogbmFtZXNwYWNl
IElEQlNlcnZlciB7CiAKIGNsYXNzIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJC
YWNraW5nU3RvcmUgewogcHVibGljOgotICAgIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJ
REJEYXRhYmFzZUlkZW50aWZpZXImKTsKKyAgICBTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3Rv
cnkpOwogICAgIAogICAgIHZpcnR1YWwgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIG92ZXJyaWRl
IGZpbmFsOwogCkBAIC02OCw2ICs3MSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElEQkRh
dGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRh
dGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRl
RGF0YWJhc2U+IG1fc3FsaXRlREI7CisKKyAgICBTdHJpbmcgbV9hYnNvbHV0ZURhdGFiYXNlRGly
ZWN0b3J5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCmluZGV4IGZiNTdlM2YuLjYxYzA3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC00Nyw2ICs0NywxMyBAQCBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nl
c3NJREJTZXJ2ZXI6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIHNlcnZlcjsKIH0KIAorUmVmPEluUHJv
Y2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeVBhdGgpCit7CisgICAgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2Vy
dmVyID0gYWRvcHRSZWYoKm5ldyBJblByb2Nlc3NJREJTZXJ2ZXIoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKSk7CisgICAgc2VydmVyLT5tX3NlcnZlci0+cmVnaXN0ZXJDb25uZWN0aW9uKHNlcnZlci0+
Y29ubmVjdGlvblRvQ2xpZW50KCkpOworICAgIHJldHVybiBzZXJ2ZXI7Cit9CisKIEluUHJvY2Vz
c0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKCkKICAgICA6IG1fc2VydmVyKElEQlNlcnZl
cjo6SURCU2VydmVyOjpjcmVhdGUoKSkKIHsKQEAgLTU1LDYgKzYyLDE0IEBAIEluUHJvY2Vzc0lE
QlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKCkKICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudCA9
IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpOwogfQogCitJ
blByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcihjb25zdCBTdHJpbmcmIGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCkKKyAgICA6IG1fc2VydmVyKElEQlNlcnZlcjo6SURCU2VydmVyOjpj
cmVhdGUoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSkKK3sKKyAgICByZWxheEFkb3B0aW9uUmVxdWly
ZW1lbnQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlciA9IElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpjcmVhdGUoKnRoaXMpOworICAgIG1fY29ubmVjdGlvblRvQ2xpZW50ID0g
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7Cit9CisKIHVp
bnQ2NF90IEluUHJvY2Vzc0lEQlNlcnZlcjo6aWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgLy8g
QW4gaW5zdGFuY2Ugb2YgSW5Qcm9jZXNzSURCU2VydmVyIGFsd2F5cyBoYXMgYSAxOjEgcmVsYXRp
b25zaGlwIHdpdGggaXRzIGluc3RhbmNlIG9mIElEQlNlcnZlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuaAppbmRleCAxMDNiN2NhLi5lMDYwODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCkBA
IC00OSw2ICs0OSw3IEBAIGNsYXNzIElEQlNlcnZlcjsKIGNsYXNzIEluUHJvY2Vzc0lEQlNlcnZl
ciBmaW5hbCA6IHB1YmxpYyBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRl
LCBwdWJsaWMgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSwgcHVibGlj
IFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IGNyZWF0ZSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGNvbm5lY3Rpb25Ub1NlcnZlcigpIGNvbnN0Owog
ICAgIElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQo
KSBjb25zdDsKQEAgLTEwMSw2ICsxMDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSW5Q
cm9jZXNzSURCU2VydmVyKCk7CisgICAgSW5Qcm9jZXNzSURCU2VydmVyKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKIAogICAgIFJlZjxJREJTZXJ2ZXI6OklEQlNlcnZlcj4g
bV9zZXJ2ZXI7CiAgICAgUmVmUHRyPElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyPiBt
X2Nvbm5lY3Rpb25Ub1NlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2NiYWNjNi4uZjk1ZGFjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wMS0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogU3VwcG9ydCBvcGVuaW5nIGFuZCBkZWxl
dGluZyBTUUxpdGUgZGF0YWJhc2VzIG9uIGRpc2suCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMwODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHA6
CisgICAgICAgIChXZWJEYXRhYmFzZVByb3ZpZGVyOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JT
ZXNzaW9uKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaDoKKworICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTAxLTEzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE5NDkwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJE
YXRhYmFzZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJEYXRhYmFzZVBy
b3ZpZGVyLmNwcAppbmRleCAzOTYwZTYzLi5kOTAyMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCkBAIC01Myw4ICs1MywxMiBAQCBSZWZQdHI8
V2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IFdlYkRhdGFiYXNlUHJvdmlkZXI6
OmNyZWF0ZUlEQkZhY3RvcgogV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2
ZXImIFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24o
Y29uc3QgV2ViQ29yZTo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CiAgICAgYXV0byByZXN1bHQg
PSBtX2lkYlNlcnZlck1hcC5hZGQoc2Vzc2lvbklELnNlc3Npb25JRCgpLCBudWxscHRyKTsKLSAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZSgpOworICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkgeworICAgICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAg
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2Vy
dmVyOjpjcmVhdGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKGluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeVBhdGgoKSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUtPmNvbm5lY3Rpb25Ub1NlcnZlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKaW5kZXggMDlmZWVlMi4uYjcwOTJhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oCkBAIC00OSw2ICs0OSw4IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViRGF0YWJhc2VQcm92aWRlcigpOwog
CisgICAgc3RhdGljIFN0cmluZyBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJ
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoKSBvdmVy
cmlkZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6SW5Qcm9jZXNzSURC
U2VydmVyPj4gbV9pZGJTZXJ2ZXJNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjk3OGNhLi5lNThiNzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNyw2ICsxMjcs
NyBAQAogCQk1MTFGM0ZENjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGM0ZENzBD
RUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGM0ZEMzBDRUNDODhGMDA4NTI1
NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi87IH07CiAJCTUxMUYzRkQ4MENFQ0M4
OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tICovOyB9OworCQk1MTJCREI1MzFDNDcxNTkx
MDA2NDk0REYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkJEQjUyMUM0NzE1OTEwMDY0OTRERiAvKiBXZWJE
YXRhYmFzZVByb3ZpZGVyLm1tICovOyB9OwogCQk1MTQ5NENENjBDN0VCREUwMDA0MTc4QzUgLyog
V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTQ5NENENDBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNl
Q2xpZW50LmggKi87IH07CiAJCTUxNDk0Q0Q3MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0
YWJhc2VDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTQ5NENENTBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lm1t
ICovOyB9OwogCQk1MTU4RjZFRjEwNkQ4NjJBMDBBRjQ1N0MgLyogV2ViSGlzdG9yeURlbGVnYXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU4RjZF
RTEwNkQ4NjJBMDBBRjQ1N0MgLyogV2ViSGlzdG9yeURlbGVnYXRlLmggKi87IH07CkBAIC02MDYs
NiArNjA3LDcgQEAKIAkJNTExRjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFu
YWdlclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJh
c2VNYW5hZ2VyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGM0ZE
MzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTJCREI1MjFDNDcxNTkxMDA2NDk0REYgLyogV2ViRGF0YWJhc2VQcm92aWRl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFiYXNl
UHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0Q0MjJFMDM0Q0Y1
NUEwMENBMkFDRCAvKiBXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWREZWxlZ2F0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJNTE0NDNGOUEwNDI5MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGljeURlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvbGlj
eURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1MTQ0M0Y5QjA0MjkzOTJCMDBDQTJEM0EgLyogV2ViUG9saWN5RGVsZWdh
dGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJQb2xpY3lEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMjIzLDYgKzEyMjUsNyBAQAogCQkJCTUx
MUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi8s
CiAJCQkJMUFBODNGODExQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuY3Bw
ICovLAogCQkJCTFBQTgzRjgyMUE1QzRBRTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVy
LmggKi8sCisJCQkJNTEyQkRCNTIxQzQ3MTU5MTAwNjQ5NERGIC8qIFdlYkRhdGFiYXNlUHJvdmlk
ZXIubW0gKi8sCiAJCQkJQTVERUZDMEQxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVv
dGFNYW5hZ2VyLmggKi8sCiAJCQkJQTVERUZDMEUxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFi
YXNlUXVvdGFNYW5hZ2VyLm1tICovLAogCQkJCTNBQjAyQUY1MTJDMTMxOUIwMEZCQjY5NCAvKiBX
ZWJTdG9yYWdlTWFuYWdlci5tbSAqLywKQEAgLTIyOTUsNiArMjI5OCw3IEBACiAJCQkJOTM5ODEw
QzcwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5TSW1hZ2VFeHRyYXMubSBpbiBTb3VyY2VzICovLAog
CQkJCTkzNEM0QTkxMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTkzOTgxMEM4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTJCREI1MzFDNDcxNTkxMDA2NDk0REYg
LyogV2ViRGF0YWJhc2VQcm92aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMTE5MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLm0gaW4gU291cmNlcyAq
LywKIAkJCQlBMTBDMUQzQjE4MjAyRkM1MDAzNjg4M0EgLyogV2ViTlNTdHJpbmdFeHRyYXNJT1Mu
bSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMTEyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU1VS
TEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA5ZTM3NjIuLmI0
ZTdhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMS0xMyAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogU3Vw
cG9ydCBvcGVuaW5nIGFuZCBkZWxldGluZyBTUUxpdGUgZGF0YWJhc2VzIG9uIGRpc2suCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMwODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvV2Vi
RGF0YWJhc2VQcm92aWRlci5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TdG9yYWdlL1dl
YkRhdGFiYXNlUHJvdmlkZXIuY3BwLgorICAgICAgICAoV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCk6CisKIDIwMTYtMDEtMTMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTk0
OTAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVBy
b3ZpZGVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVy
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NmQ1NzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIu
bW0KQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRhdGFiYXNlUHJv
dmlkZXIuaCIKKyNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCIKKworI2ltcG9y
dCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisKK1N0cmluZyBXZWJEYXRhYmFzZVByb3ZpZGVyOjpp
bmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICBOU1VzZXJEZWZhdWx0cyAqZGVm
YXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOworICAgIE5TU3Ry
aW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYkRhdGFi
YXNlRGlyZWN0b3J5RGVmYXVsdHNLZXldOworICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8
ICFbZGF0YWJhc2VzRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisg
ICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChBU0NJSUxpdGVyYWwoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWRE
QiIpLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKKyAgICBlbHNl
CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksIEFTQ0lJTGl0ZXJhbCgiX19fSW5kZXhlZERCIikp
OworICAgIAorICAgIHJldHVybiBbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRp
emluZ1BhdGhdOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268975</attachid>
            <date>2016-01-14 09:06:57 -0800</date>
            <delta_ts>2016-01-14 20:50:49 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22315</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMGM5MTQzLi40YWIyZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTYtMDEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IFN1cHBvcnQgb3BlbmluZyBhbmQgZGVsZXRpbmcgU1FMaXRlIGRhdGFi
YXNlcyBvbiBkaXNrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIChJbmZyYXN0cnVjdHVyZSwgbm8gdGVzdGFibGUgY2hhbmdlIGlu
IGJlaGF2aW9yKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRh
dGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNy
ZWF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNl
SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJv
Y2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNl
cnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmg6CisKIDIwMTYtMDEtMTMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgY3VzdG9t
IHByb3RvY29scyB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApp
bmRleCBkZDk0ZTFmLi5jOTRkOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTI4LDYgKzI4
LDggQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC01NSw2ICs1NywxNyBAQCBJREJEYXRhYmFzZUlkZW50aWZpZXIgSURCRGF0YWJh
c2VJZGVudGlmaWVyOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBpZGVudGlmaWVy
OwogfQogCitTdHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJl
bGF0aXZlVG9Sb290KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSkgY29uc3QKK3sKKyAgICBT
dHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RE
aXJlY3RvcnksIG1fbWFpbkZyYW1lT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKworICAgIC8vIElmIHRoZSBvcGVuaW5nIG9yaWdpbiBhbmQgbWFpbiBmcmFt
ZSBvcmlnaW5zIGFyZSB0aGUgc2FtZSwgdGhlcmUgaXMgbm8gcGFydGl0aW9uaW5nLgorICAgIGlm
IChtX29wZW5pbmdPcmlnaW4gPT0gbV9tYWluRnJhbWVPcmlnaW4pCisgICAgICAgIHJldHVybiBt
YWluRnJhbWVEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1haW5GcmFtZURpcmVjdG9yeSwgbV9vcGVuaW5nT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKK30KKwogI2lmbmRlZiBOREVCVUcKIFN0cmluZyBJREJEYXRh
YmFzZUlkZW50aWZpZXI6OmRlYnVnU3RyaW5nKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5k
ZXggZDc2ODdiZS4uOGNmZjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTkyLDYgKzkyLDggQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFiYXNlTmFtZTsgfQogCisgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRp
dmVUb1Jvb3QoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5KSBjb25zdDsKKwogI2lmbmRlZiBO
REVCVUcKICAgICBTdHJpbmcgZGVidWdTdHJpbmcoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApp
bmRleCBkNmJmYTU1Li5iMzc5ZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWVtb3J5SURCQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmgiCiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKQEAgLTQzLDEyICs0NCwyNiBAQCBSZWY8SURCU2VydmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZSgp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCU2VydmVyKCkpOwogfQogCitSZWY8SURCU2Vy
dmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJTZXJ2ZXIoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKSk7Cit9CisKIElEQlNlcnZlcjo6SURCU2VydmVyKCkKIHsKICAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKG1fZGF0YWJhc2VUaHJlYWRDcmVhdGlvbkxvY2spOwogICAgIG1fdGhyZWFkSUQg
PSBjcmVhdGVUaHJlYWQoSURCU2VydmVyOjpkYXRhYmFzZVRocmVhZEVudHJ5LCB0aGlzLCAiSW5k
ZXhlZERhdGFiYXNlIFNlcnZlciIpOwogfQogCitJREJTZXJ2ZXI6OklEQlNlcnZlcihjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkKKyAgICA6IG1fZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCU2Vy
dmVyIGNyZWF0ZWQgYXQgcGF0aCAlcyIsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0
YSgpKTsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZVRocmVhZENyZWF0aW9u
TG9jayk7CisgICAgbV90aHJlYWRJRCA9IGNyZWF0ZVRocmVhZChJREJTZXJ2ZXI6OmRhdGFiYXNl
VGhyZWFkRW50cnksIHRoaXMsICJJbmRleGVkRGF0YWJhc2UgU2VydmVyIik7Cit9CisKIHZvaWQg
SURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25u
ZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9jb25uZWN0aW9uTWFwLmNvbnRhaW5zKGNvbm5lY3Rp
b24uaWRlbnRpZmllcigpKSk7CkBAIC0xMDIsMTEgKzExNywxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gRklYTUU6
IEZvciBub3cgd2Ugb25seSBoYXZlIHRoZSBpbi1tZW1vcnkgYmFja2luZyBzdG9yZSwgd2hpY2gg
d2UnbGwgY29udGludWUgdG8gdXNlIGZvciBwcml2YXRlIGJyb3dzaW5nLgotICAgIC8vIE9uY2Ug
aXQncyB0aW1lIGZvciBwZXJzaXN0ZW50IGJhY2tpbmcgc3RvcmVzIHRoaXMgaXMgd2hlcmUgd2Un
bGwgY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHBhdGggb24gZGlzawotICAgIC8vIGFuZCBjcmVhdGUg
aXQuCi0KICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmll
cik7CisKKyAgICAvLyBGSVhNRTogT25jZSB0aGUgU1FMaXRlIGJhY2tpbmcgc3RvcmUgaXMgZnVu
Y3Rpb25hbCwgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgbWFrZSB0aGUgYXBwcm9wcmlhdGUgb2Jq
ZWN0LgorLyoKKyAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7CisK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KGlkZW50
aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKKyovCiB9CiAKIHZvaWQgSURCU2VydmVy
OjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmlu
ZGV4IDk5ZjQ4NmIuLjRjMzI4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNl
IElEQlNlcnZlciB7CiBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJ2
ZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPElEQlNlcnZlcj4gY3JlYXRlKCk7CisgICAg
c3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9D
bGllbnQmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYpOwpAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSURCU2Vy
dmVyKCk7CisgICAgSURCU2VydmVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KTsKIAogICAgIFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCkBAIC0xMTIsNiArMTE0LDggQEAgcHJp
dmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bio+IG1fZGF0YWJhc2VDb25uZWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRp
ZmllciwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbio+IG1fdHJhbnNhY3Rpb25zOworCisg
ICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDE4YTQ5NzAu
LjgyODg3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yOCwyNSAr
MjgsNTMgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJJREJLZXlEYXRhLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQorU1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxpdGVJREJCYWNraW5nU3RvcmUoY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlUm9vdERpcmVjdG9yeSkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAg
IG1fYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSA9IGlkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3Rv
cnlSZWxhdGl2ZVRvUm9vdChkYXRhYmFzZVJvb3REaXJlY3RvcnkpOwogfQogCiBTUUxpdGVJREJC
YWNraW5nU3RvcmU6On5TUUxpdGVJREJCYWNraW5nU3RvcmUoKQogeworICAgIGlmIChtX3NxbGl0
ZURCKQorICAgICAgICBtX3NxbGl0ZURCLT5jbG9zZSgpOwogfQogCiBjb25zdCBJREJEYXRhYmFz
ZUluZm8mIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8o
KQogewotICAgIGlmICghbV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5h
bWUoKSwgMCk7CisgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8gLSBkYXRhYmFzZSAlcyIsIG1faWRlbnRpZmllci5kYXRh
YmFzZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGlmIChtX2RhdGFiYXNlSW5mbykKKyAg
ICAgICAgcmV0dXJuICptX2RhdGFiYXNlSW5mbzsKKworICAgIG1fZGF0YWJhc2VJbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KSwgMCk7CisKKyAgICBtYWtlQWxsRGlyZWN0b3JpZXMobV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0
b3J5KTsKKworICAgIFN0cmluZyBkYkZpbGVuYW1lID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisKKyAg
ICBtX3NxbGl0ZURCID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICBp
ZiAoIW1fc3FsaXRlREItPm9wZW4oZGJGaWxlbmFtZSkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7CisgICAgfQorCisg
ICAgaWYgKCFtX3NxbGl0ZURCKQorICAgICAgICByZXR1cm4gKm1fZGF0YWJhc2VJbmZvOworCisg
ICAgLy8gRklYTUU6IFN1cHBvcnQgcG9wdWxhdGluZyBuZXcgU1FMaXRlIGZpbGVzIGFuZCBwdWxs
aW5nIERhdGFiYXNlSW5mbyBmcm9tIGV4aXN0aW5nIFNRTGl0ZSBmaWxlcy4KKyAgICAvLyBEb2lu
ZyBzbyB3aWxsIG1ha2UgYSBuZXcgbV9kYXRhYmFzZUluZm8gd2hpY2ggb3ZlcnJpZGVzIHRoZSBk
ZWZhdWx0IG9uZSB3ZSBjcmVhdGVkIHVwIGFib3ZlLgogCiAgICAgcmV0dXJuICptX2RhdGFiYXNl
SW5mbzsKIH0KQEAgLTE0OCw3ICsxNzYsMTcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnMKIAog
dm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3RvcnksICJJbmRleGVkREIuc3FsaXRl
MyIpOworCisgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
QmFja2luZ1N0b3JlIGRlbGV0aW5nIGZpbGUgJyVzJyBvbiBkaXNrIiwgZGJGaWxlbmFtZS51dGY4
KCkuZGF0YSgpKTsKKworICAgIGlmIChtX3NxbGl0ZURCKSB7CisgICAgICAgIG1fc3FsaXRlREIt
PmNsb3NlKCk7CisgICAgICAgIG1fc3FsaXRlREIgPSBudWxscHRyOworICAgIH0KKworICAgIFNR
TGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShkYkZpbGVuYW1lKTsKKyAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KG1fYWJzb2x1dGVEYXRh
YmFzZURpcmVjdG9yeSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGJmM2Y3YzcuLjA5YmRkZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmgKQEAgLTMzLDExICszMywxNCBAQAogI2luY2x1ZGUgIklEQkRhdGFi
YXNlSW5mby5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNl
OworCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogY2xhc3MgU1FMaXRlSURCQmFja2luZ1N0b3Jl
IDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6Ci0gICAgU1FMaXRlSURCQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlUm9vdERpcmVjdG9yeSk7CiAgICAgCiAgICAgdmlydHVhbCB+U1FMaXRlSURCQmFja2luZ1N0
b3JlKCkgb3ZlcnJpZGUgZmluYWw7CiAKQEAgLTY4LDYgKzcxLDEwIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVEYXRhYmFzZT4gbV9zcWxpdGVEQjsKKworICAgIFN0cmluZyBtX2Fic29s
dXRlRGF0YWJhc2VEaXJlY3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggZmI1N2UzZi4uNjFjMDdhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
UHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTQ3LDYgKzQ3LDEzIEBAIFJlZjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKCkKICAgICByZXR1cm4gc2VydmVyOwog
fQogCitSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkKK3sKKyAgICBSZWY8SW5Qcm9jZXNz
SURCU2VydmVyPiBzZXJ2ZXIgPSBhZG9wdFJlZigqbmV3IEluUHJvY2Vzc0lEQlNlcnZlcihkYXRh
YmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBzZXJ2ZXItPm1fc2VydmVyLT5yZWdpc3RlckNvbm5l
Y3Rpb24oc2VydmVyLT5jb25uZWN0aW9uVG9DbGllbnQoKSk7CisgICAgcmV0dXJuIHNlcnZlcjsK
K30KKwogSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoKQogICAgIDogbV9z
ZXJ2ZXIoSURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZSgpKQogewpAQCAtNTUsNiArNjIsMTQg
QEAgSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoKQogICAgIG1fY29ubmVj
dGlvblRvQ2xpZW50ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgq
dGhpcyk7CiB9CiAKK0luUHJvY2Vzc0lEQlNlcnZlcjo6SW5Qcm9jZXNzSURCU2VydmVyKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQorICAgIDogbV9zZXJ2ZXIoSURCU2VydmVy
OjpJREJTZXJ2ZXI6OmNyZWF0ZShkYXRhYmFzZURpcmVjdG9yeVBhdGgpKQoreworICAgIHJlbGF4
QWRvcHRpb25SZXF1aXJlbWVudCgpOworICAgIG1fY29ubmVjdGlvblRvU2VydmVyID0gSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgbV9jb25uZWN0
aW9uVG9DbGllbnQgPSBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0
aGlzKTsKK30KKwogdWludDY0X3QgSW5Qcm9jZXNzSURCU2VydmVyOjppZGVudGlmaWVyKCkgY29u
c3QKIHsKICAgICAvLyBBbiBpbnN0YW5jZSBvZiBJblByb2Nlc3NJREJTZXJ2ZXIgYWx3YXlzIGhh
cyBhIDE6MSByZWxhdGlvbnNoaXAgd2l0aCBpdHMgaW5zdGFuY2Ugb2YgSURCU2VydmVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vz
c0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
UHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IDEwM2I3Y2EuLmUwNjA4NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNz
SURCU2VydmVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgSURCU2VydmVyOwogY2xhc3MgSW5Q
cm9jZXNzSURCU2VydmVyIGZpbmFsIDogcHVibGljIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRv
U2VydmVyRGVsZWdhdGUsIHB1YmxpYyBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudERl
bGVnYXRlLCBwdWJsaWMgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+IHsKIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gY3JlYXRl
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvblRvU2Vy
dmVyKCkgY29uc3Q7CiAgICAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5l
Y3Rpb25Ub0NsaWVudCgpIGNvbnN0OwpAQCAtMTAxLDYgKzEwMiw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBJblByb2Nlc3NJREJTZXJ2ZXIoKTsKKyAgICBJblByb2Nlc3NJREJTZXJ2ZXIo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwogCiAgICAgUmVmPElEQlNlcnZl
cjo6SURCU2VydmVyPiBtX3NlcnZlcjsKICAgICBSZWZQdHI8SURCQ2xpZW50OjpJREJDb25uZWN0
aW9uVG9TZXJ2ZXI+IG1fY29ubmVjdGlvblRvU2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzY2JhY2M2Li5m
OTVkYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAxLTEzICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBTdXBwb3J0IG9w
ZW5pbmcgYW5kIGRlbGV0aW5nIFNRTGl0ZSBkYXRhYmFzZXMgb24gZGlzay4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzA4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFz
ZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rp
b25Ub1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92
aWRlci5oOgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMTYtMDEtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTk0OTAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
L1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCmluZGV4IDM5NjBlNjMuLmQ5MDIwZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKQEAgLTUzLDggKzUz
LDEyIEBAIFJlZlB0cjxXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gV2ViRGF0
YWJhc2VQcm92aWRlcjo6Y3JlYXRlSURCRmFjdG9yCiBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Ub1NlcnZlciYgV2ViRGF0YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvU2Vy
dmVyRm9yU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IG1faWRiU2VydmVyTWFwLmFkZChzZXNzaW9uSUQuc2Vzc2lvbklEKCks
IG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKCk7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIGlmIChzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVh
dGUoaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpKTsKKyAgICB9CiAKICAgICByZXR1cm4g
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvU2VydmVyKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaAppbmRleCAwOWZlZWUyLi5iNzA5
MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKQEAg
LTQ5LDYgKzQ5LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJEYXRhYmFz
ZVByb3ZpZGVyKCk7CiAKKyAgICBzdGF0aWMgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVjdG9y
eVBhdGgoKTsKKwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJREJGYWN0b3J5
QmFja2VuZCgpIG92ZXJyaWRlOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3Jl
OjpJblByb2Nlc3NJREJTZXJ2ZXI+PiBtX2lkYlNlcnZlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI2OTc4Y2EuLmU1OGI3NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTI3LDYgKzEyNyw3IEBACiAJCTUxMUYzRkQ2MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRh
YmFzZU1hbmFnZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxMUYzRkQ3MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQz
MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCAqLzsgfTsKIAkJ
NTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQ0MENF
Q0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gKi87IH07CisJCTUx
MkJEQjUzMUM0NzE1OTEwMDY0OTRERiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQkRCNTIxQzQ3MTU5MTAw
NjQ5NERGIC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIubW0gKi87IH07CiAJCTUxNDk0Q0Q2MEM3RUJE
RTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDk0Q0Q0MEM3RUJERTAwMDQxNzhDNSAvKiBX
ZWJJY29uRGF0YWJhc2VDbGllbnQuaCAqLzsgfTsKIAkJNTE0OTRDRDcwQzdFQkRFMDAwNDE3OEM1
IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDk0Q0Q1MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0
YWJhc2VDbGllbnQubW0gKi87IH07CiAJCTUxNThGNkVGMTA2RDg2MkEwMEFGNDU3QyAvKiBXZWJI
aXN0b3J5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNThGNkVFMTA2RDg2MkEwMEFGNDU3QyAvKiBXZWJIaXN0b3J5RGVsZWdhdGUuaCAq
LzsgfTsKQEAgLTYwNiw2ICs2MDcsNyBAQAogCQk1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyog
V2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYzRkQ0MENFQ0M4OEYw
MDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkJEQjUyMUM0NzE1OTEwMDY0OTRERiAvKiBXZWJE
YXRhYmFzZVByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViRGF0YWJhc2VQcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTEzRDQyMkUwMzRDRjU1QTAwQ0EyQUNEIC8qIFdlYlJlc291cmNlTG9hZERlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291
cmNlTG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk1MTQ0M0Y5QTA0MjkzOTJCMDBDQTJEM0EgLyogV2ViUG9saWN5
RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUG9saWN5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxNDQzRjlCMDQyOTM5MkIwMENBMkQzQSAvKiBX
ZWJQb2xpY3lEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBvbGljeURlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTEyMjMsNiArMTIy
NSw3IEBACiAJCQkJNTExRjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdl
clByaXZhdGUuaCAqLywKIAkJCQkxQUE4M0Y4MTFBNUM0QUU0MDAwMjZFQzYgLyogV2ViRGF0YWJh
c2VQcm92aWRlci5jcHAgKi8sCiAJCQkJMUFBODNGODIxQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRh
dGFiYXNlUHJvdmlkZXIuaCAqLywKKwkJCQk1MTJCREI1MjFDNDcxNTkxMDA2NDk0REYgLyogV2Vi
RGF0YWJhc2VQcm92aWRlci5tbSAqLywKIAkJCQlBNURFRkMwRDExRDUzNDNFMDA4ODUyNzMgLyog
V2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCAqLywKIAkJCQlBNURFRkMwRTExRDUzNDNFMDA4ODUy
NzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gKi8sCiAJCQkJM0FCMDJBRjUxMkMxMzE5
QjAwRkJCNjk0IC8qIFdlYlN0b3JhZ2VNYW5hZ2VyLm1tICovLApAQCAtMjI5NSw2ICsyMjk4LDcg
QEAKIAkJCQk5Mzk4MTBDNzA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNJbWFnZUV4dHJhcy5tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTM0QzRBOTEwRjAxNDA2QzAwOTM3MkMwIC8qIFdlYk5TT2JqZWN0
RXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQzgwODI0QkYwMTAwOERGMDM4IC8q
IFdlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxMkJEQjUzMUM0
NzE1OTEwMDY0OTRERiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5ODExMTkwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5TUHJpbnRPcGVyYXRpb25FeHRyYXMu
bSBpbiBTb3VyY2VzICovLAogCQkJCUExMEMxRDNCMTgyMDJGQzUwMDM2ODgzQSAvKiBXZWJOU1N0
cmluZ0V4dHJhc0lPUy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMTIwODI0QkYwMTAwOERG
MDM4IC8qIFdlYk5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggMDllMzc2Mi4uYjRlN2FiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE2LTAxLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBN
b2Rlcm4gSURCOiBTdXBwb3J0IG9wZW5pbmcgYW5kIGRlbGV0aW5nIFNRTGl0ZSBkYXRhYmFzZXMg
b24gZGlzay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAuCisgICAgICAgIChXZWJEYXRhYmFz
ZVByb3ZpZGVyOjppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKwogMjAxNi0wMS0xMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxOTQ5MDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdl
L1dlYkRhdGFiYXNlUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlUHJvdmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc2
ZDU3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VQcm92aWRlci5tbQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
V2ViRGF0YWJhc2VQcm92aWRlci5oIgorI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0
ZS5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKworU3RyaW5nIFdlYkRhdGFi
YXNlUHJvdmlkZXI6OmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKQoreworICAgIE5TVXNl
ckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c107CisgICAgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtkZWZhdWx0cyBvYmplY3RG
b3JLZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CisgICAgaWYgKCFkYXRhYmFz
ZXNEaXJlY3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSkKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEFTQ0lJTGl0ZXJhbCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFz
ZXMvX19fSW5kZXhlZERCIiksIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmll
cl0pOworICAgIGVsc2UKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlc0RpcmVjdG9yeSwgQVNDSUlMaXRlcmFsKCJf
X19JbmRleGVkREIiKSk7CisgICAgCisgICAgcmV0dXJuIFtkYXRhYmFzZXNEaXJlY3Rvcnkgc3Ry
aW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07Cit9Cg==
</data>
<flag name="review"
          id="293928"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="293929"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269030</attachid>
            <date>2016-01-14 20:53:20 -0800</date>
            <delta_ts>2016-01-14 21:40:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22162</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMGM5MTQzLi4yMDg2MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTYtMDEtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IFN1cHBvcnQgb3BlbmluZyBhbmQgZGVsZXRpbmcgU1FMaXRlIGRhdGFi
YXNlcyBvbiBkaXNrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbiwgU2Ft
IFdlaW5pZyBhbmQgQW5keSBFc3RlcyAob2ggbXkhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KEluZnJhc3RydWN0dXJlLCBubyB0ZXN0YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IpLgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxh
dGl2ZVRvUm9vdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OklEQlNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTUUxp
dGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJT
ZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuaDoKKwogMjAxNi0wMS0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBjdXN0b20gcHJvdG9jb2xzIHdoZW4gdXNp
bmcgTmV0d29ya1Nlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4IGRkOTRlMWYuLmM5NGQ5
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTU1LDYgKzU3
LDE3IEBAIElEQkRhdGFiYXNlSWRlbnRpZmllciBJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xh
dGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKK1N0cmluZyBJREJE
YXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5KSBjb25zdAoreworICAgIFN0cmluZyBtYWluRnJhbWVEaXJl
Y3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgbV9tYWluRnJh
bWVPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOworCisgICAg
Ly8gSWYgdGhlIG9wZW5pbmcgb3JpZ2luIGFuZCBtYWluIGZyYW1lIG9yaWdpbnMgYXJlIHRoZSBz
YW1lLCB0aGVyZSBpcyBubyBwYXJ0aXRpb25pbmcuCisgICAgaWYgKG1fb3BlbmluZ09yaWdpbiA9
PSBtX21haW5GcmFtZU9yaWdpbikKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsK
KworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5
LCBtX29wZW5pbmdPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworfQorCiAjaWZuZGVmIE5ERUJVRwogU3RyaW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGVi
dWdTdHJpbmcoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBkNzY4N2JlLi44Y2ZmMjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuaApAQCAtOTIsNiArOTIsOCBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VOYW1lOyB9
CiAKKyAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJp
bmcmIHJvb3REaXJlY3RvcnkpIGNvbnN0OworCiAjaWZuZGVmIE5ERUJVRwogICAgIFN0cmluZyBk
ZWJ1Z1N0cmluZygpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGQ2YmZhNTUuLjg0OGE5
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSURCUmVzdWx0RGF0
YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCIKKyNpbmNsdWRlICJTUUxpdGVJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDx3dGYv
TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDMsMTIgKzQ0LDI2
IEBAIFJlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJREJTZXJ2ZXIoKSk7CiB9CiAKK1JlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElEQlNlcnZlcihkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKK30KKwogSURC
U2VydmVyOjpJREJTZXJ2ZXIoKQogewogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFz
ZVRocmVhZENyZWF0aW9uTG9jayk7CiAgICAgbV90aHJlYWRJRCA9IGNyZWF0ZVRocmVhZChJREJT
ZXJ2ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnksIHRoaXMsICJJbmRleGVkRGF0YWJhc2UgU2VydmVy
Iik7CiB9CiAKK0lEQlNlcnZlcjo6SURCU2VydmVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKQorICAgIDogbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXIgY3JlYXRlZCBhdCBwYXRo
ICVzIiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOworCisgICAgTG9ja2Vy
PExvY2s+IGxvY2tlcihtX2RhdGFiYXNlVGhyZWFkQ3JlYXRpb25Mb2NrKTsKKyAgICBtX3RocmVh
ZElEID0gY3JlYXRlVGhyZWFkKElEQlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSwgdGhpcywg
IkluZGV4ZWREYXRhYmFzZSBTZXJ2ZXIiKTsKK30KKwogdm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVy
Q29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNT
RVJUKCFtX2Nvbm5lY3Rpb25NYXAuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsK
QEAgLTEwMiw5ICsxMTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBJREJT
ZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gRklYTUU6IEZvciBub3cgd2Ugb25seSBoYXZl
IHRoZSBpbi1tZW1vcnkgYmFja2luZyBzdG9yZSwgd2hpY2ggd2UnbGwgY29udGludWUgdG8gdXNl
IGZvciBwcml2YXRlIGJyb3dzaW5nLgotICAgIC8vIE9uY2UgaXQncyB0aW1lIGZvciBwZXJzaXN0
ZW50IGJhY2tpbmcgc3RvcmVzIHRoaXMgaXMgd2hlcmUgd2UnbGwgY2FsY3VsYXRlIHRoZSBjb3Jy
ZWN0IHBhdGggb24gZGlzawotICAgIC8vIGFuZCBjcmVhdGUgaXQuCisgICAgLy8gRklYTUU6IE9u
Y2UgdGhlIFNRTGl0ZSBiYWNraW5nIHN0b3JlIGlzIGZ1bmN0aW9uYWwsIGNvbmRpdGlvbmFsbHkg
bWFrZSBlaXRoZXIgYSBNZW1vcnkgb3IgU1FMaXRlIGJhY2tpbmcgc3RvcmUuCiAKICAgICByZXR1
cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5k
ZXggOTlmNDg2Yi4uNGMzMjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2Ug
SURCU2VydmVyIHsKIGNsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZl
cj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVhdGUoKTsKKyAgICBz
dGF0aWMgUmVmPElEQlNlcnZlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0Ns
aWVudCYpOwogICAgIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xp
ZW50Jik7CkBAIC05Miw2ICs5Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJREJTZXJ2
ZXIoKTsKKyAgICBJREJTZXJ2ZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgp
OwogCiAgICAgVW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Uo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAKQEAgLTExMiw2ICsxMTQsOCBAQCBwcml2
YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
Kj4gbV9kYXRhYmFzZUNvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlm
aWVyLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKj4gbV90cmFuc2FjdGlvbnM7CisKKyAg
ICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMThhNDk3MC4u
ODI4ODc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTI4LDI1ICsy
OCw1MyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIklEQktleURhdGEuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJTUUxpdGVGaWxl
U3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1TUUxpdGVJREJCYWNraW5nU3RvcmU6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50
aWZpZXIpCitTUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25z
dCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VSb290RGlyZWN0b3J5KQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAg
bV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5ID0gaWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9y
eVJlbGF0aXZlVG9Sb290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSk7CiB9CiAKIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpCiB7CisgICAgaWYgKG1fc3FsaXRl
REIpCisgICAgICAgIG1fc3FsaXRlREItPmNsb3NlKCk7CiB9CiAKIGNvbnN0IElEQkRhdGFiYXNl
SW5mbyYgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbygp
CiB7Ci0gICAgaWYgKCFtX2RhdGFiYXNlSW5mbykKLSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFt
ZSgpLCAwKTsKKyAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRP
ckVzdGFibGlzaERhdGFiYXNlSW5mbyAtIGRhdGFiYXNlICVzIiwgbV9pZGVudGlmaWVyLmRhdGFi
YXNlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKG1fZGF0YWJhc2VJbmZvKQorICAg
ICAgICByZXR1cm4gKm1fZGF0YWJhc2VJbmZvOworCisgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgp
LCAwKTsKKworICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rv
cnkpOworCisgICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKKworICAg
IG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIGlm
ICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgeworICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBtX3NxbGl0ZURCID0gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBpZiAoIW1fc3FsaXRlREIpCisgICAgICAgIHJldHVybiAqbV9kYXRhYmFzZUluZm87CisKKyAg
ICAvLyBGSVhNRTogU3VwcG9ydCBwb3B1bGF0aW5nIG5ldyBTUUxpdGUgZmlsZXMgYW5kIHB1bGxp
bmcgRGF0YWJhc2VJbmZvIGZyb20gZXhpc3RpbmcgU1FMaXRlIGZpbGVzLgorICAgIC8vIERvaW5n
IHNvIHdpbGwgbWFrZSBhIG5ldyBtX2RhdGFiYXNlSW5mbyB3aGljaCBvdmVycmlkZXMgdGhlIGRl
ZmF1bHQgb25lIHdlIGNyZWF0ZWQgdXAgYWJvdmUuCiAKICAgICByZXR1cm4gKm1fZGF0YWJhc2VJ
bmZvOwogfQpAQCAtMTQ4LDcgKzE3NiwxNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29ucwogCiB2
b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIFN0cmluZyBkYkZpbGVuYW1lID0gcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1fYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSwgIkluZGV4ZWREQi5zcWxpdGUz
Iik7CisKKyAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVC
YWNraW5nU3RvcmUgZGVsZXRpbmcgZmlsZSAnJXMnIG9uIGRpc2siLCBkYkZpbGVuYW1lLnV0Zjgo
KS5kYXRhKCkpOworCisgICAgaWYgKG1fc3FsaXRlREIpIHsKKyAgICAgICAgbV9zcWxpdGVEQi0+
Y2xvc2UoKTsKKyAgICAgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7CisgICAgfQorCisgICAgU1FM
aXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGRiRmlsZW5hbWUpOworICAgIFNRTGl0
ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9hYnNvbHV0ZURhdGFi
YXNlRGlyZWN0b3J5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmgKaW5kZXggYmYzZjdjNy4uMDliZGRmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuaApAQCAtMzMsMTEgKzMzLDE0IEBACiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VJbmZvLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2U7
CisKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCiBjbGFzcyBTUUxpdGVJREJCYWNraW5nU3RvcmUg
OiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoKLSAgICBTUUxpdGVJREJCYWNraW5n
U3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgU1FMaXRlSURCQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VSb290RGlyZWN0b3J5KTsKICAgICAKICAgICB2aXJ0dWFsIH5TUUxpdGVJREJCYWNraW5nU3Rv
cmUoKSBvdmVycmlkZSBmaW5hbDsKIApAQCAtNjgsNiArNzEsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fZGF0YWJhc2VJbmZvOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPFNRTGl0ZURhdGFiYXNlPiBtX3NxbGl0ZURCOworCisgICAgU3RyaW5nIG1fYWJzb2x1
dGVEYXRhYmFzZURpcmVjdG9yeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vz
c0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCBmYjU3ZTNmLi42MWMwN2E4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Q
cm9jZXNzSURCU2VydmVyLmNwcApAQCAtNDcsNiArNDcsMTMgQEAgUmVmPEluUHJvY2Vzc0lEQlNl
cnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoKQogICAgIHJldHVybiBzZXJ2ZXI7CiB9
CiAKK1JlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQoreworICAgIFJlZjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHNlcnZlciA9IGFkb3B0UmVmKCpuZXcgSW5Qcm9jZXNzSURCU2VydmVyKGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCkpOworICAgIHNlcnZlci0+bV9zZXJ2ZXItPnJlZ2lzdGVyQ29ubmVj
dGlvbihzZXJ2ZXItPmNvbm5lY3Rpb25Ub0NsaWVudCgpKTsKKyAgICByZXR1cm4gc2VydmVyOwor
fQorCiBJblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcigpCiAgICAgOiBtX3Nl
cnZlcihJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKCkpCiB7CkBAIC01NSw2ICs2MiwxNCBA
QCBJblByb2Nlc3NJREJTZXJ2ZXI6OkluUHJvY2Vzc0lEQlNlcnZlcigpCiAgICAgbV9jb25uZWN0
aW9uVG9DbGllbnQgPSBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKCp0
aGlzKTsKIH0KIAorSW5Qcm9jZXNzSURCU2VydmVyOjpJblByb2Nlc3NJREJTZXJ2ZXIoY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgpCisgICAgOiBtX3NlcnZlcihJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6Y3JlYXRlKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpCit7CisgICAgcmVsYXhB
ZG9wdGlvblJlcXVpcmVtZW50KCk7CisgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIgPSBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBtX2Nvbm5lY3Rp
b25Ub0NsaWVudCA9IElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRo
aXMpOworfQorCiB1aW50NjRfdCBJblByb2Nlc3NJREJTZXJ2ZXI6OmlkZW50aWZpZXIoKSBjb25z
dAogewogICAgIC8vIEFuIGluc3RhbmNlIG9mIEluUHJvY2Vzc0lEQlNlcnZlciBhbHdheXMgaGFz
IGEgMToxIHJlbGF0aW9uc2hpcCB3aXRoIGl0cyBpbnN0YW5jZSBvZiBJREJTZXJ2ZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNz
SURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Q
cm9jZXNzSURCU2VydmVyLmgKaW5kZXggMTAzYjdjYS4uZTA2MDg3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJ
REJTZXJ2ZXIuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBJREJTZXJ2ZXI7CiBjbGFzcyBJblBy
b2Nlc3NJREJTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9T
ZXJ2ZXJEZWxlZ2F0ZSwgcHVibGljIElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50RGVs
ZWdhdGUsIHB1YmxpYyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj4gewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBjcmVhdGUo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBjb25uZWN0aW9uVG9TZXJ2
ZXIoKSBjb25zdDsKICAgICBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVj
dGlvblRvQ2xpZW50KCkgY29uc3Q7CkBAIC0xMDEsNiArMTAyLDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIEluUHJvY2Vzc0lEQlNlcnZlcigpOworICAgIEluUHJvY2Vzc0lEQlNlcnZlcihj
b25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CiAKICAgICBSZWY8SURCU2VydmVy
OjpJREJTZXJ2ZXI+IG1fc2VydmVyOwogICAgIFJlZlB0cjxJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Ub1NlcnZlcj4gbV9jb25uZWN0aW9uVG9TZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjYmFjYzYuLjE1
ZWU4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDEtMTMgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREI6IFN1cHBvcnQgb3Bl
bmluZyBhbmQgZGVsZXRpbmcgU1FMaXRlIGRhdGFiYXNlcyBvbiBkaXNrLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMDg0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbiwgU2FtIFdlaW5pZyBhbmQgQW5keSBFc3RlcyAob2gg
bXkhKS4KKworICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJEYXRhYmFzZVByb3ZpZGVyOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9u
KToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaDoKKworICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTAxLTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjE5NDkwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJEYXRhYmFz
ZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVy
LmNwcAppbmRleCAzOTYwZTYzLi5kOTAyMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
L1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCkBAIC01Myw4ICs1MywxMiBAQCBSZWZQdHI8V2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IFdlYkRhdGFiYXNlUHJvdmlkZXI6OmNyZWF0
ZUlEQkZhY3RvcgogV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdl
YkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oY29uc3Qg
V2ViQ29yZTo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2lk
YlNlcnZlck1hcC5hZGQoc2Vzc2lvbklELnNlc3Npb25JRCgpLCBudWxscHRyKTsKLSAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXZWJD
b3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZSgpOworICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkgeworICAgICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKGluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeVBhdGgoKSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPmNvbm5lY3Rpb25Ub1NlcnZlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJE
YXRhYmFzZVByb3ZpZGVyLmgKaW5kZXggMDlmZWVlMi4uYjcwOTJhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oCkBAIC00OSw2ICs0OSw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViRGF0YWJhc2VQcm92aWRlcigpOwogCisgICAg
c3RhdGljIFN0cmluZyBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSURCRmFjdG9yeUJhY2tlbmQoKSBvdmVycmlkZTsK
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVy
Pj4gbV9pZGJTZXJ2ZXJNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBiNjk3OGNhLi5lNThiNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNyw2ICsxMjcsNyBAQAog
CQk1MTFGM0ZENjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDIw
Q0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGM0ZENzBDRUNDODhG
MDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyog
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi87IH07CiAJCTUxMUYzRkQ4MENFQ0M4OEYwMDg1
MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tICovOyB9OworCQk1MTJCREI1MzFDNDcxNTkxMDA2NDk0
REYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkJEQjUyMUM0NzE1OTEwMDY0OTRERiAvKiBXZWJEYXRhYmFz
ZVByb3ZpZGVyLm1tICovOyB9OwogCQk1MTQ5NENENjBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNv
bkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTQ5NENENDBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50
LmggKi87IH07CiAJCTUxNDk0Q0Q3MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VD
bGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTQ5NENENTBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lm1tICovOyB9
OwogCQk1MTU4RjZFRjEwNkQ4NjJBMDBBRjQ1N0MgLyogV2ViSGlzdG9yeURlbGVnYXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU4RjZFRTEwNkQ4
NjJBMDBBRjQ1N0MgLyogV2ViSGlzdG9yeURlbGVnYXRlLmggKi87IH07CkBAIC02MDYsNiArNjA3
LDcgQEAKIAkJNTExRjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5h
Z2VyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGM0ZEMzBDRUND
ODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTJCREI1MjFDNDcxNTkxMDA2NDk0REYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFiYXNlUHJvdmlk
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0Q0MjJFMDM0Q0Y1NUEwMENB
MkFDRCAvKiBXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
NTE0NDNGOUEwNDI5MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGljeURlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvbGljeURlbGVn
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQk1MTQ0M0Y5QjA0MjkzOTJCMDBDQTJEM0EgLyogV2ViUG9saWN5RGVsZWdhdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJQb2xpY3lEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMjIzLDYgKzEyMjUsNyBAQAogCQkJCTUxMUYzRkQy
MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi8sCiAJCQkJ
MUFBODNGODExQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuY3BwICovLAog
CQkJCTFBQTgzRjgyMUE1QzRBRTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggKi8s
CisJCQkJNTEyQkRCNTIxQzQ3MTU5MTAwNjQ5NERGIC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIubW0g
Ki8sCiAJCQkJQTVERUZDMEQxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5h
Z2VyLmggKi8sCiAJCQkJQTVERUZDMEUxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVv
dGFNYW5hZ2VyLm1tICovLAogCQkJCTNBQjAyQUY1MTJDMTMxOUIwMEZCQjY5NCAvKiBXZWJTdG9y
YWdlTWFuYWdlci5tbSAqLywKQEAgLTIyOTUsNiArMjI5OCw3IEBACiAJCQkJOTM5ODEwQzcwODI0
QkYwMTAwOERGMDM4IC8qIFdlYk5TSW1hZ2VFeHRyYXMubSBpbiBTb3VyY2VzICovLAogCQkJCTkz
NEM0QTkxMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzOTgxMEM4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU1Bhc3RlYm9hcmRFeHRy
YXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTJCREI1MzFDNDcxNTkxMDA2NDk0REYgLyogV2Vi
RGF0YWJhc2VQcm92aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMTE5MDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLm0gaW4gU291cmNlcyAqLywKIAkJ
CQlBMTBDMUQzQjE4MjAyRkM1MDAzNjg4M0EgLyogV2ViTlNTdHJpbmdFeHRyYXNJT1MubSBpbiBT
b3VyY2VzICovLAogCQkJCTkzOTgxMTEyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU1VSTEV4dHJh
cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA5ZTM3NjIuLjdlN2E3ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMS0xMyAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogU3VwcG9ydCBv
cGVuaW5nIGFuZCBkZWxldGluZyBTUUxpdGUgZGF0YWJhc2VzIG9uIGRpc2suCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMwODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLCBTYW0gV2VpbmlnIGFuZCBBbmR5IEVzdGVzIChv
aCBteSEpLgorCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAuCisg
ICAgICAgIChXZWJEYXRhYmFzZVByb3ZpZGVyOjppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRo
KToKKwogMjAxNi0wMS0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTQ5MDAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNTc2ZDU3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMCwwICsxLDQxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgorI2ltcG9ydCAiV2ViRGF0
YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
KworU3RyaW5nIFdlYkRhdGFiYXNlUHJvdmlkZXI6OmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeVBh
dGgoKQoreworICAgIE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c107CisgICAgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9
IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07
CisgICAgaWYgKCFkYXRhYmFzZXNEaXJlY3RvcnkgfHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5
ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEFTQ0lJTGl0ZXJhbCgifi9MaWJy
YXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIiksIFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl0pOworICAgIGVsc2UKKyAgICAgICAgZGF0YWJhc2VzRGlyZWN0
b3J5ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlc0RpcmVjdG9y
eSwgQVNDSUlMaXRlcmFsKCJfX19JbmRleGVkREIiKSk7CisgICAgCisgICAgcmV0dXJuIFtkYXRh
YmFzZXNEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>