<?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>51110</bug_id>
          
          <creation_ts>2010-12-15 08:12:17 -0800</creation_ts>
          <short_desc>IDBCursor::delete is not implemented.</short_desc>
          <delta_ts>2010-12-20 06:31:48 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrei Popescu">andreip</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hans</cc>
    
    <cc>jorlow</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>322605</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-12-15 08:12:17 -0800</bug_when>
    <thetext>We should implemement IDBCursor::delete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322622</commentid>
    <comment_count>1</comment_count>
      <attachid>76651</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-12-15 08:55:26 -0800</bug_when>
    <thetext>Created attachment 76651
Implements IDBCursor::delete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323102</commentid>
    <comment_count>2</comment_count>
      <attachid>76651</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-12-16 03:57:43 -0800</bug_when>
    <thetext>Comment on attachment 76651
Implements IDBCursor::delete

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

Overall, looks great.

&gt; LayoutTests/storage/indexeddb/cursor-delete.html:1
&gt; +ï»¿&lt;html&gt;

Whats this?

&gt; LayoutTests/storage/indexeddb/cursor-delete.html:48
&gt; +    commitAndContinue();

Don&apos;t do this.  I&apos;ve been removing it as fast as I can, but apparnetly it&apos;s not fast enough.  This is not a valid way of doing this.  Set oncomplete

&gt; LayoutTests/storage/indexeddb/cursor-delete.html:163
&gt; +    deleteResult.onsuccess = iterateCursor;

You could even just call continue here since it&apos;s supposed to run after the delete happens.

&gt; WebCore/storage/IDBCursorBackendImpl.cpp:170
&gt; +    // if (m_transaction-&gt;mode() == IDBTransaction::READ_ONLY) {

We should be able to re-enable now.

&gt; WebCore/storage/IDBIndexBackendImpl.cpp:107
&gt; +    RefPtr&lt;IDBCursorBackendInterface&gt; cursor = IDBCursorBackendImpl::create(index-&gt;m_database.get(), range, direction, query.release(), objectCursor, transaction.get(), 0);

You don&apos;t test this case.  And if you did, you&apos;d see a crash I&apos;m pretty sure.  I&apos;m not sure how we can supply this without making cycles though.  :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323760</commentid>
    <comment_count>3</comment_count>
      <attachid>76877</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-12-17 07:25:47 -0800</bug_when>
    <thetext>Created attachment 76877
jorlow&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323761</commentid>
    <comment_count>4</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-12-17 07:29:33 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 76651 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76651&amp;action=review
&gt; 
&gt; Overall, looks great.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/cursor-delete.html:1
&gt; &gt; +ï»¿&lt;html&gt;
&gt; 
&gt; Whats this?
&gt; 

No idea, Visual Studio generated that :(

&gt; &gt; LayoutTests/storage/indexeddb/cursor-delete.html:48
&gt; &gt; +    commitAndContinue();
&gt; 
&gt; Don&apos;t do this.  I&apos;ve been removing it as fast as I can, but apparnetly it&apos;s not fast enough.  This is not a valid way of doing this.  Set oncomplete
&gt; 

Fixed.


&gt; &gt; LayoutTests/storage/indexeddb/cursor-delete.html:163
&gt; &gt; +    deleteResult.onsuccess = iterateCursor;
&gt; 
&gt; You could even just call continue here since it&apos;s supposed to run after the delete happens.
&gt;

Removed this since we have a pre-existing bug here. Will file a separate bug for the situation where we delete an item using objectStore.delete() while we&apos;re in the middle of iterating a cursor over the same objectStore.
 
&gt; &gt; WebCore/storage/IDBCursorBackendImpl.cpp:170
&gt; &gt; +    // if (m_transaction-&gt;mode() == IDBTransaction::READ_ONLY) {
&gt; 
&gt; We should be able to re-enable now.
&gt; 

Doesn&apos;t work, I tried. Perhaps another bug?

&gt; &gt; WebCore/storage/IDBIndexBackendImpl.cpp:107
&gt; &gt; +    RefPtr&lt;IDBCursorBackendInterface&gt; cursor = IDBCursorBackendImpl::create(index-&gt;m_database.get(), range, direction, query.release(), objectCursor, transaction.get(), 0);
&gt; 
&gt; You don&apos;t test this case.  And if you did, you&apos;d see a crash I&apos;m pretty sure.  I&apos;m not sure how we can supply this without making cycles though.  :-/

Oops, fixed. Note that when we were deleting from an object store, we weren&apos;t deleting the data from the associated index. Fixed that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323843</commentid>
    <comment_count>5</comment_count>
      <attachid>76877</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-12-17 10:00:20 -0800</bug_when>
    <thetext>Comment on attachment 76877
jorlow&apos;s comments

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

r=me

&gt; WebCore/storage/IDBIndexBackendImpl.cpp:109
&gt; +    ASSERT(objectStore.get());

don&apos;t need .get()....u can probably combine both asserts since it&apos;s likely that they&apos;ll both be true or not

&gt; WebCore/storage/IDBObjectStoreBackendImpl.cpp:309
&gt; +    SQLiteStatement indexQuery(objectStore-&gt;sqliteDatabase(), &quot;DELETE FROM IndexData WHERE objectStoreDataId = ?&quot;);

We have an index on this, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323868</commentid>
    <comment_count>6</comment_count>
      <attachid>76891</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-12-17 10:44:21 -0800</bug_when>
    <thetext>Created attachment 76891
jorlow&apos;s comments 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323870</commentid>
    <comment_count>7</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-12-17 10:44:41 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 76877 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76877&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; WebCore/storage/IDBIndexBackendImpl.cpp:109
&gt; &gt; +    ASSERT(objectStore.get());
&gt; 
&gt; don&apos;t need .get()....u can probably combine both asserts since it&apos;s likely that they&apos;ll both be true or not
&gt; 

Done.

&gt; &gt; WebCore/storage/IDBObjectStoreBackendImpl.cpp:309
&gt; &gt; +    SQLiteStatement indexQuery(objectStore-&gt;sqliteDatabase(), &quot;DELETE FROM IndexData WHERE objectStoreDataId = ?&quot;);
&gt; 
&gt; We have an index on this, right?

We do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323872</commentid>
    <comment_count>8</comment_count>
      <attachid>76891</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-12-17 10:45:03 -0800</bug_when>
    <thetext>Comment on attachment 76891
jorlow&apos;s comments 2

rubber stamp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324039</commentid>
    <comment_count>9</comment_count>
      <attachid>76877</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-17 16:38:28 -0800</bug_when>
    <thetext>Comment on attachment 76877
jorlow&apos;s comments

Cleared Jeremy Orlow&apos;s review+ from obsolete attachment 76877 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324356</commentid>
    <comment_count>10</comment_count>
      <attachid>76891</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-12-20 06:27:15 -0800</bug_when>
    <thetext>Comment on attachment 76891
jorlow&apos;s comments 2

Looks like the commit queue is in a weird state and can&apos;t land this patch. It keeps saying:

&quot;Patch 76891 from bug 51110: 0 minutes ago (cr-jail-4) Tests passed, but commit failed (checkout out of date). Updating, then landing without building or re-running tests.&quot;

even though I see no other changes landing at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324361</commentid>
    <comment_count>11</comment_count>
      <attachid>76891</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-20 06:31:32 -0800</bug_when>
    <thetext>Comment on attachment 76891
jorlow&apos;s comments 2

Rejecting attachment 76891 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-4&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--ignore-builders&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 76891]&quot; exit_code: 2
Last 500 characters of output:
DBKey.cpp
	M	WebCore/storage/IDBObjectStoreBackendImpl.cpp
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/public/WebIDBCursor.h
	M	WebKit/chromium/src/IDBCursorBackendProxy.cpp
	M	WebKit/chromium/src/IDBCursorBackendProxy.h
	M	WebKit/chromium/src/WebIDBCursorImpl.cpp
	M	WebKit/chromium/src/WebIDBCursorImpl.h
Merge conflict during commit: Conflict at &apos;/trunk/WebKit/chromium/ChangeLog&apos; at /usr/local/git/libexec/git-core/git-svn line 573


Failed to run &quot;[u&apos;git&apos;, u&apos;svn&apos;, u&apos;dcommit&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7293078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324362</commentid>
    <comment_count>12</comment_count>
      <attachid>76891</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-20 06:31:41 -0800</bug_when>
    <thetext>Comment on attachment 76891
jorlow&apos;s comments 2

Clearing flags on attachment: 76891

Committed r74342: &lt;http://trac.webkit.org/changeset/74342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324363</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-20 06:31:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76651</attachid>
            <date>2010-12-15 08:55:26 -0800</date>
            <delta_ts>2010-12-17 07:26:47 -0800</delta_ts>
            <desc>Implements IDBCursor::delete</desc>
            <filename>delete.patch</filename>
            <type>text/plain</type>
            <size>30020</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">Y29tbWl0IGZmOTNhNmZmZDU4OTAyODBkNWQ5MTg2ODQxOTUzNTgyMjkwODcyMTkKQXV0aG9yOiBB
bmRyZWkgUG9wZXNjdSA8YW5kcmVpcEBnb29nbGUuY29tPgpEYXRlOiAgIFdlZCBEZWMgMTUgMTY6
NDk6MzUgMjAxMCArMDAwMAoKICAgIEltcGxlbWVudCBJREJDdXJzb3I6OmRlbGV0ZQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA4NzE4NTRlLi4wMzg3NTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTItMTUgIEFu
ZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElEQkN1cnNvcjo6ZGVsZXRlIGlzIG5vdCBpbXBs
ZW1lbnRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxMTEwCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0
ZS5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgQ2hyb21pdW0gdGVzdCBl
eHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjkwM2JlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5NCBAQAorVGVz
dCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
Kword2Via2l0SW5kZXhlZERCLm9wZW4oJ25hbWUnKQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1
bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3JlYWR5
U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4u
CisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUK
K1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBldmVudCBp
cyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50LnNvdXJj
ZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRy
dWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdyZWFkeVN0
YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0
ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitkYiA9IGV2ZW50LnJlc3VsdAorZGIuc2V0VmVyc2lv
bignbmV3IHZlcnNpb24nKQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFT
UyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3Vs
dCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCisKK3NldFZlcnNpb25T
dWNjZXNzKCk6CitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBldmVudCBp
cyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnbWVzc2FnZScgaW4g
ZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVu
dC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdl
dCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAn
cmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJl
YWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKwordHJhbnMgPSBldmVudC5yZXN1bHQKK1BB
U1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3QnKQorb2JqZWN0U3RvcmUuYWRk
KCdteVZhbHVlMScsICdteUtleTEnKQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdteUtl
eTInKQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtleTMnKQorb2JqZWN0U3RvcmUu
YWRkKCdteVZhbHVlNCcsICdteUtleTQnKQorb3BlbkN1cnNvcjEKK3RyYW5zID0gZGIudHJhbnNh
Y3Rpb24oJ3Rlc3QnLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQordHJhbnMub2Jq
ZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KQorUEFTUyAnb25z
dWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRy
dWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQg
ZmlyZSBzaG9ydGx5Li4uCisKK2V2ZW50LnJlc3VsdC5kZWxldGUoKQorUEFTUyBldmVudC5yZXN1
bHQudmFsdWUgaXMgIm15VmFsdWUxIgorZXZlbnQucmVzdWx0LmNvbnRpbnVlKCkKK2V2ZW50LnJl
c3VsdC5kZWxldGUoKQorUEFTUyBldmVudC5yZXN1bHQudmFsdWUgaXMgIm15VmFsdWUyIgorZXZl
bnQucmVzdWx0LmNvbnRpbnVlKCkKK2V2ZW50LnJlc3VsdC5kZWxldGUoKQorUEFTUyBldmVudC5y
ZXN1bHQudmFsdWUgaXMgIm15VmFsdWUzIgorZXZlbnQucmVzdWx0LmNvbnRpbnVlKCkKK2V2ZW50
LnJlc3VsdC5kZWxldGUoKQorUEFTUyBldmVudC5yZXN1bHQudmFsdWUgaXMgIm15VmFsdWU0Igor
ZXZlbnQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgY291bnRlciBpcyA1Cit0cmFucy5vYmplY3RT
dG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pCitQQVNTICdvbnN1Y2Nl
c3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQor
UEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBmaXJl
IHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZl
bnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2Un
IGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1Mg
ZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BB
U1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdl
dC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1dBUk46IHNob3VsZEJlKCkgZXhw
ZWN0cyBzdHJpbmcgYXJndW1lbnRzCitQQVNTIG51bGwgaXMgbnVsbAordHJhbnMgPSBkYi50cmFu
c2FjdGlvbigndGVzdCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitvYmplY3RT
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykKK29iamVjdFN0b3JlLmFkZCgnbXlWYWx1
ZTEnLCAnbXlLZXkxJykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1Mg
J29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQg
aXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitvcGVuQ3Vyc29yMgor
b2JqZWN0U3RvcmUub3BlbkN1cnNvcih7cmFuZ2U6IGtleVJhbmdlfSkKK1BBU1MgJ29uc3VjY2Vz
cycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQ
QVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUg
c2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBldmVu
dCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnbWVzc2FnZScg
aW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBl
dmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRh
cmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFT
UyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0
LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFTUyBbb2JqZWN0IElEQkN1cnNv
cl0gaXMgbm9uLW51bGwuCitldmVudC5yZXN1bHQuZGVsZXRlKCkKK29iamVjdFN0b3JlLmdldCgn
bXlLZXkxJykKK0Vycm9yIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyBm
YWxzZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnbWVzc2FnZScgaW4gZXZl
bnQgaXMgdHJ1ZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50LnNv
dXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlz
IHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdyZWFk
eVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQucmVhZHlT
dGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCd0ZXN0
Jywgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK29iamVjdFN0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3Rlc3QnKQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEn
KQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdteUtleTInKQorb2JqZWN0U3RvcmUuYWRk
KCdteVZhbHVlMycsICdteUtleTMnKQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1
ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGlu
IHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCisKK29wZW5D
dXJzb3IzCitvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KQorUEFTUyAn
b25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlz
IHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91
bGQgZmlyZSBzaG9ydGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQn
IGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdt
ZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVl
CitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVu
dC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIFtvYmplY3Qg
SURCQ3Vyc29yXSBpcyBub24tbnVsbC4KK2N1cnNvciA9IGV2ZW50LnJlc3VsdAorUEFTUyBjdXJz
b3IudmFsdWUgaXMgIm15VmFsdWUxIgorb2JqZWN0U3RvcmUuZGVsZXRlKCdteUtleTInKQorUEFT
UyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0
IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBz
aG91bGQgZmlyZSBzaG9ydGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1
bHQnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNT
ICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0
cnVlCitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2Vzcycg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBp
cyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBl
dmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitjdXJzb3IuY29u
dGludWUoKQorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMg
dHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2
ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQu
c291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQg
aXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3Jl
YWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFk
eVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgW29iamVjdCBJREJDdXJzb3JdIGlz
IG5vbi1udWxsLgorUEFTUyBldmVudC5yZXN1bHQudmFsdWUgaXMgIm15VmFsdWUzIgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxMTg0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbApAQCAtMCwwICsxLDE4NyBA
QAor77u/PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNv
ci4iKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KKw0KK3Rlc3QoKTsNCisNCitmdW5jdGlvbiB0ZXN0
KCkNCit7DQorICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKCdu
YW1lJykiKTsNCisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7DQorICAgIHJlc3VsdC5vbnN1Y2Nl
c3MgPSBvcGVuU3VjY2VzczsNCisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsNCit9DQorDQorZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KK3sNCisgICAgdmVyaWZ5
U3VjY2Vzc0V2ZW50KGV2ZW50KTsNCisgICAgdmFyIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC5yZXN1bHQiKTsNCisNCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOw0KKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsNCisgICAgcmVzdWx0
Lm9uc3VjY2VzcyA9IHNldFZlcnNpb25TdWNjZXNzOw0KKyAgICByZXN1bHQub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KK30NCisNCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2Vz
cygpDQorew0KKyAgICBkZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsNCisgICAgdmVyaWZ5
U3VjY2Vzc0V2ZW50KGV2ZW50KTsNCisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJh
bnMgPSBldmVudC5yZXN1bHQiKTsNCisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIp
Ow0KKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQorICAgIHRy
YW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOw0KKw0KKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIsIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOw0KKyAgICBjb21taXRBbmRDb250
aW51ZSgpOw0KK30KKw0KK2Z1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKSAK
K3sNCisgICAgdmFyIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgndGVzdCcpIik7DQorICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
LmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsNCisgICAgZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKCdteVZhbHVlMicsICdteUtleTInKSIpOw0KKyAgICBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZS5hZGQoJ215VmFsdWUzJywgJ215S2V5MycpIik7DQorICAgIGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlLmFkZCgnbXlWYWx1ZTQnLCAnbXlLZXk0JykiKTsKK30NCisNCitmdW5jdGlvbiBjb21t
aXRBbmRDb250aW51ZShjb250aW51ZUZ1bmN0aW9uKQ0KK3sNCisgICAgd2luZG93LnNldFRpbWVv
dXQoY29udGludWVGdW5jdGlvbiwgMCk7DQorfQ0KKw0KK2Z1bmN0aW9uIG9wZW5DdXJzb3IoKQ0K
K3sNCisgICAgZGVidWcoIm9wZW5DdXJzb3IxIik7DQorICAgIGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oJ3Rlc3QnLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
Ow0KKyAgICBrZXlSYW5nZSA9IHdlYmtpdElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIp
Ow0KKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9w
ZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7DQorICAgIHZlcmlmeVJlc3VsdChyZXN1bHQp
Ow0KKyAgICByZXN1bHQub25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsNCisgICAgcmVzdWx0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCisgICAgY291bnRlciA9IDE7DQorfQ0K
Kw0KK2Z1bmN0aW9uIGN1cnNvclN1Y2Nlc3MoKQ0KK3sNCisgICAgaWYgKGV2ZW50LnJlc3VsdCA9
PSBudWxsKSB7DQorICAgICAgICBzaG91bGRCZSgiY291bnRlciIsICI1Iik7DQorICAgICAgICBy
ZXN1bHQgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJzb3Io
e3JhbmdlOiBrZXlSYW5nZX0pIik7DQorICAgICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsNCisg
ICAgICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsNCisgICAgICAgIHJlc3VsdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorICAgICAgICByZXR1cm47DQorICAg
IH0NCisgICAgZXZhbEFuZExvZygiZXZlbnQucmVzdWx0LmRlbGV0ZSgpIik7DQorICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQucmVzdWx0LnZhbHVlIiwgIm15VmFsdWUiICsgY291bnRl
cisrKTsNCisgICAgZXZhbEFuZExvZygiZXZlbnQucmVzdWx0LmNvbnRpbnVlKCkiKTsNCit9DQor
CitmdW5jdGlvbiBjdXJzb3JFbXB0eSgpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50
KTsNCisgICAgc2hvdWxkQmVOdWxsKGV2ZW50LnJlc3VsdCk7DQorICAgIGNvbW1pdEFuZENvbnRp
bnVlKGFkZE9iamVjdCk7DQorfQ0KKw0KK2Z1bmN0aW9uIGFkZE9iamVjdCgpDQorew0KKyAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCd0ZXN0Jywgd2Via2l0SURCVHJhbnNh
Y3Rpb24uUkVBRF9XUklURSkiKTsNCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykiKTsNCisgICAgcmVzdWx0ID0gZXZh
bEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKSIpOw0KKyAgICB2
ZXJpZnlSZXN1bHQocmVzdWx0KTsNCisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5DdXJzb3Iy
Ow0KKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOw0KK30NCisN
CitmdW5jdGlvbiBvcGVuQ3Vyc29yMigpDQorew0KKyAgICBkZWJ1Zygib3BlbkN1cnNvcjIiKTsN
CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcih7cmFuZ2U6
IGtleVJhbmdlfSkiKTsNCisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7DQorICAgIHJlc3VsdC5v
bnN1Y2Nlc3MgPSBkZWxldGVPYmplY3Q7DQorICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIGRlbGV0ZU9iamVjdCgpDQorew0KKyAg
ICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOw0KKyAgICBzaG91bGRCZU5vbk51bGwoZXZlbnQu
cmVzdWx0KTsNCisgICAgZXZhbEFuZExvZygiZXZlbnQucmVzdWx0LmRlbGV0ZSgpIik7DQorICAg
IHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmdldCgnbXlLZXkxJykiKTsNCisgICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7DQorICAgIHJlc3Vs
dC5vbmVycm9yID0gdmVyaWZ5T2JqZWN0RGVsZXRlZDsKK30NCisNCitmdW5jdGlvbiB2ZXJpZnlP
YmplY3REZWxldGVkKCkNCit7DQorICAgIHZlcmlmeUVycm9yRXZlbnQoZXZlbnQpOw0KKyAgICBj
b21taXRBbmRDb250aW51ZShhZGRUaHJlZU9iamVjdHMpOw0KK30NCisNCitmdW5jdGlvbiBhZGRU
aHJlZU9iamVjdHMoKQ0KK3sNCisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bigndGVzdCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7DQorICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVz
dCcpIik7DQorICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlL
ZXkxJykiKTsNCisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMicsICdt
eUtleTInKSIpOw0KKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215
VmFsdWUzJywgJ215S2V5MycpIik7DQorICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOw0KKyAgICBy
ZXN1bHQub25zdWNjZXNzID0gb3BlbkN1cnNvcjM7DQorICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIG9wZW5DdXJzb3IzKCkNCit7
DQorICAgIGRlYnVnKCJvcGVuQ3Vyc29yMyIpOw0KKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJv
YmplY3RTdG9yZS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KSIpOw0KKyAgICB2ZXJpZnlS
ZXN1bHQocmVzdWx0KTsNCisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZVNlY29uZE9iamVj
dDsNCisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsNCit9DQor
DQorZnVuY3Rpb24gZGVsZXRlU2Vjb25kT2JqZWN0KCkNCit7DQorICAgIHZlcmlmeVN1Y2Nlc3NF
dmVudChldmVudCk7DQorICAgIHNob3VsZEJlTm9uTnVsbChldmVudC5yZXN1bHQpOw0KKyAgICBl
dmFsQW5kTG9nKCJjdXJzb3IgPSBldmVudC5yZXN1bHQiKTsNCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjdXJzb3IudmFsdWUiLCAibXlWYWx1ZTEiKTsNCisgICAgZGVsZXRlUmVzdWx0ID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZGVsZXRlKCdteUtleTInKSIpOw0KKyAgICB2ZXJpZnlS
ZXN1bHQoZGVsZXRlUmVzdWx0KTsNCisgICAgZGVsZXRlUmVzdWx0Lm9uc3VjY2VzcyA9IGl0ZXJh
dGVDdXJzb3I7DQorICAgIGRlbGV0ZVJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIGl0ZXJhdGVDdXJzb3IoKQ0KK3sNCisgICAgdmVyaWZ5
U3VjY2Vzc0V2ZW50KGV2ZW50KTsNCisgICAgZXZhbEFuZExvZygiY3Vyc29yLmNvbnRpbnVlKCki
KTsNCisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHZlcmlmeVNlY29uZE9iamVjdERlbGV0ZWQ7DQor
fQ0KKw0KK2Z1bmN0aW9uIHZlcmlmeVNlY29uZE9iamVjdERlbGV0ZWQoKQ0KK3sNCisgICAgdmVy
aWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsNCisgICAgc2hvdWxkQmVOb25OdWxsKGV2ZW50LnJlc3Vs
dCk7DQorICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQucmVzdWx0LnZhbHVlIiwgIm15
VmFsdWUzIik7DQorICAgIGRvbmUoKTsNCit9DQorCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFjMzAwOS4uMGM3NGYxNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAxMC0xMi0xNSAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SURCQ3Vyc29yOjpkZWxldGUgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTExMTAKKworICAgICAgICBJbXBsZW1lbnQg
SURCQ3Vyc29yOjpkZWxldGUuCisgICAgICAgIFNlZSBodHRwOi8vZHZjcy53My5vcmcvaGcvSW5k
ZXhlZERCL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI3dpZGwtSURCQ3Vyc29yLWRlbGV0ZQor
CisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbAorCisg
ICAgICAgICogc3RvcmFnZS9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3IuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJz
b3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1w
bDo6SURCQ3Vyc29yQmFja2VuZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFj
a2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKToKKwogMjAxMC0x
Mi0xNSAgSmFycmVkIE5pY2hvbGxzICA8amFycmVkQHNlbmNoYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJD
dXJzb3IuY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKaW5kZXggMWFhZmY5ZC4u
NDQ0YzEwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKQEAgLTg3LDEwICs4NywxMCBAQCB2b2lkIElE
QkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpyZW1vdmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1
cnNvcjo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJS
ZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rp
b24uZ2V0KCkpOwotICAgIG1fYmFja2VuZC0+cmVtb3ZlKHJlcXVlc3QsIGVjKTsKKyAgICBtX2Jh
Y2tlbmQtPmRlbGV0ZUZ1bmN0aW9uKHJlcXVlc3QsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaApp
bmRleCA2ZjNhOTQwLi41NGJmNTFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vy
c29yLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkFueT4gdmFsdWUoKSBjb25zdDsKICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBj
b250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcmVtb3ZlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
eGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+LCBJREJSZXF1ZXN0KiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9J
REJDdXJzb3IuaWRsCmluZGV4IDJkMjUwZDUuLjEyZDBiYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
c3RvcmFnZS9JREJDdXJzb3IuaWRsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaWRs
CkBAIC00Miw4ICs0Miw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgLy8gICAgcmFpc2Vz
IChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9u
PWNvbnRpbnVlRnVuY3Rpb25dIHZvaWQgY29udGludWUoaW4gW09wdGlvbmFsXSBJREJLZXkga2V5
KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7Ci0gICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgICAgIC8vW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIElEQlJlcXVlc3QgcmVtb3ZlKCkKLSAgICAgICAgLy8gICAgcmFpc2VzIChJREJEYXRh
YmFzZUV4Y2VwdGlvbik7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPWRlbGV0ZUZ1bmN0aW9uXSBJREJSZXF1ZXN0IGRlbGV0
ZSgpCisgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICB9Owog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggOGQ1YzhhMS4u
YmUwZmMwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC00
NSwxMyArNDUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JREJDdXJzb3JCYWNrZW5k
SW1wbDo6SURCQ3Vyc29yQmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGly
ZWN0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZVN0YXRlbWVudD4gcXVlcnksIGJvb2wgaXNTZXJpYWxp
emVkU2NyaXB0VmFsdWVDdXJzb3IsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb24pCitJREJDdXJzb3JCYWNrZW5kSW1wbDo6SURCQ3Vyc29yQmFja2VuZEltcGwoSURC
U1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZVN0YXRl
bWVudD4gcXVlcnksIGJvb2wgaXNTZXJpYWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZSogb2JqZWN0U3RvcmUpCiAgICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQogICAg
ICwgbV9rZXlSYW5nZShrZXlSYW5nZSkKICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKICAg
ICAsIG1fcXVlcnkocXVlcnkpCiAgICAgLCBtX2lzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29y
KGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFu
c2FjdGlvbikKKyAgICAsIG1fb2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCiB7CiAgICAgbG9hZEN1
cnJlbnRSb3coKTsKIH0KQEAgLTE1OCw0MSArMTU5LDI0IEBAIHZvaWQgSURCQ3Vyc29yQmFja2Vu
ZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY3Vyc29yLmdldCgpKTsKIH0KIAotdm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6cmVtb3ZlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6
ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJz
b3IgPSB0aGlzOwotICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxi
YWNrczsKLSAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFj
a1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpyZW1vdmVJbnRlcm5hbCwgY3Vyc29yLCBjYWxs
YmFja3MpKSkKKyAgICBpZiAoIW1fcXVlcnkgfHwgbV9jdXJyZW50SWQgPT0gSW52YWxpZElkIHx8
ICFtX2lzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yKSB7CiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKLX0KLQotdm9pZCBJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6cmVtb3ZlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcykKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgZG9lc24ndCB1cGRhdGUg
aW5kZXhlcy4gSXQncyBkYW5nZXJvdXMgdG8gY2FsbCBpbiBpdHMgY3VycmVudCBzdGF0ZS4KLSAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIk5vdCBpbXBsZW1lbnRlZC4iKSk7Ci0gICAgcmV0dXJu
OwotCi0gICAgaWYgKCFjdXJzb3ItPm1fcXVlcnkgfHwgY3Vyc29yLT5tX2N1cnJlbnRJZCA9PSBJ
bnZhbGlkSWQpIHsKLSAgICAgICAgLy8gRklYTUU6IFVzZSB0aGUgcHJvcGVyIGVycm9yIGNvZGUg
d2hlbiBpdCdzIHNwZWNjZWQuCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiT3BlcmF0
aW9uIG5vdCBwb3NzaWJsZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJp
bmcgc3FsID0gIkRFTEVURSBGUk9NIE9iamVjdFN0b3JlRGF0YSBXSEVSRSBpZCA9ID8iOwotICAg
IFNRTGl0ZVN0YXRlbWVudCBkZWxldGVRdWVyeShjdXJzb3ItPmRhdGFiYXNlKCksIHNxbCk7Ci0g
ICAgCi0gICAgYm9vbCBvayA9IGRlbGV0ZVF1ZXJ5LnByZXBhcmUoKSA9PSBTUUxSZXN1bHRPazsK
LSAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7IC8vIEZJWE1FOiBCZXR0ZXIgZXJyb3IgaGFuZGxp
bmcuCi0gICAgZGVsZXRlUXVlcnkuYmluZEludDY0KDEsIGN1cnNvci0+bV9jdXJyZW50SWQpOwot
ICAgIG9rID0gZGVsZXRlUXVlcnkuc3RlcCgpID09IFNRTFJlc3VsdERvbmU7Ci0gICAgQVNTRVJU
X1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgorICAgIC8v
IEZJWE1FOiBDaGVjayB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBSRUFEX1dSSVRFCisgICAgLy8g
aWYgKG1fdHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7
CisgICAgICAgIC8vIEZJWE1FOiBXZSBtdXN0IHJldHVybiBSRUFEX09OTFlfRVJSIGhlcmUuIEZp
eCB0aGlzIHdoZW4gd2UgdXBkYXRlIElEQkRhdGFiYXNlRXhjZXB0aW9uIHRvIG1hdGNoIHRoZSBz
cGVjLgorICAgICAgICAvLyBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9F
UlI7CisgICAgICAgIC8vIHJldHVybjsKKyAgICAvLyB9CiAKLSAgICBjdXJzb3ItPm1fY3VycmVu
dElkID0gSW52YWxpZElkOwotICAgIGN1cnNvci0+bV9jdXJyZW50U2VyaWFsaXplZFNjcmlwdFZh
bHVlID0gMDsKLSAgICBjdXJzb3ItPm1fY3VycmVudElEQktleVZhbHVlID0gMDsKLSAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcygpOworICAgIG1fb2JqZWN0U3RvcmUtPmRlbGV0ZUZ1bmN0aW9uKG1f
Y3VycmVudEtleSwgcHJwQ2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CiB9CiAK
Kwogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6bG9hZEN1cnJlbnRSb3coKQogewogICAgIC8v
IFRoZSBjb2x1bW4gbnVtYmVycyBkZXBlbmQgb24gdGhlIHF1ZXJ5IGluIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6Om9wZW5DdXJzb3IuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yQmFja2VuZEltcGwuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1w
bC5oCmluZGV4IGI2NDZmMWMuLjBhZWEyZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5oCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElE
QkRhdGFiYXNlQmFja2VuZEltcGw7CiBjbGFzcyBJREJJbmRleEJhY2tlbmRJbXBsOwogY2xhc3Mg
SURCS2V5UmFuZ2U7Ci1jbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOworY2xhc3MgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCU1FMaXRlRGF0YWJhc2U7CiBj
bGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBTUUxpdGVEYXRhYmFz
ZTsKQEAgLTQ5LDkgKzQ5LDkgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFz
cyBJREJDdXJzb3JCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4g
Y3JlYXRlKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc093blB0cjxT
UUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29y
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoSURCU1FMaXRlRGF0YWJh
c2UqIGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29y
OjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZVN0YXRlbWVudD4gcXVlcnks
IGJvb2wgaXNTZXJpYWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSog
b2JqZWN0U3RvcmUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNv
ckJhY2tlbmRJbXBsKGRhdGFiYXNlLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBxdWVyeSwgaXNTZXJp
YWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIHRyYW5zYWN0aW9uKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZEltcGwoZGF0YWJhc2UsIGtleVJhbmdlLCBkaXJl
Y3Rpb24sIHF1ZXJ5LCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgdHJhbnNhY3Rpb24s
IG9iamVjdFN0b3JlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfklEQkN1cnNvckJhY2tlbmRJbXBs
KCk7CiAKQEAgLTYwLDE3ICs2MCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQkFueT4gdmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKLSAgICBJREJDdXJzb3JCYWNr
ZW5kSW1wbChJREJTUUxpdGVEYXRhYmFzZSosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJREJD
dXJzb3I6OkRpcmVjdGlvbiwgUGFzc093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29s
IGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqKTsKKyAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChJREJTUUxpdGVEYXRhYmFzZSosIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBJREJDdXJzb3I6OkRpcmVjdGlvbiwgUGFzc093blB0cjxT
UUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29y
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UqKTsKIAogICAgIHZvaWQgbG9hZEN1cnJlbnRSb3coKTsKICAgICBTUUxpdGVEYXRh
YmFzZSYgZGF0YWJhc2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBs
PiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKLSAgICBzdGF0aWMgdm9p
ZCByZW1vdmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKICAgICBzdGF0
aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAtMTsKIApAQCAtODgsNiArODcsNyBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudElEQktleVZhbHVlOwogCiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKKyAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBtX29iamVjdFN0b3JlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlLmgKaW5kZXggZTFhYzI3NC4uMGQxMzJjYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggNTk3YThjMi4uZjVjYTM5
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisr
KyBiL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Vyc29yID0gSURCQ3Vyc29y
QmFja2VuZEltcGw6OmNyZWF0ZShpbmRleC0+bV9kYXRhYmFzZS5nZXQoKSwgcmFuZ2UsIGRpcmVj
dGlvbiwgcXVlcnkucmVsZWFzZSgpLCBvYmplY3RDdXJzb3IsIHRyYW5zYWN0aW9uLmdldCgpKTsK
KyAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Vyc29yID0gSURCQ3Vyc29y
QmFja2VuZEltcGw6OmNyZWF0ZShpbmRleC0+bV9kYXRhYmFzZS5nZXQoKSwgcmFuZ2UsIGRpcmVj
dGlvbiwgcXVlcnkucmVsZWFzZSgpLCBvYmplY3RDdXJzb3IsIHRyYW5zYWN0aW9uLmdldCgpLCAw
KTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhjdXJzb3IucmVsZWFzZSgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGZiMDhl
MzcuLjU1YmMyYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHAKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzcwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U+IGN1cnNvciA9IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjcmVhdGUob2JqZWN0U3RvcmUtPm1f
ZGF0YWJhc2UuZ2V0KCksIHJhbmdlLCBkaXJlY3Rpb24sIHF1ZXJ5LnJlbGVhc2UoKSwgdHJ1ZSwg
dHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
PiBjdXJzb3IgPSBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKG9iamVjdFN0b3JlLT5tX2Rh
dGFiYXNlLmdldCgpLCByYW5nZSwgZGlyZWN0aW9uLCBxdWVyeS5yZWxlYXNlKCksIHRydWUsIHRy
YW5zYWN0aW9uLmdldCgpLCBvYmplY3RTdG9yZS5nZXQoKSk7CiAgICAgY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoY3Vyc29yLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDAwOGQ5MDEuLmE0
MDdiYTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEyLTE1ICBBbmRyZWkg
UG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJREJDdXJzb3I6OmRlbGV0ZSBpcyBub3QgaW1wbGVtZW50
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTEx
MAorCisgICAgICAgICogcHVibGljL1dlYklEQkN1cnNvci5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDdXJzb3I6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6ZGVs
ZXRlRnVuY3Rpb24pOgorICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpkZWxldGVGdW5jdGlvbik6
CisgICAgICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oOgorICAgICAgICAqIHNyYy9X
ZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6
ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmg6CisKIDIw
MTAtMTItMTQgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
Q3Vyc29yLmgKaW5kZXggODhiOGIyMi4uOThiMmI5NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkN1cnNvci5oCkBAIC01NSw3ICs1NSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV2ViSURCQ2FsbGJhY2tz
KiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURC
Q2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNl
cHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAvLyBGSVhN
RTogUmVtb3ZlIGFmdGVyIFdLIHJvbGwuCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgZGVsZXRlRnVuY3Rp
b24oY2FsbGJhY2tzLCBlYyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJlbW92ZShj
YWxsYmFja3MsIGVjKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViSURCQ3Vyc29yKCkgeyB9CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKaW5kZXggOTQ0
OTFmOS4uZWM3YmY2MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JC
YWNrZW5kUHJveHkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2Vu
ZFByb3h5LmNwcApAQCAtODUsOSArODUsOSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6
Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPAogICAg
IG1faWRiQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKGtleSwgbmV3IFdlYklEQkNhbGxiYWNrc0lt
cGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCi12b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6cmVt
b3ZlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIG1faWRi
Q3Vyc29yLT5yZW1vdmUobmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwor
ICAgIG1faWRiQ3Vyc29yLT5kZWxldGVGdW5jdGlvbihuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChj
YWxsYmFja3MpLCBlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCmluZGV4IDBhN2EyODguLjY1MGRkZWQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkFueT4gdmFsdWUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2Vw
dGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBJREJDdXJzb3JCYWNrZW5kUHJveHkoUGFzc093
blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4pOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vy
c29ySW1wbC5jcHAKaW5kZXggZWNhNWQ0Mi4uNTE2NTU3NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkN1cnNvckltcGwuY3BwCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgV2ViSURCQ3Vyc29y
SW1wbDo6Y29udGludWVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJh
Y2tzKiBjCiAgICAgbV9pZGJDdXJzb3JCYWNrZW5kLT5jb250aW51ZUZ1bmN0aW9uKGtleSwgSURC
Q2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBlYyk7CiB9CiAKLXZvaWQgV2ViSURC
Q3Vyc29ySW1wbDo6cmVtb3ZlKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6ZGVsZXRlRnVuY3Rpb24oV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIG1faWRi
Q3Vyc29yQmFja2VuZC0+cmVtb3ZlKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tz
KSwgZWMpOworICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+ZGVsZXRlRnVuY3Rpb24oSURCQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5o
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmgKaW5kZXggMzlmYTQ0Yi4u
N2Y4ZWJkNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBs
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZShXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmLCBXZWJJREJLZXkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNv
bnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihjb25zdCBXZWJJ
REJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZShXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKIAogIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZT4gbV9pZGJDdXJzb3JCYWNrZW5kOwo=
</data>
<flag name="review"
          id="67636"
          type_id="1"
          status="-"
          setter="jorlow"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76877</attachid>
            <date>2010-12-17 07:25:47 -0800</date>
            <delta_ts>2010-12-17 16:38:28 -0800</delta_ts>
            <desc>jorlow&apos;s comments</desc>
            <filename>delete.patch</filename>
            <type>text/plain</type>
            <size>39509</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">Y29tbWl0IGRkM2Q5ZTg5MDRlOWJlOGZjMTk3NjA2MGY5NmZmNjU4YTFjMDI5ZDEKQXV0aG9yOiBB
bmRyZWkgUG9wZXNjdSA8YW5kcmVpcEBnb29nbGUuY29tPgpEYXRlOiAgIEZyaSBEZWMgMTcgMTU6
MTY6NTYgMjAxMCArMDAwMAoKICAgIEltcGxlbWVudCBJREJDdXJzb3I6OmRlbGV0ZQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhMWRiNmM5Li5lMjRiMGI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMTcgIEFu
ZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElEQkN1cnNvcjo6ZGVsZXRlIGlzIG5vdCBpbXBs
ZW1lbnRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxMTEwCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgt
ZGVsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWluZGV4LWRlbGV0ZS5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0xNyAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRh
dGUgQ2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNWQ3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzMiBAQAorVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKword2Via2l0SW5kZXhlZERCLm9wZW4oJ25hbWUnKQorUEFTUyAn
b25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlz
IHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91
bGQgZmlyZSBzaG9ydGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQn
IGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdt
ZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVl
CitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVu
dC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitkYiA9IGV2ZW50LnJl
c3VsdAorZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorUEFTUyAnb25zdWNjZXNzJyBpbiBy
ZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3Jl
YWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5
Li4uCisKK3NldFZlcnNpb25TdWNjZXNzKCk6CitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAn
cmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQor
UEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQg
aXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nl
c3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BB
U1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKwordHJhbnMg
PSBldmVudC5yZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwg
b2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qn
KQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKQorb2JqZWN0U3RvcmUuYWRk
KCdteVZhbHVlMicsICdteUtleTInKQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtl
eTMnKQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKQorb3BlbkN1cnNvcjEK
K3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3Rlc3QnLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKQordHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5
UmFuZ2V9KQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJv
cicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVl
CitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCisKK2V2ZW50LnJlc3VsdC5kZWxldGUo
KQorUEFTUyBldmVudC5yZXN1bHQudmFsdWUgaXMgIm15VmFsdWUxIgorZXZlbnQucmVzdWx0LmNv
bnRpbnVlKCkKK2V2ZW50LnJlc3VsdC5kZWxldGUoKQorUEFTUyBldmVudC5yZXN1bHQudmFsdWUg
aXMgIm15VmFsdWUyIgorZXZlbnQucmVzdWx0LmNvbnRpbnVlKCkKK2V2ZW50LnJlc3VsdC5kZWxl
dGUoKQorUEFTUyBldmVudC5yZXN1bHQudmFsdWUgaXMgIm15VmFsdWUzIgorZXZlbnQucmVzdWx0
LmNvbnRpbnVlKCkKK2V2ZW50LnJlc3VsdC5kZWxldGUoKQorUEFTUyBldmVudC5yZXN1bHQudmFs
dWUgaXMgIm15VmFsdWU0IgorZXZlbnQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgY291bnRlciBp
cyA1Cit0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5n
ZX0pCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBp
biByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0Fu
IGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BB
U1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFs
c2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2
ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25z
dWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVl
CitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1dB
Uk46IHNob3VsZEJlKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzCitQQVNTIG51bGwgaXMgbnVs
bAordHJhbnMgPSBkYi50cmFuc2FjdGlvbigndGVzdCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykKK29iamVj
dFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVz
dWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFk
eVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4u
LgorCitvcGVuQ3Vyc29yMgorb2JqZWN0U3RvcmUub3BlbkN1cnNvcih7cmFuZ2U6IGtleVJhbmdl
fSkKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGlu
IHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4g
ZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFT
UyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxz
ZQorUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZl
bnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1
Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
K1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFT
UyBbb2JqZWN0IElEQkN1cnNvcl0gaXMgbm9uLW51bGwuCitldmVudC5yZXN1bHQuZGVsZXRlKCkK
K29iamVjdFN0b3JlLmdldCgnbXlLZXkxJykKK0Vycm9yIGV2ZW50IGZpcmVkOgorUEFTUyAncmVz
dWx0JyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFT
UyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0
cnVlCitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2Vzcycg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBp
cyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBl
dmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42OWM2ZTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0ZS5odG1sCkBAIC0wLDAgKzEsMTMyIEBACis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVzdWx0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ25hbWUnKSIpOworICAg
IHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsK
KyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnJlc3VsdCIpOworCisgICAgcmVz
dWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHZl
cmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3Vj
Y2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25T
dWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3aW5kb3cu
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnJlc3VsdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7CisKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOwor
fQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkgCit7CisgICAgdmFy
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgndGVzdCcpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVl
MScsICdteUtleTEnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1
ZTInLCAnbXlLZXkyJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFs
dWUzJywgJ215S2V5MycpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZh
bHVlNCcsICdteUtleTQnKSIpOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yKCkKK3sKKyAgICBk
ZWJ1Zygib3BlbkN1cnNvcjEiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCd0ZXN0Jywgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBrZXlS
YW5nZSA9IHdlYmtpdElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIpOworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcih7cmFu
Z2U6IGtleVJhbmdlfSkiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKKyAgICByZXN1bHQu
b25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5jdGlvbiBjdXJzb3JT
dWNjZXNzKCkKK3sKKyAgICBpZiAoZXZlbnQucmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hv
dWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7Cisg
ICAgICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgICAgICByZXN1bHQub25zdWNjZXNzID0g
Y3Vyc29yRW1wdHk7CisgICAgICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXZhbEFuZExvZygiZXZlbnQucmVz
dWx0LmRlbGV0ZSgpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC5yZXN1bHQu
dmFsdWUiLCAibXlWYWx1ZSIgKyBjb3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnJl
c3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1bmN0aW9uIGN1cnNvckVtcHR5KCkKK3sKKyAgICB2
ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHNob3VsZEJlTnVsbChldmVudC5yZXN1bHQp
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Cit9CisKK2Z1bmN0aW9uIGFkZE9i
amVjdCgpCit7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbigndGVzdCcs
IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywgJ215S2V5
MScpIik7CisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9
IG9wZW5DdXJzb3IyOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IyKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNv
cjIiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKHty
YW5nZToga2V5UmFuZ2V9KSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmplY3Q7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlT2JqZWN0KCkKK3sKKyAgICB2
ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHNob3VsZEJlTm9uTnVsbChldmVudC5yZXN1
bHQpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmdldCgnbXlLZXkxJykiKTsKKyAgICByZXN1bHQu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXN1bHQub25lcnJv
ciA9IHZlcmlmeU9iamVjdERlbGV0ZWQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0
ZWQoKQoreworICAgIHZlcmlmeUVycm9yRXZlbnQoZXZlbnQpOworICAgIGRvbmUoKTsKK30KKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWlu
ZGV4LWRlbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItaW5kZXgtZGVsZXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44ZGEwZGYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MzMgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNvci4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCduYW1lJykKK1BBU1MgJ29uc3VjY2Vz
cycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQ
QVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUg
c2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBldmVu
dCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnbWVzc2FnZScg
aW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBl
dmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRh
cmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFT
UyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0
LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworZGIgPSBldmVudC5yZXN1bHQKK2Ri
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlz
IHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRl
JyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitz
ZXRWZXJzaW9uU3VjY2VzcygpOgorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcg
aW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21l
c3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUK
K1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRy
dWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK3RyYW5zID0gZXZlbnQu
cmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykKK29iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCd0ZXN0SW5kZXgnLCAneCcpCitvYmplY3RTdG9yZS5hZGQoe3g6
IDF9LCAnbXlLZXkxJykKK29iamVjdFN0b3JlLmFkZCh7eDogMn0sICdteUtleTInKQorb2JqZWN0
U3RvcmUuYWRkKHt4OiAzfSwgJ215S2V5MycpCitvYmplY3RTdG9yZS5hZGQoe3g6IDR9LCAnbXlL
ZXk0JykKK29wZW5DdXJzb3IxCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCd0ZXN0Jywgd2Via2l0
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3RyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5k
ZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pCitQQVNTICdvbnN1
Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1
ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBm
aXJlIHNob3J0bHkuLi4KKworZXZlbnQucmVzdWx0LmRlbGV0ZSgpCitQQVNTIGV2ZW50LnJlc3Vs
dC5rZXkgaXMgY291bnRlcisrCitldmVudC5yZXN1bHQuY29udGludWUoKQorZXZlbnQucmVzdWx0
LmRlbGV0ZSgpCitQQVNTIGV2ZW50LnJlc3VsdC5rZXkgaXMgY291bnRlcisrCitldmVudC5yZXN1
bHQuY29udGludWUoKQorZXZlbnQucmVzdWx0LmRlbGV0ZSgpCitQQVNTIGV2ZW50LnJlc3VsdC5r
ZXkgaXMgY291bnRlcisrCitldmVudC5yZXN1bHQuY29udGludWUoKQorZXZlbnQucmVzdWx0LmRl
bGV0ZSgpCitQQVNTIGV2ZW50LnJlc3VsdC5rZXkgaXMgY291bnRlcisrCitldmVudC5yZXN1bHQu
Y29udGludWUoKQorUEFTUyBjb3VudGVyIGlzIDUKK3RyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jyku
aW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pCitQQVNTICdv
bnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMg
dHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3Vs
ZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcg
aW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21l
c3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUK
K1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRy
dWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZXZlbnQucmVz
dWx0IGlzIG51bGwKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3Rlc3QnLCB3ZWJraXRJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVz
dCcpCitvYmplY3RTdG9yZS5hZGQoe3g6IDF9LCAnbXlLZXkxJykKK1BBU1MgJ29uc3VjY2Vzcycg
aW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNT
ICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hv
cnRseS4uLgorCitvcGVuQ3Vyc29yMgoraW5kZXggPSBldmVudC5zb3VyY2UuaW5kZXgoJ3Rlc3RJ
bmRleCcpCitpbmRleC5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KQorUEFTUyAnb25zdWNj
ZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUK
K1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmly
ZSBzaG9ydGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2
ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdl
JyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNT
IGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQ
QVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJn
ZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIFtvYmplY3QgSURCQ3Vy
c29yXSBpcyBub24tbnVsbC4KK2V2ZW50LnJlc3VsdC5kZWxldGUoKQoraW5kZXguZ2V0KDEpCitF
cnJvciBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1Mg
J2NvZGUnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIHRydWUK
K1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVs
bCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNT
ICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZl
bnQudGFyZ2V0LkRPTkUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItaW5kZXgtZGVsZXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItaW5kZXgtZGVsZXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZDlmZmU4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1pbmRleC1kZWxldGUuaHRtbApAQCAtMCwwICsxLDEzNiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNvci4iKTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworCit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKCduYW1lJykiKTsKKyAgICB2ZXJpZnlSZXN1
bHQocmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVz
dWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgdmFyIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC5yZXN1bHQiKTsKKworICAgIHJlc3VsdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQo
cmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAg
cmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIp
OworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgd2luZG93LnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOworCisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiLCBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlQW5kSW5kZXgpOworfQor
CitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlQW5kSW5kZXgoKSAKK3sKKyAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3Rlc3QnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4
KCd0ZXN0SW5kZXgnLCAneCcpIik7CisKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
e3g6IDF9LCAnbXlLZXkxJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6
IDJ9LCAnbXlLZXkyJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDN9
LCAnbXlLZXkzJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDR9LCAn
bXlLZXk0JykiKTsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgZGVidWcoIm9w
ZW5DdXJzb3IxIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbigndGVz
dCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAga2V5UmFuZ2UgPSB3
ZWJraXRJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Io
e3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CisgICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30KKworZnVuY3Rpb24gY3Vy
c29yU3VjY2VzcygpCit7CisgICAgaWYgKGV2ZW50LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAg
IHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5pbmRleCgndGVzdEluZGV4Jykub3BlbkN1cnNvcih7
cmFuZ2U6IGtleVJhbmdlfSkiKTsKKyAgICAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CisgICAg
ICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKKyAgICAgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB2YXIgZGVsZXRlUmVzdWx0ID0gZXZhbEFuZExvZygiZXZlbnQucmVzdWx0LmRlbGV0ZSgpIik7
CisgICAgZGVsZXRlUmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICBzaG91bGRCZSgiZXZlbnQucmVzdWx0LmtleSIsICJjb3VudGVyKysiKTsKKyAgICBldmFsQW5k
TG9nKCJldmVudC5yZXN1bHQuY29udGludWUoKSIpOworfQorCitmdW5jdGlvbiBjdXJzb3JFbXB0
eSgpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICBzaG91bGRCZU51bGwo
ImV2ZW50LnJlc3VsdCIpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Cit9CisK
K2Z1bmN0aW9uIGFkZE9iamVjdCgpCit7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbigndGVzdCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCd0ZXN0JykiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6
IDF9LCAnbXlLZXkxJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKKyAgICByZXN1bHQu
b25zdWNjZXNzID0gb3BlbkN1cnNvcjI7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcjIoKQoreworICAgIGRlYnVn
KCJvcGVuQ3Vyc29yMiIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gZXZlbnQuc291cmNlLmlu
ZGV4KCd0ZXN0SW5kZXgnKSIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5D
dXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Cisg
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKKyAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVPYmplY3QoKQor
eworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgc2hvdWxkQmVOb25OdWxsKGV2
ZW50LnJlc3VsdCk7CisgICAgZXZhbEFuZExvZygiZXZlbnQucmVzdWx0LmRlbGV0ZSgpIik7Cisg
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXguZ2V0KDEpIik7CisgICAgcmVzdWx0Lm9uc3Vj
Y2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB2
ZXJpZnlPYmplY3REZWxldGVkOworfQorCitmdW5jdGlvbiB2ZXJpZnlPYmplY3REZWxldGVkKCkK
K3sKKyAgICB2ZXJpZnlFcnJvckV2ZW50KGV2ZW50KTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmM5MzEyNy4uYWEyMjhmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0xMi0xNyAgQW5kcmVpIFBvcGVz
Y3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSURCQ3Vyc29yOjpkZWxldGUgaXMgbm90IGltcGxlbWVudGVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTExMTAKKwor
ICAgICAgICBJbXBsZW1lbnQgSURCQ3Vyc29yOjpkZWxldGUuCisgICAgICAgIFNlZSBodHRwOi8v
ZHZjcy53My5vcmcvaGcvSW5kZXhlZERCL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI3dpZGwt
SURCQ3Vyc29yLWRlbGV0ZQorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItZGVsZXRlLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1p
bmRleC1kZWxldGUuaHRtbAorCisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3Rv
cmFnZS9JREJDdXJzb3IuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5pZGw6CisgICAg
ICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6SURCQ3Vyc29yQmFja2VuZEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpsb2FkQ3VycmVudFJvdyk6CisgICAgICAg
ICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yQmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJ
bnRlcm5hbCk6CisgICAgICAgICogc3RvcmFnZS9JREJLZXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5Ojpmcm9tUXVlcnkpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpkZWxldGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwpOgorCiAyMDEwLTEyLTE3ICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkg
U2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCmluZGV4IDFhYWZmOWQuLjQ0NGMxMDkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJDdXJzb3IuY3BwCkBAIC04NywxMCArODcsMTAgQEAgdm9pZCBJREJDdXJzb3I6OmNv
bnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkN1cnNvcjo6cmVtb3ZlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsK
LSAgICBtX2JhY2tlbmQtPnJlbW92ZShyZXF1ZXN0LCBlYyk7CisgICAgbV9iYWNrZW5kLT5kZWxl
dGVGdW5jdGlvbihyZXF1ZXN0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKaW5kZXggNmYzYTk0
MC4uNTRiZjUxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxJREJBbnk+IHZhbHVlKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiB1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IHJlbW92ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVx
dWVzdCosIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkN1cnNvci5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmlk
bAppbmRleCAyZDI1MGQ1Li4xMmQwYmFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmlkbApAQCAtNDIsOCAr
NDIsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIC8vICAgIHJhaXNlcyAoSURCRGF0YWJh
c2VFeGNlcHRpb24pOwogICAgICAgICBbSW1wbGVtZW50YXRpb25GdW5jdGlvbj1jb250aW51ZUZ1
bmN0aW9uXSB2b2lkIGNvbnRpbnVlKGluIFtPcHRpb25hbF0gSURCS2V5IGtleSkKICAgICAgICAg
ICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwotICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgotICAgICAgICAvL1tDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJS
ZXF1ZXN0IHJlbW92ZSgpCi0gICAgICAgIC8vICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50
YXRpb25GdW5jdGlvbj1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoKQorICAgICAg
ICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4IDhkNWM4YTEuLjliNGU0ZjEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtNDUsMTMgKzQ1LDE0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1
cnNvckJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFz
c093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZh
bHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQor
SURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFi
YXNlKiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5
LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2Uq
IG9iamVjdFN0b3JlKQogICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKICAgICAsIG1fa2V5UmFu
Z2Uoa2V5UmFuZ2UpCiAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgLCBtX3F1ZXJ5
KHF1ZXJ5KQogICAgICwgbV9pc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvcihpc1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUN1cnNvcikKICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisg
ICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogewogICAgIGxvYWRDdXJyZW50Um93KCk7
CiB9CkBAIC0xNTgsNTAgKzE1OSwzNCBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250
aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvci5nZXQoKSk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OnJlbW92ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0
aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gdGhpczsK
LSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAg
aWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJD
dXJzb3JCYWNrZW5kSW1wbDo6cmVtb3ZlSW50ZXJuYWwsIGN1cnNvciwgY2FsbGJhY2tzKSkpCisg
ICAgaWYgKCFtX3F1ZXJ5IHx8IG1fY3VycmVudElkID09IEludmFsaWRJZCB8fCAhbV9pc1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUN1cnNvcikgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpOT1RfQUxMT1dFRF9FUlI7Ci19Ci0KLXZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnJl
bW92ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNv
ckJhY2tlbmRJbXBsPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIGRvZXNuJ3QgdXBkYXRlIGluZGV4ZXMuIEl0
J3MgZGFuZ2Vyb3VzIHRvIGNhbGwgaW4gaXRzIGN1cnJlbnQgc3RhdGUuCi0gICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VU5LTk9XTl9FUlIsICJOb3QgaW1wbGVtZW50ZWQuIikpOwotICAgIHJldHVybjsKLQotICAgIGlm
ICghY3Vyc29yLT5tX3F1ZXJ5IHx8IGN1cnNvci0+bV9jdXJyZW50SWQgPT0gSW52YWxpZElkKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgdGhlIHByb3BlciBlcnJvciBjb2RlIHdoZW4gaXQncyBz
cGVjY2VkLgotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIk9wZXJhdGlvbiBub3QgcG9z
c2libGUuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHNxbCA9ICJE
RUxFVEUgRlJPTSBPYmplY3RTdG9yZURhdGEgV0hFUkUgaWQgPSA/IjsKLSAgICBTUUxpdGVTdGF0
ZW1lbnQgZGVsZXRlUXVlcnkoY3Vyc29yLT5kYXRhYmFzZSgpLCBzcWwpOwotICAgIAotICAgIGJv
b2wgb2sgPSBkZWxldGVRdWVyeS5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7Ci0gICAgQVNTRVJU
X1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgotICAgIGRl
bGV0ZVF1ZXJ5LmJpbmRJbnQ2NCgxLCBjdXJzb3ItPm1fY3VycmVudElkKTsKLSAgICBvayA9IGRl
bGV0ZVF1ZXJ5LnN0ZXAoKSA9PSBTUUxSZXN1bHREb25lOwotICAgIEFTU0VSVF9VTlVTRUQob2ss
IG9rKTsgLy8gRklYTUU6IEJldHRlciBlcnJvciBoYW5kbGluZy4KLQotICAgIGN1cnNvci0+bV9j
dXJyZW50SWQgPSBJbnZhbGlkSWQ7Ci0gICAgY3Vyc29yLT5tX2N1cnJlbnRTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgPSAwOwotICAgIGN1cnNvci0+bV9jdXJyZW50SURCS2V5VmFsdWUgPSAwOwotICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CisgICAgLy8gRklYTUU6IENoZWNrIHRoYXQgdGhlIHRy
YW5zYWN0aW9uIGlzIFJFQURfV1JJVEUKKyAgICAvLyBpZiAobV90cmFuc2FjdGlvbi0+bW9kZSgp
ID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG11
c3QgcmV0dXJuIFJFQURfT05MWV9FUlIgaGVyZS4gRml4IHRoaXMgd2hlbiB3ZSB1cGRhdGUgSURC
RGF0YWJhc2VFeGNlcHRpb24gdG8gbWF0Y2ggdGhlIHNwZWMuCisgICAgICAgIC8vIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKKyAgICAgICAgLy8gcmV0dXJuOwor
ICAgIC8vIH0KKyAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBtX2N1cnJlbnRJREJLZXlWYWx1ZSA/
IG1fY3VycmVudElEQktleVZhbHVlIDogbV9jdXJyZW50S2V5OworICAgIG1fb2JqZWN0U3RvcmUt
PmRlbGV0ZUZ1bmN0aW9uKGtleS5yZWxlYXNlKCksIHBycENhbGxiYWNrcywgbV90cmFuc2FjdGlv
bi5nZXQoKSwgZWMpOwogfQogCisKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmxvYWRDdXJy
ZW50Um93KCkKIHsKLSAgICAvLyBUaGUgY29sdW1uIG51bWJlcnMgZGVwZW5kIG9uIHRoZSBxdWVy
eSBpbiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yLgorICAgIC8vIFRoZSBj
b2x1bW4gbnVtYmVycyBkZXBlbmQgb24gdGhlIHF1ZXJ5IGluIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCBvcgorICAgIC8vIElEQkluZGV4QmFja2VuZEltcGw6
Om9wZW5DdXJzb3JJbnRlcm5hbC4KICAgICBtX2N1cnJlbnRJZCA9IG1fcXVlcnktPmdldENvbHVt
bkludDY0KDApOwogICAgIG1fY3VycmVudEtleSA9IElEQktleTo6ZnJvbVF1ZXJ5KCptX3F1ZXJ5
LCAxKTsKICAgICBpZiAobV9pc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvcikKICAgICAgICAg
bV9jdXJyZW50U2VyaWFsaXplZFNjcmlwdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGVGcm9tV2lyZShtX3F1ZXJ5LT5nZXRDb2x1bW5UZXh0KDQpKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fY3VycmVudElEQktleVZhbHVlID0gSURCS2V5Ojpmcm9tUXVlcnkoKm1fcXVlcnksIDQp
OworCisgICAgbV9jdXJyZW50SURCS2V5VmFsdWUgPSBJREJLZXk6OmZyb21RdWVyeSgqbV9xdWVy
eSwgNSk7CiB9CiAKIFNRTGl0ZURhdGFiYXNlJiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGF0YWJh
c2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaAppbmRleCBiNjQ2
ZjFjLi5lM2E4OTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAt
NDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOwogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDsKIGNsYXNzIElEQktleVJhbmdlOwot
Y2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDsKK2NsYXNzIElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlNRTGl0ZURhdGFiYXNlOwogY2xhc3MgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgU1FMaXRlRGF0YWJhc2U7CkBAIC00OSw5ICs0
OSw5IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSURCQ3Vyc29yQmFj
a2VuZEltcGwgOiBwdWJsaWMgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShJREJTUUxp
dGVEYXRhYmFzZSogZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJ
REJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50
PiBxdWVyeSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW1wbD4gY3JlYXRlKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRp
cmVjdGlvbiwgUGFzc093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFs
aXplZFNjcmlwdFZhbHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UqIG9iamVjdFN0b3JlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1wbChk
YXRhYmFzZSwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnksIGlzU2VyaWFsaXplZFNjcmlwdFZh
bHVlQ3Vyc29yLCB0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
QkN1cnNvckJhY2tlbmRJbXBsKGRhdGFiYXNlLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBxdWVyeSwg
aXNTZXJpYWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZSkp
OwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW1wbCgpOwogCkBAIC02MCwx
NyArNjAsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJBbnk+IHZhbHVl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNl
cHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yQmFja2VuZEltcGwoSURCU1FM
aXRlRGF0YWJhc2UqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSURCQ3Vyc29yOjpEaXJlY3Rp
b24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50PiBxdWVyeSwgYm9vbCBpc1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAg
SURCQ3Vyc29yQmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50
PiBxdWVyeSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAK
ICAgICB2b2lkIGxvYWRDdXJyZW50Um93KCk7CiAgICAgU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNl
KCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICBz
dGF0aWMgdm9pZCBjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElt
cGw+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgc3RhdGljIGNvbnN0IGludDY0
X3QgSW52YWxpZElkID0gLTE7CiAKQEAgLTgzLDExICs4MiwxMyBAQCBwcml2YXRlOgogICAgIGlu
dDY0X3QgbV9jdXJyZW50SWQ7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5OwogCi0g
ICAgLy8gT25seSBvbmUgb2YgdGhlc2Ugd2lsbCBldmVyIGJlIHVzZWQgZm9yIGVhY2ggaW5zdGFu
Y2UuIFdoaWNoIGRlcGVuZHMgb24gbV9pc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvci4KKyAg
ICAvLyBtX2lzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yIHdpbGwgb25seSBiZSBhdmFpbGFi
bGUgZm9yIG9iamVjdCBjdXJzb3JzLgogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1fY3VycmVudFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKyAgICAvLyBGSVhNRTogbWFrZSB0aGUg
cHJpbWFyeSBrZXkgYXZhaWxhYmxlIHZpYSBzY3JpcHQgZm9yIGFsbCB0eXBlcyBvZiBjdXJzb3Jz
LgogICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudElEQktleVZhbHVlOwogCiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBtX29iamVjdFN0b3JlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmgKaW5kZXggZTFhYzI3NC4uMGQxMzJjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2Uv
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggNTk3YThjMi4uY2IzMjY3MyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtNzAsNyArNzAsNyBA
QCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cgogewogICAgIC8vIFNldmVyYWwgZmlsZXMgZGVwZW5k
IG9uIHRoaXMgb3JkZXIgb2Ygc2VsZWN0cy4KICAgICBTdHJpbmcgc3FsID0gU3RyaW5nKCJTRUxF
Q1QgSW5kZXhEYXRhLmlkLCBJbmRleERhdGEua2V5U3RyaW5nLCBJbmRleERhdGEua2V5RGF0ZSwg
SW5kZXhEYXRhLmtleU51bWJlciwgIikKLSAgICAgICAgICAgICAgICAgKyAob2JqZWN0Q3Vyc29y
ID8gIk9iamVjdFN0b3JlRGF0YS52YWx1ZSAiIDogIk9iamVjdFN0b3JlRGF0YS5rZXlTdHJpbmcs
IE9iamVjdFN0b3JlRGF0YS5rZXlEYXRlLCBPYmplY3RTdG9yZURhdGEua2V5TnVtYmVyICIpCisg
ICAgICAgICAgICAgICAgICsgKCJPYmplY3RTdG9yZURhdGEudmFsdWUsIE9iamVjdFN0b3JlRGF0
YS5rZXlTdHJpbmcsIE9iamVjdFN0b3JlRGF0YS5rZXlEYXRlLCBPYmplY3RTdG9yZURhdGEua2V5
TnVtYmVyICIpCiAgICAgICAgICAgICAgICAgICsgIkZST00gSW5kZXhEYXRhIElOTkVSIEpPSU4g
T2JqZWN0U3RvcmVEYXRhIE9OIEluZGV4RGF0YS5vYmplY3RTdG9yZURhdGFJZCA9IE9iamVjdFN0
b3JlRGF0YS5pZCBXSEVSRSAiOwogCiAgICAgYm9vbCBsb3dlckJvdW5kID0gcmFuZ2UgJiYgcmFu
Z2UtPmxvd2VyKCk7CkBAIC0xMDQsNyArMTA0LDEyIEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1w
bDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gY3Vyc29yID0gSURCQ3Vyc29yQmFja2VuZEltcGw6OmNyZWF0ZShpbmRleC0+bV9k
YXRhYmFzZS5nZXQoKSwgcmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnkucmVsZWFzZSgpLCBvYmplY3RD
dXJzb3IsIHRyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IHRy
YW5zYWN0aW9uLT5vYmplY3RTdG9yZShpbmRleC0+bV9zdG9yZU5hbWUsIGVjKTsKKyAgICBBU1NF
UlQob2JqZWN0U3RvcmUuZ2V0KCkpOworICAgIEFTU0VSVCghZWMpOworCisgICAgUmVmUHRyPElE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGN1cnNvciA9IElEQkN1cnNvckJhY2tlbmRJbXBsOjpj
cmVhdGUoaW5kZXgtPm1fZGF0YWJhc2UuZ2V0KCksIHJhbmdlLCBkaXJlY3Rpb24sIHF1ZXJ5LnJl
bGVhc2UoKSwgb2JqZWN0Q3Vyc29yLCB0cmFuc2FjdGlvbi5nZXQoKSwgb2JqZWN0U3RvcmUuZ2V0
KCkpOwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvci5yZWxlYXNlKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9J
REJLZXkuY3BwCmluZGV4IGQ0MDAzODIuLjgyNmE1MGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Rv
cmFnZS9JREJLZXkuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJLZXkuY3BwCkBAIC01Niw2
ICs1Niw5IEBAIElEQktleTo6fklEQktleSgpCiAKIFBhc3NSZWZQdHI8SURCS2V5PiBJREJLZXk6
OmZyb21RdWVyeShTUUxpdGVTdGF0ZW1lbnQmIHF1ZXJ5LCBpbnQgYmFzZUNvbHVtbikKIHsKKyAg
ICBpZiAocXVlcnkuY29sdW1uQ291bnQoKSA8PSBiYXNlQ29sdW1uKQorICAgICAgICByZXR1cm4g
MDsKKwogICAgIGlmICghcXVlcnkuaXNDb2x1bW5OdWxsKGJhc2VDb2x1bW4pKQogICAgICAgICBy
ZXR1cm4gSURCS2V5OjpjcmVhdGUocXVlcnkuZ2V0Q29sdW1uVGV4dChiYXNlQ29sdW1uKSk7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNw
cCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBm
YjA4ZTM3Li4yMmQzYjhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCkBAIC0yODYsMTYgKzI4NiwzNSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NS
ZQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewotICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShvYmplY3RTdG9y
ZS0+c3FsaXRlRGF0YWJhc2UoKSwgIkRFTEVURSBGUk9NIE9iamVjdFN0b3JlRGF0YSAiICsgd2hl
cmVDbGF1c2Uoa2V5LmdldCgpKSk7Ci0gICAgYm9vbCBvayA9IHF1ZXJ5LnByZXBhcmUoKSA9PSBT
UUxSZXN1bHRPazsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgaWRRdWVyeShvYmplY3RTdG9yZS0+c3Fs
aXRlRGF0YWJhc2UoKSwgIlNFTEVDVCBpZCBGUk9NIE9iamVjdFN0b3JlRGF0YSAiICsgd2hlcmVD
bGF1c2Uoa2V5LmdldCgpKSk7CisgICAgYm9vbCBvayA9IGlkUXVlcnkucHJlcGFyZSgpID09IFNR
TFJlc3VsdE9rOwogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsgLy8gRklYTUU6IEJldHRlciBl
cnJvciBoYW5kbGluZz8KLQotICAgIGJpbmRXaGVyZUNsYXVzZShxdWVyeSwgb2JqZWN0U3RvcmUt
PmlkKCksIGtleS5nZXQoKSk7Ci0gICAgaWYgKHF1ZXJ5LnN0ZXAoKSAhPSBTUUxSZXN1bHREb25l
KSB7CisgICAgYmluZFdoZXJlQ2xhdXNlKGlkUXVlcnksIG9iamVjdFN0b3JlLT5pZCgpLCBrZXku
Z2V0KCkpOworICAgIGlmIChpZFF1ZXJ5LnN0ZXAoKSAhPSBTUUxSZXN1bHRSb3cpIHsKICAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6Tk9UX0ZPVU5EX0VSUiwgIktleSBkb2VzIG5vdCBleGlzdCBpbiB0aGUgb2Jq
ZWN0IHN0b3JlLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGludDY0X3QgaWQg
PSBpZFF1ZXJ5LmdldENvbHVtbkludDY0KDApOworCisgICAgU1FMaXRlU3RhdGVtZW50IG9zUXVl
cnkob2JqZWN0U3RvcmUtPnNxbGl0ZURhdGFiYXNlKCksICJERUxFVEUgRlJPTSBPYmplY3RTdG9y
ZURhdGEgV0hFUkUgaWQgPSA/Iik7CisgICAgb2sgPSBvc1F1ZXJ5LnByZXBhcmUoKSA9PSBTUUxS
ZXN1bHRPazsKKyAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7IC8vIEZJWE1FOiBCZXR0ZXIgZXJy
b3IgaGFuZGxpbmc/CisKKyAgICBvc1F1ZXJ5LmJpbmRJbnQ2NCgxLCBpZCk7CisKKyAgICBvayA9
IG9zUXVlcnkuc3RlcCgpID09IFNRTFJlc3VsdERvbmU7CisgICAgQVNTRVJUX1VOVVNFRChvaywg
b2spOworCisgICAgU1FMaXRlU3RhdGVtZW50IGluZGV4UXVlcnkob2JqZWN0U3RvcmUtPnNxbGl0
ZURhdGFiYXNlKCksICJERUxFVEUgRlJPTSBJbmRleERhdGEgV0hFUkUgb2JqZWN0U3RvcmVEYXRh
SWQgPSA/Iik7CisgICAgb2sgPSBpbmRleFF1ZXJ5LnByZXBhcmUoKSA9PSBTUUxSZXN1bHRPazsK
KyAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7IC8vIEZJWE1FOiBCZXR0ZXIgZXJyb3IgaGFuZGxp
bmc/CisKKyAgICBpbmRleFF1ZXJ5LmJpbmRJbnQ2NCgxLCBpZCk7CisKKyAgICBvayA9IGluZGV4
UXVlcnkuc3RlcCgpID09IFNRTFJlc3VsdERvbmU7CisgICAgQVNTRVJUX1VOVVNFRChvaywgb2sp
OworCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKIH0KIApAQCAtNDM2LDcgKzQ1NSw3IEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Vyc29yID0gSURCQ3Vyc29yQmFja2Vu
ZEltcGw6OmNyZWF0ZShvYmplY3RTdG9yZS0+bV9kYXRhYmFzZS5nZXQoKSwgcmFuZ2UsIGRpcmVj
dGlvbiwgcXVlcnkucmVsZWFzZSgpLCB0cnVlLCB0cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGN1cnNvciA9IElEQkN1cnNvckJhY2tlbmRJ
bXBsOjpjcmVhdGUob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2UuZ2V0KCksIHJhbmdlLCBkaXJlY3Rp
b24sIHF1ZXJ5LnJlbGVhc2UoKSwgdHJ1ZSwgdHJhbnNhY3Rpb24uZ2V0KCksIG9iamVjdFN0b3Jl
LmdldCgpKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhjdXJzb3IucmVsZWFzZSgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNTIyYWFmZi4uMTJmYWYxZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTAtMTItMTcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElEQkN1
cnNvcjo6ZGVsZXRlIGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMTEwCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURC
Q3Vyc29yLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cmVtb3ZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3Jj
L0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JC
YWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBzcmMvSURCQ3Vyc29yQmFj
a2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkN1cnNvckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJDdXJzb3JJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICog
c3JjL1dlYklEQkN1cnNvckltcGwuaDoKKwogMjAxMC0xMi0xNyAgSmFtZXMgU2ltb25zZW4gIDxz
aW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVy
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaCBiL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKaW5kZXggODhiOGIyMi4uOThiMmI5
NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oCkBAIC01NSw3ICs1NSw5IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlJiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rp
b24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZShXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIFdLIHJvbGwuCisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZShXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0
aW9uQ29kZSYgZWMpIHsgZGVsZXRlRnVuY3Rpb24oY2FsbGJhY2tzLCBlYyk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJlbW92ZShjYWxsYmFja3MsIGVjKTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgV2ViSURCQ3Vyc29yKCkgeyB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNv
ckJhY2tlbmRQcm94eS5jcHAKaW5kZXggOTQ0OTFmOS4uZWM3YmY2MyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcApAQCAtODUsOSArODUsOSBAQCB2
b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPAogICAgIG1faWRiQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9u
KGtleSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCi12b2lk
IElEQkN1cnNvckJhY2tlbmRQcm94eTo6cmVtb3ZlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6
OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIG1faWRiQ3Vyc29yLT5yZW1vdmUobmV3IFdlYklEQkNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOworICAgIG1faWRiQ3Vyc29yLT5kZWxldGVGdW5jdGlv
bihuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29y
QmFja2VuZFByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94
eS5oCmluZGV4IDBhN2EyODguLjY1MGRkZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
dXJzb3JCYWNrZW5kUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkFueT4gdmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBJ
REJDdXJzb3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4pOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKaW5kZXggZWNhNWQ0Mi4uNTE2
NTU3NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCkBAIC04MCw5
ICs4MCw5IEBAIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6Y29udGludWVGdW5jdGlvbihjb25zdCBX
ZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiBjCiAgICAgbV9pZGJDdXJzb3JCYWNrZW5k
LT5jb250aW51ZUZ1bmN0aW9uKGtleSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFj
a3MpLCBlYyk7CiB9CiAKLXZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6cmVtb3ZlKFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViSURCQ3Vyc29y
SW1wbDo6ZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+cmVtb3ZlKElEQkNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgZWMpOworICAgIG1faWRiQ3Vyc29yQmFja2Vu
ZC0+ZGVsZXRlRnVuY3Rpb24oSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3MpLCBl
Yyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
dXJzb3JJbXBsLmgKaW5kZXggMzlmYTQ0Yi4uN2Y4ZWJkNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDdXJzb3JJbXBsLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB2YWx1ZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXZWJJREJLZXkmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYs
IFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGludWVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJF
eGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJJREJDYWxsYmFja3Mq
LCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdl
YklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAogIHByaXZhdGU6CiAgICAgV1RG
OjpSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9pZGJDdXJzb3JC
YWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76891</attachid>
            <date>2010-12-17 10:44:21 -0800</date>
            <delta_ts>2010-12-20 06:31:41 -0800</delta_ts>
            <desc>jorlow&apos;s comments 2</desc>
            <filename>delete.patch</filename>
            <type>text/plain</type>
            <size>39492</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">Y29tbWl0IDNlM2ZlZDcxZjljNmI1NjQ1NjY3N2RmYmI5YTBiNjBjNDhkMWMyMjkKQXV0aG9yOiBB
bmRyZWkgUG9wZXNjdSA8YW5kcmVpcEBnb29nbGUuY29tPgpEYXRlOiAgIEZyaSBEZWMgMTcgMTU6
MTY6NTYgMjAxMCArMDAwMAoKICAgIEltcGxlbWVudCBJREJDdXJzb3I6OmRlbGV0ZQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhMWRiNmM5Li5lMjRiMGI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMTcgIEFu
ZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElEQkN1cnNvcjo6ZGVsZXRlIGlzIG5vdCBpbXBs
ZW1lbnRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxMTEwCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgt
ZGVsZXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWluZGV4LWRlbGV0ZS5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0xNyAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRh
dGUgQ2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNWQ3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzMiBAQAorVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKword2Via2l0SW5kZXhlZERCLm9wZW4oJ25hbWUnKQorUEFTUyAn
b25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlz
IHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91
bGQgZmlyZSBzaG9ydGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQn
IGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdt
ZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVl
CitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVu
dC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitkYiA9IGV2ZW50LnJl
c3VsdAorZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorUEFTUyAnb25zdWNjZXNzJyBpbiBy
ZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3Jl
YWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5
Li4uCisKK3NldFZlcnNpb25TdWNjZXNzKCk6CitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAn
cmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQor
UEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQg
aXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nl
c3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BB
U1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKwordHJhbnMg
PSBldmVudC5yZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwg
b2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3Rlc3Qn
KQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMScsICdteUtleTEnKQorb2JqZWN0U3RvcmUuYWRk
KCdteVZhbHVlMicsICdteUtleTInKQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlMycsICdteUtl
eTMnKQorb2JqZWN0U3RvcmUuYWRkKCdteVZhbHVlNCcsICdteUtleTQnKQorb3BlbkN1cnNvcjEK
K3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3Rlc3QnLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFKQordHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5
UmFuZ2V9KQorUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJv
cicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVl
CitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCisKK2V2ZW50LnJlc3VsdC5kZWxldGUo
KQorUEFTUyBldmVudC5yZXN1bHQudmFsdWUgaXMgIm15VmFsdWUxIgorZXZlbnQucmVzdWx0LmNv
bnRpbnVlKCkKK2V2ZW50LnJlc3VsdC5kZWxldGUoKQorUEFTUyBldmVudC5yZXN1bHQudmFsdWUg
aXMgIm15VmFsdWUyIgorZXZlbnQucmVzdWx0LmNvbnRpbnVlKCkKK2V2ZW50LnJlc3VsdC5kZWxl
dGUoKQorUEFTUyBldmVudC5yZXN1bHQudmFsdWUgaXMgIm15VmFsdWUzIgorZXZlbnQucmVzdWx0
LmNvbnRpbnVlKCkKK2V2ZW50LnJlc3VsdC5kZWxldGUoKQorUEFTUyBldmVudC5yZXN1bHQudmFs
dWUgaXMgIm15VmFsdWU0IgorZXZlbnQucmVzdWx0LmNvbnRpbnVlKCkKK1BBU1MgY291bnRlciBp
cyA1Cit0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5n
ZX0pCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBp
biByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0Fu
IGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BB
U1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFs
c2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2
ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25z
dWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVl
CitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1dB
Uk46IHNob3VsZEJlKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzCitQQVNTIG51bGwgaXMgbnVs
bAordHJhbnMgPSBkYi50cmFuc2FjdGlvbigndGVzdCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpCitvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykKK29iamVj
dFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVz
dWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFk
eVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4u
LgorCitvcGVuQ3Vyc29yMgorb2JqZWN0U3RvcmUub3BlbkN1cnNvcih7cmFuZ2U6IGtleVJhbmdl
fSkKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGlu
IHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4g
ZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFT
UyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxz
ZQorUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZl
bnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1
Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
K1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFT
UyBbb2JqZWN0IElEQkN1cnNvcl0gaXMgbm9uLW51bGwuCitldmVudC5yZXN1bHQuZGVsZXRlKCkK
K29iamVjdFN0b3JlLmdldCgnbXlLZXkxJykKK0Vycm9yIGV2ZW50IGZpcmVkOgorUEFTUyAncmVz
dWx0JyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFT
UyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0
cnVlCitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2Vzcycg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBp
cyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBl
dmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42OWM2ZTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0ZS5odG1sCkBAIC0wLDAgKzEsMTMyIEBACis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuQ3Vyc29yLiIpOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK3Rlc3QoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
cmVzdWx0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ25hbWUnKSIpOworICAg
IHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsK
KyAgICB2YXIgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnJlc3VsdCIpOworCisgICAgcmVz
dWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHZl
cmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3Vj
Y2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25T
dWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3aW5kb3cu
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnJlc3VsdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IG9wZW5DdXJzb3I7CisKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUpOwor
fQorCitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkgCit7CisgICAgdmFy
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgndGVzdCcpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZhbHVl
MScsICdteUtleTEnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1
ZTInLCAnbXlLZXkyJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFs
dWUzJywgJ215S2V5MycpIik7CisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuYWRkKCdteVZh
bHVlNCcsICdteUtleTQnKSIpOworfQorCitmdW5jdGlvbiBvcGVuQ3Vyc29yKCkKK3sKKyAgICBk
ZWJ1Zygib3BlbkN1cnNvcjEiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0
aW9uKCd0ZXN0Jywgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBrZXlS
YW5nZSA9IHdlYmtpdElEQktleVJhbmdlLmxvd2VyQm91bmQoIm15S2V5MSIpOworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jykub3BlbkN1cnNvcih7cmFu
Z2U6IGtleVJhbmdlfSkiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKKyAgICByZXN1bHQu
b25zdWNjZXNzID0gY3Vyc29yU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIGNvdW50ZXIgPSAxOworfQorCitmdW5jdGlvbiBjdXJzb3JT
dWNjZXNzKCkKK3sKKyAgICBpZiAoZXZlbnQucmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgc2hv
dWxkQmUoImNvdW50ZXIiLCAiNSIpOworICAgICAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJ0cmFu
cy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7Cisg
ICAgICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgICAgICByZXN1bHQub25zdWNjZXNzID0g
Y3Vyc29yRW1wdHk7CisgICAgICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXZhbEFuZExvZygiZXZlbnQucmVz
dWx0LmRlbGV0ZSgpIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC5yZXN1bHQu
dmFsdWUiLCAibXlWYWx1ZSIgKyBjb3VudGVyKyspOworICAgIGV2YWxBbmRMb2coImV2ZW50LnJl
c3VsdC5jb250aW51ZSgpIik7Cit9CisKK2Z1bmN0aW9uIGN1cnNvckVtcHR5KCkKK3sKKyAgICB2
ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHNob3VsZEJlTnVsbChldmVudC5yZXN1bHQp
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Cit9CisKK2Z1bmN0aW9uIGFkZE9i
amVjdCgpCit7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbigndGVzdCcs
IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgb2JqZWN0U3RvcmUgPSBl
dmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykiKTsKKyAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUxJywgJ215S2V5
MScpIik7CisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9
IG9wZW5DdXJzb3IyOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5DdXJzb3IyKCkKK3sKKyAgICBkZWJ1Zygib3BlbkN1cnNv
cjIiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKHty
YW5nZToga2V5UmFuZ2V9KSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSBkZWxldGVPYmplY3Q7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZGVsZXRlT2JqZWN0KCkKK3sKKyAgICB2
ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHNob3VsZEJlTm9uTnVsbChldmVudC5yZXN1
bHQpOworICAgIGV2YWxBbmRMb2coImV2ZW50LnJlc3VsdC5kZWxldGUoKSIpOworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmdldCgnbXlLZXkxJykiKTsKKyAgICByZXN1bHQu
b25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXN1bHQub25lcnJv
ciA9IHZlcmlmeU9iamVjdERlbGV0ZWQ7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeU9iamVjdERlbGV0
ZWQoKQoreworICAgIHZlcmlmeUVycm9yRXZlbnQoZXZlbnQpOworICAgIGRvbmUoKTsKK30KKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWlu
ZGV4LWRlbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItaW5kZXgtZGVsZXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44ZGEwZGYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MzMgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNvci4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK3dlYmtpdEluZGV4ZWREQi5vcGVuKCduYW1lJykKK1BBU1MgJ29uc3VjY2Vz
cycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQ
QVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUg
c2hvcnRseS4uLgorCitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBldmVu
dCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnbWVzc2FnZScg
aW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBl
dmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRh
cmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFT
UyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0
LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworZGIgPSBldmVudC5yZXN1bHQKK2Ri
LnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykKK1BBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlz
IHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRl
JyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hvcnRseS4uLgorCitz
ZXRWZXJzaW9uU3VjY2VzcygpOgorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcg
aW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21l
c3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUK
K1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRy
dWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK3RyYW5zID0gZXZlbnQu
cmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBz
dG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCd0ZXN0JykKK29iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KCd0ZXN0SW5kZXgnLCAneCcpCitvYmplY3RTdG9yZS5hZGQoe3g6
IDF9LCAnbXlLZXkxJykKK29iamVjdFN0b3JlLmFkZCh7eDogMn0sICdteUtleTInKQorb2JqZWN0
U3RvcmUuYWRkKHt4OiAzfSwgJ215S2V5MycpCitvYmplY3RTdG9yZS5hZGQoe3g6IDR9LCAnbXlL
ZXk0JykKK29wZW5DdXJzb3IxCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCd0ZXN0Jywgd2Via2l0
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3RyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5k
ZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pCitQQVNTICdvbnN1
Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1
ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBm
aXJlIHNob3J0bHkuLi4KKworZXZlbnQucmVzdWx0LmRlbGV0ZSgpCitQQVNTIGV2ZW50LnJlc3Vs
dC5rZXkgaXMgY291bnRlcisrCitldmVudC5yZXN1bHQuY29udGludWUoKQorZXZlbnQucmVzdWx0
LmRlbGV0ZSgpCitQQVNTIGV2ZW50LnJlc3VsdC5rZXkgaXMgY291bnRlcisrCitldmVudC5yZXN1
bHQuY29udGludWUoKQorZXZlbnQucmVzdWx0LmRlbGV0ZSgpCitQQVNTIGV2ZW50LnJlc3VsdC5r
ZXkgaXMgY291bnRlcisrCitldmVudC5yZXN1bHQuY29udGludWUoKQorZXZlbnQucmVzdWx0LmRl
bGV0ZSgpCitQQVNTIGV2ZW50LnJlc3VsdC5rZXkgaXMgY291bnRlcisrCitldmVudC5yZXN1bHQu
Y29udGludWUoKQorUEFTUyBjb3VudGVyIGlzIDUKK3RyYW5zLm9iamVjdFN0b3JlKCd0ZXN0Jyku
aW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pCitQQVNTICdv
bnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMg
dHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3Vs
ZCBmaXJlIHNob3J0bHkuLi4KKworU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcg
aW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21l
c3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUK
K1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRy
dWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZXZlbnQucmVz
dWx0IGlzIG51bGwKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3Rlc3QnLCB3ZWJraXRJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKQorb2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVz
dCcpCitvYmplY3RTdG9yZS5hZGQoe3g6IDF9LCAnbXlLZXkxJykKK1BBU1MgJ29uc3VjY2Vzcycg
aW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0cnVlCitQQVNT
ICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxkIGZpcmUgc2hv
cnRseS4uLgorCitvcGVuQ3Vyc29yMgoraW5kZXggPSBldmVudC5zb3VyY2UuaW5kZXgoJ3Rlc3RJ
bmRleCcpCitpbmRleC5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KQorUEFTUyAnb25zdWNj
ZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUK
K1BBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmly
ZSBzaG9ydGx5Li4uCisKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2
ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdl
JyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNT
IGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQ
QVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJn
ZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIFtvYmplY3QgSURCQ3Vy
c29yXSBpcyBub24tbnVsbC4KK2V2ZW50LnJlc3VsdC5kZWxldGUoKQoraW5kZXguZ2V0KDEpCitF
cnJvciBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1Mg
J2NvZGUnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIHRydWUK
K1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVs
bCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNT
ICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZl
bnQudGFyZ2V0LkRPTkUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItaW5kZXgtZGVsZXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItaW5kZXgtZGVsZXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZDlmZmU4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1pbmRleC1kZWxldGUuaHRtbApAQCAtMCwwICsxLDEzNiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbkN1cnNvci4iKTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworCit0ZXN0KCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKCduYW1lJykiKTsKKyAgICB2ZXJpZnlSZXN1
bHQocmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVz
dWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgdmFyIGRi
ID0gZXZhbEFuZExvZygiZGIgPSBldmVudC5yZXN1bHQiKTsKKworICAgIHJlc3VsdCA9IGV2YWxB
bmRMb2coImRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9uJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQo
cmVzdWx0KTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gc2V0VmVyc2lvblN1Y2Nlc3M7CisgICAg
cmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
c2V0VmVyc2lvblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9uU3VjY2VzcygpOiIp
OworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgd2luZG93LnRyYW5zID0gZXZh
bEFuZExvZygidHJhbnMgPSBldmVudC5yZXN1bHQiKTsKKyAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgIHRyYW5zLm9uY29tcGxldGUgPSBvcGVuQ3Vyc29yOworCisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiLCBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlQW5kSW5kZXgpOworfQor
CitmdW5jdGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlQW5kSW5kZXgoKSAKK3sKKyAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3Rlc3QnKSIpOworICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4
KCd0ZXN0SW5kZXgnLCAneCcpIik7CisKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQo
e3g6IDF9LCAnbXlLZXkxJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6
IDJ9LCAnbXlLZXkyJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDN9
LCAnbXlLZXkzJykiKTsKKyAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6IDR9LCAn
bXlLZXk0JykiKTsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcigpCit7CisgICAgZGVidWcoIm9w
ZW5DdXJzb3IxIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbigndGVz
dCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAga2V5UmFuZ2UgPSB3
ZWJraXRJREJLZXlSYW5nZS5sb3dlckJvdW5kKDEpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2co
InRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Io
e3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CisgICAgcmVz
dWx0Lm9uc3VjY2VzcyA9IGN1cnNvclN1Y2Nlc3M7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjb3VudGVyID0gMTsKK30KKworZnVuY3Rpb24gY3Vy
c29yU3VjY2VzcygpCit7CisgICAgaWYgKGV2ZW50LnJlc3VsdCA9PSBudWxsKSB7CisgICAgICAg
IHNob3VsZEJlKCJjb3VudGVyIiwgIjUiKTsKKyAgICAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygi
dHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKS5pbmRleCgndGVzdEluZGV4Jykub3BlbkN1cnNvcih7
cmFuZ2U6IGtleVJhbmdlfSkiKTsKKyAgICAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CisgICAg
ICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjdXJzb3JFbXB0eTsKKyAgICAgICAgcmVzdWx0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB2YXIgZGVsZXRlUmVzdWx0ID0gZXZhbEFuZExvZygiZXZlbnQucmVzdWx0LmRlbGV0ZSgpIik7
CisgICAgZGVsZXRlUmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICBzaG91bGRCZSgiZXZlbnQucmVzdWx0LmtleSIsICJjb3VudGVyKysiKTsKKyAgICBldmFsQW5k
TG9nKCJldmVudC5yZXN1bHQuY29udGludWUoKSIpOworfQorCitmdW5jdGlvbiBjdXJzb3JFbXB0
eSgpCit7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICBzaG91bGRCZU51bGwo
ImV2ZW50LnJlc3VsdCIpOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7Cit9CisK
K2Z1bmN0aW9uIGFkZE9iamVjdCgpCit7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFu
c2FjdGlvbigndGVzdCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
b2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCd0ZXN0JykiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5hZGQoe3g6
IDF9LCAnbXlLZXkxJykiKTsKKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKKyAgICByZXN1bHQu
b25zdWNjZXNzID0gb3BlbkN1cnNvcjI7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlbkN1cnNvcjIoKQoreworICAgIGRlYnVn
KCJvcGVuQ3Vyc29yMiIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0gZXZlbnQuc291cmNlLmlu
ZGV4KCd0ZXN0SW5kZXgnKSIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coImluZGV4Lm9wZW5D
dXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Cisg
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGRlbGV0ZU9iamVjdDsKKyAgICByZXN1bHQub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBkZWxldGVPYmplY3QoKQor
eworICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CisgICAgc2hvdWxkQmVOb25OdWxsKGV2
ZW50LnJlc3VsdCk7CisgICAgZXZhbEFuZExvZygiZXZlbnQucmVzdWx0LmRlbGV0ZSgpIik7Cisg
ICAgcmVzdWx0ID0gZXZhbEFuZExvZygiaW5kZXguZ2V0KDEpIik7CisgICAgcmVzdWx0Lm9uc3Vj
Y2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgcmVzdWx0Lm9uZXJyb3IgPSB2
ZXJpZnlPYmplY3REZWxldGVkOworfQorCitmdW5jdGlvbiB2ZXJpZnlPYmplY3REZWxldGVkKCkK
K3sKKyAgICB2ZXJpZnlFcnJvckV2ZW50KGV2ZW50KTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmM5MzEyNy4uYWEyMjhmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0xMi0xNyAgQW5kcmVpIFBvcGVz
Y3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSURCQ3Vyc29yOjpkZWxldGUgaXMgbm90IGltcGxlbWVudGVkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTExMTAKKwor
ICAgICAgICBJbXBsZW1lbnQgSURCQ3Vyc29yOjpkZWxldGUuCisgICAgICAgIFNlZSBodHRwOi8v
ZHZjcy53My5vcmcvaGcvSW5kZXhlZERCL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI3dpZGwt
SURCQ3Vyc29yLWRlbGV0ZQorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItZGVsZXRlLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1p
bmRleC1kZWxldGUuaHRtbAorCisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3Rv
cmFnZS9JREJDdXJzb3IuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5pZGw6CisgICAg
ICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6SURCQ3Vyc29yQmFja2VuZEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpsb2FkQ3VycmVudFJvdyk6CisgICAgICAg
ICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yQmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJ
bnRlcm5hbCk6CisgICAgICAgICogc3RvcmFnZS9JREJLZXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5Ojpmcm9tUXVlcnkpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpkZWxldGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwpOgorCiAyMDEwLTEyLTE3ICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkg
U2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCmluZGV4IDFhYWZmOWQuLjQ0NGMxMDkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJDdXJzb3IuY3BwCkBAIC04NywxMCArODcsMTAgQEAgdm9pZCBJREJDdXJzb3I6OmNv
bnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkN1cnNvcjo6cmVtb3ZlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsK
LSAgICBtX2JhY2tlbmQtPnJlbW92ZShyZXF1ZXN0LCBlYyk7CisgICAgbV9iYWNrZW5kLT5kZWxl
dGVGdW5jdGlvbihyZXF1ZXN0LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKaW5kZXggNmYzYTk0
MC4uNTRiZjUxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxJREJBbnk+IHZhbHVlKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiB1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IHJlbW92ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVx
dWVzdCosIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdG9yYWdlL0lEQkN1cnNvci5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmlk
bAppbmRleCAyZDI1MGQ1Li4xMmQwYmFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmlkbApAQCAtNDIsOCAr
NDIsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIC8vICAgIHJhaXNlcyAoSURCRGF0YWJh
c2VFeGNlcHRpb24pOwogICAgICAgICBbSW1wbGVtZW50YXRpb25GdW5jdGlvbj1jb250aW51ZUZ1
bmN0aW9uXSB2b2lkIGNvbnRpbnVlKGluIFtPcHRpb25hbF0gSURCS2V5IGtleSkKICAgICAgICAg
ICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwotICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgotICAgICAgICAvL1tDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJS
ZXF1ZXN0IHJlbW92ZSgpCi0gICAgICAgIC8vICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50
YXRpb25GdW5jdGlvbj1kZWxldGVGdW5jdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoKQorICAgICAg
ICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4IDhkNWM4YTEuLjliNGU0ZjEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtNDUsMTMgKzQ1LDE0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1
cnNvckJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFz
c093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZh
bHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQor
SURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFi
YXNlKiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNv
cjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5
LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2Uq
IG9iamVjdFN0b3JlKQogICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKICAgICAsIG1fa2V5UmFu
Z2Uoa2V5UmFuZ2UpCiAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgLCBtX3F1ZXJ5
KHF1ZXJ5KQogICAgICwgbV9pc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvcihpc1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUN1cnNvcikKICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisg
ICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogewogICAgIGxvYWRDdXJyZW50Um93KCk7
CiB9CkBAIC0xNTgsNTAgKzE1OSwzNCBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250
aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogICAgIGNh
bGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvci5nZXQoKSk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OnJlbW92ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0
aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gdGhpczsK
LSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAg
aWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJD
dXJzb3JCYWNrZW5kSW1wbDo6cmVtb3ZlSW50ZXJuYWwsIGN1cnNvciwgY2FsbGJhY2tzKSkpCisg
ICAgaWYgKCFtX3F1ZXJ5IHx8IG1fY3VycmVudElkID09IEludmFsaWRJZCB8fCAhbV9pc1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUN1cnNvcikgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpOT1RfQUxMT1dFRF9FUlI7Ci19Ci0KLXZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnJl
bW92ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNv
ckJhY2tlbmRJbXBsPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIGRvZXNuJ3QgdXBkYXRlIGluZGV4ZXMuIEl0
J3MgZGFuZ2Vyb3VzIHRvIGNhbGwgaW4gaXRzIGN1cnJlbnQgc3RhdGUuCi0gICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VU5LTk9XTl9FUlIsICJOb3QgaW1wbGVtZW50ZWQuIikpOwotICAgIHJldHVybjsKLQotICAgIGlm
ICghY3Vyc29yLT5tX3F1ZXJ5IHx8IGN1cnNvci0+bV9jdXJyZW50SWQgPT0gSW52YWxpZElkKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgdGhlIHByb3BlciBlcnJvciBjb2RlIHdoZW4gaXQncyBz
cGVjY2VkLgotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIk9wZXJhdGlvbiBub3QgcG9z
c2libGUuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHNxbCA9ICJE
RUxFVEUgRlJPTSBPYmplY3RTdG9yZURhdGEgV0hFUkUgaWQgPSA/IjsKLSAgICBTUUxpdGVTdGF0
ZW1lbnQgZGVsZXRlUXVlcnkoY3Vyc29yLT5kYXRhYmFzZSgpLCBzcWwpOwotICAgIAotICAgIGJv
b2wgb2sgPSBkZWxldGVRdWVyeS5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7Ci0gICAgQVNTRVJU
X1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nLgotICAgIGRl
bGV0ZVF1ZXJ5LmJpbmRJbnQ2NCgxLCBjdXJzb3ItPm1fY3VycmVudElkKTsKLSAgICBvayA9IGRl
bGV0ZVF1ZXJ5LnN0ZXAoKSA9PSBTUUxSZXN1bHREb25lOwotICAgIEFTU0VSVF9VTlVTRUQob2ss
IG9rKTsgLy8gRklYTUU6IEJldHRlciBlcnJvciBoYW5kbGluZy4KLQotICAgIGN1cnNvci0+bV9j
dXJyZW50SWQgPSBJbnZhbGlkSWQ7Ci0gICAgY3Vyc29yLT5tX2N1cnJlbnRTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgPSAwOwotICAgIGN1cnNvci0+bV9jdXJyZW50SURCS2V5VmFsdWUgPSAwOwotICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKCk7CisgICAgLy8gRklYTUU6IENoZWNrIHRoYXQgdGhlIHRy
YW5zYWN0aW9uIGlzIFJFQURfV1JJVEUKKyAgICAvLyBpZiAobV90cmFuc2FjdGlvbi0+bW9kZSgp
ID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG11
c3QgcmV0dXJuIFJFQURfT05MWV9FUlIgaGVyZS4gRml4IHRoaXMgd2hlbiB3ZSB1cGRhdGUgSURC
RGF0YWJhc2VFeGNlcHRpb24gdG8gbWF0Y2ggdGhlIHNwZWMuCisgICAgICAgIC8vIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKKyAgICAgICAgLy8gcmV0dXJuOwor
ICAgIC8vIH0KKyAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBtX2N1cnJlbnRJREJLZXlWYWx1ZSA/
IG1fY3VycmVudElEQktleVZhbHVlIDogbV9jdXJyZW50S2V5OworICAgIG1fb2JqZWN0U3RvcmUt
PmRlbGV0ZUZ1bmN0aW9uKGtleS5yZWxlYXNlKCksIHBycENhbGxiYWNrcywgbV90cmFuc2FjdGlv
bi5nZXQoKSwgZWMpOwogfQogCisKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmxvYWRDdXJy
ZW50Um93KCkKIHsKLSAgICAvLyBUaGUgY29sdW1uIG51bWJlcnMgZGVwZW5kIG9uIHRoZSBxdWVy
eSBpbiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yLgorICAgIC8vIFRoZSBj
b2x1bW4gbnVtYmVycyBkZXBlbmQgb24gdGhlIHF1ZXJ5IGluIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCBvcgorICAgIC8vIElEQkluZGV4QmFja2VuZEltcGw6
Om9wZW5DdXJzb3JJbnRlcm5hbC4KICAgICBtX2N1cnJlbnRJZCA9IG1fcXVlcnktPmdldENvbHVt
bkludDY0KDApOwogICAgIG1fY3VycmVudEtleSA9IElEQktleTo6ZnJvbVF1ZXJ5KCptX3F1ZXJ5
LCAxKTsKICAgICBpZiAobV9pc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvcikKICAgICAgICAg
bV9jdXJyZW50U2VyaWFsaXplZFNjcmlwdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGVGcm9tV2lyZShtX3F1ZXJ5LT5nZXRDb2x1bW5UZXh0KDQpKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fY3VycmVudElEQktleVZhbHVlID0gSURCS2V5Ojpmcm9tUXVlcnkoKm1fcXVlcnksIDQp
OworCisgICAgbV9jdXJyZW50SURCS2V5VmFsdWUgPSBJREJLZXk6OmZyb21RdWVyeSgqbV9xdWVy
eSwgNSk7CiB9CiAKIFNRTGl0ZURhdGFiYXNlJiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGF0YWJh
c2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaAppbmRleCBiNjQ2
ZjFjLi5lM2E4OTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAt
NDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOwogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDsKIGNsYXNzIElEQktleVJhbmdlOwot
Y2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDsKK2NsYXNzIElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlNRTGl0ZURhdGFiYXNlOwogY2xhc3MgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgU1FMaXRlRGF0YWJhc2U7CkBAIC00OSw5ICs0
OSw5IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSURCQ3Vyc29yQmFj
a2VuZEltcGwgOiBwdWJsaWMgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShJREJTUUxp
dGVEYXRhYmFzZSogZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJ
REJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50
PiBxdWVyeSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW1wbD4gY3JlYXRlKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRp
cmVjdGlvbiwgUGFzc093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFs
aXplZFNjcmlwdFZhbHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UqIG9iamVjdFN0b3JlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1wbChk
YXRhYmFzZSwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnksIGlzU2VyaWFsaXplZFNjcmlwdFZh
bHVlQ3Vyc29yLCB0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
QkN1cnNvckJhY2tlbmRJbXBsKGRhdGFiYXNlLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBxdWVyeSwg
aXNTZXJpYWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZSkp
OwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJDdXJzb3JCYWNrZW5kSW1wbCgpOwogCkBAIC02MCwx
NyArNjAsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJBbnk+IHZhbHVl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNl
cHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSURCQ3Vyc29yQmFja2VuZEltcGwoSURCU1FM
aXRlRGF0YWJhc2UqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgSURCQ3Vyc29yOjpEaXJlY3Rp
b24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50PiBxdWVyeSwgYm9vbCBpc1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisgICAg
SURCQ3Vyc29yQmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50
PiBxdWVyeSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAK
ICAgICB2b2lkIGxvYWRDdXJyZW50Um93KCk7CiAgICAgU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNl
KCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICBz
dGF0aWMgdm9pZCBjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElt
cGw+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgc3RhdGljIGNvbnN0IGludDY0
X3QgSW52YWxpZElkID0gLTE7CiAKQEAgLTgzLDExICs4MiwxMyBAQCBwcml2YXRlOgogICAgIGlu
dDY0X3QgbV9jdXJyZW50SWQ7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5OwogCi0g
ICAgLy8gT25seSBvbmUgb2YgdGhlc2Ugd2lsbCBldmVyIGJlIHVzZWQgZm9yIGVhY2ggaW5zdGFu
Y2UuIFdoaWNoIGRlcGVuZHMgb24gbV9pc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvci4KKyAg
ICAvLyBtX2lzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yIHdpbGwgb25seSBiZSBhdmFpbGFi
bGUgZm9yIG9iamVjdCBjdXJzb3JzLgogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG1fY3VycmVudFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKyAgICAvLyBGSVhNRTogbWFrZSB0aGUg
cHJpbWFyeSBrZXkgYXZhaWxhYmxlIHZpYSBzY3JpcHQgZm9yIGFsbCB0eXBlcyBvZiBjdXJzb3Jz
LgogICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudElEQktleVZhbHVlOwogCiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBtX29iamVjdFN0b3JlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBiL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlLmgKaW5kZXggZTFhYzI3NC4uMGQxMzJjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9z
dG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2Uv
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmUoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggNTk3YThjMi4uZGY4OGZkYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtNzAsNyArNzAsNyBA
QCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cgogewogICAgIC8vIFNldmVyYWwgZmlsZXMgZGVwZW5k
IG9uIHRoaXMgb3JkZXIgb2Ygc2VsZWN0cy4KICAgICBTdHJpbmcgc3FsID0gU3RyaW5nKCJTRUxF
Q1QgSW5kZXhEYXRhLmlkLCBJbmRleERhdGEua2V5U3RyaW5nLCBJbmRleERhdGEua2V5RGF0ZSwg
SW5kZXhEYXRhLmtleU51bWJlciwgIikKLSAgICAgICAgICAgICAgICAgKyAob2JqZWN0Q3Vyc29y
ID8gIk9iamVjdFN0b3JlRGF0YS52YWx1ZSAiIDogIk9iamVjdFN0b3JlRGF0YS5rZXlTdHJpbmcs
IE9iamVjdFN0b3JlRGF0YS5rZXlEYXRlLCBPYmplY3RTdG9yZURhdGEua2V5TnVtYmVyICIpCisg
ICAgICAgICAgICAgICAgICsgKCJPYmplY3RTdG9yZURhdGEudmFsdWUsIE9iamVjdFN0b3JlRGF0
YS5rZXlTdHJpbmcsIE9iamVjdFN0b3JlRGF0YS5rZXlEYXRlLCBPYmplY3RTdG9yZURhdGEua2V5
TnVtYmVyICIpCiAgICAgICAgICAgICAgICAgICsgIkZST00gSW5kZXhEYXRhIElOTkVSIEpPSU4g
T2JqZWN0U3RvcmVEYXRhIE9OIEluZGV4RGF0YS5vYmplY3RTdG9yZURhdGFJZCA9IE9iamVjdFN0
b3JlRGF0YS5pZCBXSEVSRSAiOwogCiAgICAgYm9vbCBsb3dlckJvdW5kID0gcmFuZ2UgJiYgcmFu
Z2UtPmxvd2VyKCk7CkBAIC0xMDQsNyArMTA0LDExIEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1w
bDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gY3Vyc29yID0gSURCQ3Vyc29yQmFja2VuZEltcGw6OmNyZWF0ZShpbmRleC0+bV9k
YXRhYmFzZS5nZXQoKSwgcmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnkucmVsZWFzZSgpLCBvYmplY3RD
dXJzb3IsIHRyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IHRy
YW5zYWN0aW9uLT5vYmplY3RTdG9yZShpbmRleC0+bV9zdG9yZU5hbWUsIGVjKTsKKyAgICBBU1NF
UlQob2JqZWN0U3RvcmUgJiYgIWVjKTsKKworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlPiBjdXJzb3IgPSBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKGluZGV4LT5tX2Rh
dGFiYXNlLmdldCgpLCByYW5nZSwgZGlyZWN0aW9uLCBxdWVyeS5yZWxlYXNlKCksIG9iamVjdEN1
cnNvciwgdHJhbnNhY3Rpb24uZ2V0KCksIG9iamVjdFN0b3JlLmdldCgpKTsKICAgICBjYWxsYmFj
a3MtPm9uU3VjY2VzcyhjdXJzb3IucmVsZWFzZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdG9yYWdlL0lEQktleS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmNwcAppbmRleCBk
NDAwMzgyLi44MjZhNTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmNwcAor
KysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmNwcApAQCAtNTYsNiArNTYsOSBAQCBJREJLZXk6
On5JREJLZXkoKQogCiBQYXNzUmVmUHRyPElEQktleT4gSURCS2V5Ojpmcm9tUXVlcnkoU1FMaXRl
U3RhdGVtZW50JiBxdWVyeSwgaW50IGJhc2VDb2x1bW4pCiB7CisgICAgaWYgKHF1ZXJ5LmNvbHVt
bkNvdW50KCkgPD0gYmFzZUNvbHVtbikKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpZiAoIXF1
ZXJ5LmlzQ29sdW1uTnVsbChiYXNlQ29sdW1uKSkKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3Jl
YXRlKHF1ZXJ5LmdldENvbHVtblRleHQoYmFzZUNvbHVtbikpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggZmIwOGUzNy4uMjJkM2I4ZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CisrKyBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAt
Mjg2LDE2ICsyODYsMzUgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmUKIAogdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
IHsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkob2JqZWN0U3RvcmUtPnNxbGl0ZURhdGFiYXNl
KCksICJERUxFVEUgRlJPTSBPYmplY3RTdG9yZURhdGEgIiArIHdoZXJlQ2xhdXNlKGtleS5nZXQo
KSkpOwotICAgIGJvb2wgb2sgPSBxdWVyeS5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7CisgICAg
U1FMaXRlU3RhdGVtZW50IGlkUXVlcnkob2JqZWN0U3RvcmUtPnNxbGl0ZURhdGFiYXNlKCksICJT
RUxFQ1QgaWQgRlJPTSBPYmplY3RTdG9yZURhdGEgIiArIHdoZXJlQ2xhdXNlKGtleS5nZXQoKSkp
OworICAgIGJvb2wgb2sgPSBpZFF1ZXJ5LnByZXBhcmUoKSA9PSBTUUxSZXN1bHRPazsKICAgICBB
U1NFUlRfVU5VU0VEKG9rLCBvayk7IC8vIEZJWE1FOiBCZXR0ZXIgZXJyb3IgaGFuZGxpbmc/Ci0K
LSAgICBiaW5kV2hlcmVDbGF1c2UocXVlcnksIG9iamVjdFN0b3JlLT5pZCgpLCBrZXkuZ2V0KCkp
OwotICAgIGlmIChxdWVyeS5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkgeworICAgIGJpbmRXaGVy
ZUNsYXVzZShpZFF1ZXJ5LCBvYmplY3RTdG9yZS0+aWQoKSwga2V5LmdldCgpKTsKKyAgICBpZiAo
aWRRdWVyeS5zdGVwKCkgIT0gU1FMUmVzdWx0Um93KSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9G
T1VORF9FUlIsICJLZXkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpbnQ2NF90IGlkID0gaWRRdWVyeS5nZXRDb2x1
bW5JbnQ2NCgwKTsKKworICAgIFNRTGl0ZVN0YXRlbWVudCBvc1F1ZXJ5KG9iamVjdFN0b3JlLT5z
cWxpdGVEYXRhYmFzZSgpLCAiREVMRVRFIEZST00gT2JqZWN0U3RvcmVEYXRhIFdIRVJFIGlkID0g
PyIpOworICAgIG9rID0gb3NRdWVyeS5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7CisgICAgQVNT
RVJUX1VOVVNFRChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nPworCisg
ICAgb3NRdWVyeS5iaW5kSW50NjQoMSwgaWQpOworCisgICAgb2sgPSBvc1F1ZXJ5LnN0ZXAoKSA9
PSBTUUxSZXN1bHREb25lOworICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKKworICAgIFNRTGl0
ZVN0YXRlbWVudCBpbmRleFF1ZXJ5KG9iamVjdFN0b3JlLT5zcWxpdGVEYXRhYmFzZSgpLCAiREVM
RVRFIEZST00gSW5kZXhEYXRhIFdIRVJFIG9iamVjdFN0b3JlRGF0YUlkID0gPyIpOworICAgIG9r
ID0gaW5kZXhRdWVyeS5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2s7CisgICAgQVNTRVJUX1VOVVNF
RChvaywgb2spOyAvLyBGSVhNRTogQmV0dGVyIGVycm9yIGhhbmRsaW5nPworCisgICAgaW5kZXhR
dWVyeS5iaW5kSW50NjQoMSwgaWQpOworCisgICAgb2sgPSBpbmRleFF1ZXJ5LnN0ZXAoKSA9PSBT
UUxSZXN1bHREb25lOworICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKKwogICAgIGNhbGxiYWNr
cy0+b25TdWNjZXNzKCk7CiB9CiAKQEAgLTQzNiw3ICs0NTUsNyBAQCB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+IGN1cnNvciA9IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjcmVhdGUob2Jq
ZWN0U3RvcmUtPm1fZGF0YWJhc2UuZ2V0KCksIHJhbmdlLCBkaXJlY3Rpb24sIHF1ZXJ5LnJlbGVh
c2UoKSwgdHJ1ZSwgdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiBjdXJzb3IgPSBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKG9iamVj
dFN0b3JlLT5tX2RhdGFiYXNlLmdldCgpLCByYW5nZSwgZGlyZWN0aW9uLCBxdWVyeS5yZWxlYXNl
KCksIHRydWUsIHRyYW5zYWN0aW9uLmdldCgpLCBvYmplY3RTdG9yZS5nZXQoKSk7CiAgICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MoY3Vyc29yLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDUyMmFhZmYuLjEyZmFmMWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEy
LTE3ICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJREJDdXJzb3I6OmRlbGV0ZSBpcyBu
b3QgaW1wbGVtZW50ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MTExMAorCisgICAgICAgICogcHVibGljL1dlYklEQkN1cnNvci5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJDdXJzb3I6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpkZWxl
dGVGdW5jdGlvbik6CisgICAgICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oOgorICAg
ICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q3Vyc29ySW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJ
bXBsLmg6CisKIDIwMTAtMTItMTcgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQkN1cnNvci5oCmluZGV4IDg4YjhiMjIuLjk4YjJiOTcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJDdXJzb3IuaApAQCAtNTUsNyArNTUsOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdlYklE
QkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktl
eSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoV2ViSURCQ2FsbGJhY2tz
KiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgLy8gRklYTUU6IFJlbW92ZSBhZnRlciBXSyByb2xsLgorICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKSB7IGRl
bGV0ZUZ1bmN0aW9uKGNhbGxiYWNrcywgZWMpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1
bmN0aW9uKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykg
eyByZW1vdmUoY2FsbGJhY2tzLCBlYyk7IH0KIAogcHJvdGVjdGVkOgogICAgIFdlYklEQkN1cnNv
cigpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IDk0NDkxZjkuLmVjN2JmNjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1
cnNvckJhY2tlbmRQcm94eS5jcHAKQEAgLTg1LDkgKzg1LDkgQEAgdm9pZCBJREJDdXJzb3JCYWNr
ZW5kUHJveHk6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjwKICAgICBtX2lkYkN1cnNvci0+Y29udGludWVGdW5jdGlvbihrZXksIG5ldyBXZWJJREJD
YWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKIH0KIAotdm9pZCBJREJDdXJzb3JCYWNrZW5k
UHJveHk6OnJlbW92ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5OjpkZWxldGVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBtX2lkYkN1cnNvci0+cmVtb3ZlKG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNr
cyksIGVjKTsKKyAgICBtX2lkYkN1cnNvci0+ZGVsZXRlRnVuY3Rpb24obmV3IFdlYklEQkNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAppbmRleCAwYTdhMjg4
Li42NTBkZGVkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tl
bmRQcm94eS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJB
bnk+IHZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yQmFja2VuZFBy
b3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJDdXJzb3I+KTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkN1cnNvckltcGwuY3BwCmluZGV4IGVjYTVkNDIuLjUxNjU1NzQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcApAQCAtODAsOSArODAsOSBAQCB2b2lkIFdl
YklEQkN1cnNvckltcGw6OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiBrZXksIFdl
YklEQkNhbGxiYWNrcyogYwogICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+Y29udGludWVGdW5jdGlv
bihrZXksIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgZWMpOwogfQogCi12
b2lkIFdlYklEQkN1cnNvckltcGw6OnJlbW92ZShXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
V2ViRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYklEQkN1cnNvckltcGw6OmRlbGV0ZUZ1bmN0
aW9uKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBtX2lkYkN1cnNvckJhY2tlbmQtPnJlbW92ZShJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGNhbGxiYWNrcyksIGVjKTsKKyAgICBtX2lkYkN1cnNvckJhY2tlbmQtPmRlbGV0ZUZ1bmN0aW9u
KElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgZWMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1
cnNvckltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCmluZGV4
IDM5ZmE0NGIuLjdmOGViZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q3Vyc29ySW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmFsdWUoV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlJiwgV2ViSURCS2V5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXZWJJREJDYWxsYmFja3Mq
LCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24o
Y29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqLCBX
ZWJFeGNlcHRpb25Db2RlJik7CiAKICBwcml2YXRlOgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6
OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1faWRiQ3Vyc29yQmFja2VuZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>